通过 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。
我正在创建一个模块来处理多 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。