fulfillment_record.setCurrentLineItemValue('item', 'itemreceive', 'F');
subrecord.setCurrentLineItemValue('inventoryassignment', 'itemreceive ', 'F');
Не нужно отмечать itemreceive explicity false, если вы собираетесь его выполнить.
subrecord.commitLineItem('inventorydetail');
Вы можете фиксировать только строки подсписка, поскольку inventorydetail не является подсписком, он не требуется.
subrecord.commit();
Вам не нужно явно фиксировать подзапись, поскольку под-записи автоматически сохраняются NetSuite при сохранении родительской записи.
subrecord.setCurrentLineItemValue('inventoryassignment', 'quantity', 2);
Здесь вы пытались зафиксировать инвентарь детализации количество больше, чем определено в строке выполнения.
Пример приведенного выше кода в SuiteScript2 .
Примечание: Я обнаружил несколько ограничений NetSuite, когда он не позволяет настраивать данные инвентаризации в динамическом режиме, поэтому я использую нединамический режим
var poid = 15513;
var sublistcount = 2;
var fromrecord;
var fromid;
var torecord;
var trecord;
var qty;
fromrecord = 'purchaseorder';
fromid = poid;
torecord = 'itemreceipt';
fulfillment_record = record.transform({
fromType: fromrecord,
fromId: fromid,
toType: torecord,
isDynamic: false
});
var sublistCount = fulfillment_record.getLineCount({ sublistId: 'item' });
for (var i = 0; i < sublistcount; i++) {
var warehousequantity = 2;
fulfillment_record.setSublistValue({ sublistId: 'item', fieldId: 'quantity', value: warehousequantity, line: i });
var subrecord = fulfillment_record.getSublistSubrecord({ sublistId: 'item', fieldId: 'inventorydetail', line: i });
if (subrecord) {
// first insert a new line
for (var j = 0; j < warehousequantity; j++) {
subrecord.insertLine({ sublistId: 'inventoryassignment', line: j });
// set inventory quantity
subrecord.setSublistValue({ sublistId: 'inventoryassignment', fieldId: 'quantity', value: 1, line: j });
// set serialnumber
subrecord.setSublistValue({ sublistId: 'inventoryassignment',fieldId: 'serialnumbers', value: 'XZY' + i + j , line: j });
}
// don't commit/submit/save subrecord explicitly
// since NetSuite saves the sub-record when you save parent record
}
// since the record in non-dynamic mode
// we don't need to commit line
}
var id = fulfillment_record.save();