我正在尝试编写Netsuite中的工作单完成脚本,但它正在返回
“SSS_INVALID_SUBLIST_OPERATION - 您尝试了无效的子列表或订单项操作。您要么尝试访问不存在的行上的字段,要么尝试在静态子列表中添加或删除行。”
这是我的代码。
function preRequest(datain){
//var id = 514752;
//var sn = KQ0006608;
var record = nlapiTransformRecord('workorder', datain.id, 'workordercompletion');
record.setFieldValue('quantity', 1);
var subrecord2=record.createSubrecord( 'inventorydetail');
subrecord2.selectNewLineItem( 'inventoryassignment' );
//subrecord2.selectLineItem('inventoryassignment', 1);
subrecord2.setCurrentLineItemValue('inventoryassignment', 'receiptinventorynumber', datain.sn);
subrecord2.setCurrentLineItemValue('inventoryassignment', 'binnumber', 25);
subrecord2.setCurrentLineItemValue('inventoryassignment', 'quantity', 1);
subrecord2.commitLineItem('inventoryassignment');
subrecord2.commit();
record.commitLineItem('inventorydetail');
nlapiSubmitRecord(record);
}
我真诚地通过了他们的文档并知道错误是什么以及可能导致它的原因但我不知道如何修复代码以便提交记录。任何帮助都会很棒!
编辑:另一个线索是Netsuite正在将Quantity to Build字段(我的代码中的'quantity')视为子列表。这是错误的根本原因。修复此问题将修复我的代码。只是不确定如何。
编辑:请参阅工作订单完成用户界面页面以供参考。Work Order Completion UI Page
答案 0 :(得分:0)
如果我没记错,工单有两个地方可以指定库存明细记录。一个位于标题处,用于构建正在构建的装配项目,另一个位于装配项目的组件的行项目级别。
我相信'库存分配'字段用于标题字段,这就是您收到错误的原因。尝试使用' componentinventorydetail'代替。
答案 1 :(得分:0)
首先我收到的跟踪错误是“validatePredecessorCompletedQuantity”,它告诉我一开始我不理解的东西,但是因为用户prasun能够让我的代码在他的Netsuite测试环境中工作,这导致了我相信它不是代码问题而是Netsuite设置。那么哪一个?
我在Netsuite文档中查找了工单完成验证,并找到了用于验证工单完成的幻灯片。我在“会计优先顺序 - 订单管理 - 工作订单”下将设置更改为“无验证”,而“保存前需要确认”这是为什么由于某种原因它不允许我继续操作。它需要我的代码没有提供的确认。
TL;博士
转到设置 - >设置管理器 - >会计 - >会计首选项 - >订单管理 - >在“工作订单”标题下更改检查在操作完成期间的先前操作中完成为“无验证”
最后问题:
有没有办法调整我的代码以允许验证(这很有用!)而不必更改该设置?
答案 2 :(得分:0)
当我遇到此错误时,是因为在记录类型(customerpayment)中,我尝试创建子列表项而不是从现有记录(发票)转换并编辑其自动填充的“应用”子列表项。< / p>