📜  NetSuite 在 afterSubmit 中将行项目添加到销售订单 - Javascript (1)

📅  最后修改于: 2023-12-03 15:33:06.165000             🧑  作者: Mango

NetSuite 在 afterSubmit 中将行项目添加到销售订单 - Javascript

在NetSuite中,我们可以通过编写Javascript脚本,来自定义我们的业务逻辑。在处理Sales Order订单时,我们可能需要在提交订单后添加一些行项目数据。这时候,我们可以使用afterSubmit事件,来自动触发数据添加。

代码实现

以下是一个实现将行项目添加到销售订单的Javascript代码片段:

/**
 *@NApiVersion 2.0
 *@NScriptType UserEventScript
 *@CreatedBy Duy Ly
 */

 define(['N/record', 'N/log'], function(record, log) {

    function afterSubmit(context) {
        try {
            if (context.type === context.UserEventType.CREATE) {
                var newRecord = context.newRecord;
                var recordId = newRecord.id;
                var lineCount = newRecord.getLineCount({
                    sublistId: 'item'
                });

                //在销售订单中添加行项目
                var order = record.load({
                    type: record.Type.SALES_ORDER,
                    id: recordId,
                    isDynamic: true
                });

                var item = {
                    item: 123, //替换为您要添加的商品ID
                    quantity: 10 //替换为您需要添加的数量
                };
                
                var line = order.selectNewLine({
                    sublistId: 'item'
                });
                
                order.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'item',
                    value: item.item
                });
                
                order.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                    value: item.quantity
                });

                order.commitLine({
                    sublistId: 'item'
                });

                order.save({
                    enableSourcing: false,
                    ignoreMandatoryFields: true
                });
                
                log.debug('Sales Order', 'New line item created.');
            }
        } catch (e) {
            log.debug('Error', e.message);
        }
     }

     return {
         afterSubmit: afterSubmit
     };
 });

在上面的代码片段中,我们这样实现:

  • 在afterSubmit方法中,我们检查该订单是否正在创建(context.type === context.UserEventType.CREATE),如果是的话,我们获取新创建订单的记录和行项目总数。
  • 然后,我们通过实例化一个动态的‘record.load’对象,来获取到该订单的所有信息.
  • 接着,我们创建一个包含行项目信息的对象,可以通过查询进行创建。
  • 我们调用“selectNewLine”方法,在销售订单的子列表中选择空白的一行,并将之前创建的行项目信息添加到该行.
  • 我们调用“commitLine”方法,以保存新行.
  • 最后,我们保存订单.
总结

在NetSuite中,使用Javascript编写自定义脚本可以帮助我们加强业务逻辑的处理能力。本文提供了一个添加行项目到销售订单的Javascript代码片段,在afterSubmit事件中处理订单后,自动添加行项目数据。希望对你能有所启发。