通过 SuiteScript 从 PO 创建项目收据

Creating Item Receipts from POs via SuiteScript

我正在创建一个模块来处理多 PO 合并装运(外汇进口)并编写一个脚本来接收多个 PO,每行都有到岸成本。

我正在使用 SuiteScript API 1.0

但是,当我创建项目收据记录(并在 createdfrom 字段中包含 PO# 以创建从 IR 到 PO 的 link 时,在将采购订单行复制到红外线,我不断收到 SSS_INVALID_SUBLIST_OPERATION 错误。

有问题的代码如下:

            // ** set body fields
        receiptRec.setFieldValue('location',purchRec.getFieldValue('location'));
        receiptRec.setFieldValue('entity',purchRec.getFieldValue('entity'));
        receiptRec.setFieldValue('createdfrom',purchRec.getFieldValue('internalid'));
        receiptRec.setFieldValue('currency',purchRec.getFieldValue('currency'));
        receiptRec.setFieldValue('exchangerate',purchRec.getFieldValue('exchangerate'));
        receiptRec.setFieldValue('isbasecurrency',purchRec.getFieldValue('isbasecurrency'));
        receiptRec.setFieldValue('exchangerate',purchRec.getFieldValue('exchangerate'));
        receiptRec.setFieldValue('landedcostperline','T');

        log ('Receipt Record:'); log( receiptRec );
        // ** copy item lines
        var POlines = purchRec.getLineItemCount('item');
        for ( line=1 ; line<=POlines; line++) {
            var fulfill = purchRec.getLineItemValue('item','fulfillable',line); log('Fulfill?? '+fulfill)
            if (fulfill == 'T') {
                log('Fill From PO Line #'+line);
                receiptRec.selectNewLineItem('item');                                                                       log('Debug 1');
                receiptRec.setCurrentLineItemValue('item','item',purchRec.getLineItemValue('item','item',line));            log('Debug 2');
                receiptRec.setCurrentLineItemValue('item','itemreceive','T',line);                                          log('Debug 3');
                receiptRec.setCurrentLineItemValue('item','quantity',purchRec.getLineItemValue('item','quantity',line));    log('Debug 4');
                receiptRec.setCurrentLineItemValue('item','rate',purchRec.getLineItemValue('item','rate',line));            log('Debug 5');
                receiptRec.setCurrentLineItemValue('item','taxcode',purchRec.getLineItemValue('item','taxcode',line));      log('Debug 6');
                receiptRec.setCurrentLineItemValue('item','units',purchRec.getLineItemValue('item','units',line));          log('Debug 7');
                receiptRec.commitLineItem('item');                                                                          log('Debug 8');
            }
        }

错误在 selectNewLineItem('item') 点触发。

receiptRec 是新创建的 itemreceipt 记录。 purchRec为已有采购订单记录。

我在这里错过了什么?

您不能在 Netsuite 中 "create" 新的项目收据记录。您需要使用 nlapiTransformRecord('purchaseorder', purchaseorderid, 'itemreceipt') 将采购订单 "transform" 转换为物料收据。这将自动复制所有行项目,然后您可以遍历它们以更改数量或完全删除行,但是您不能添加新行。

有关详细信息,请参阅文档中的 this link