Netsuite - 转移库存错误
Netsuite - Transfer Inventory error
我使用 NetSuite 的时间很短,已经很讨厌它了。如果这是一个愚蠢的问题,我很抱歉,但到目前为止我还没有在 Netsuite 文档、Whosebug 或其他网站上找到答案。其实我找的答案都出错了
我的公司需要一个脚本来根据 EDI 输入文件传输库存。读取文件没有问题,甚至可以解析它。但是,实际插入数据证明是有问题的。
我已经能够插入正常记录,但库存转移记录给我带来了问题。
我从 Stack Overflow 中找到了一些代码并将其改编为以下内容:
var xfer = nlapiCreateRecord("inventorytransfer");
xfer.setFieldValue("trandate", FormatDate("20160101"));
xfer.setFieldValue("location", 9);
xfer.setFieldValue("transferlocation", 9);
nlapiSelectNewLineItem('invt');
nlapiSetLineItemValue("invt","invtid",1, 189);
nlapiSetLineItemValue("invt","adjustqtyby", 1, "5");
nlapiCommitLineItem('invt');
var id = nlapiSubmitRecord(xfer);
FormatDate 函数只是将文本文件中的日期转换为 NetSuite 可以理解的系统日期。
但是,当我 运行 这段代码时,出现以下错误:
USER_ERROR: You must enter at least one line item for this transaction.
我认为插入订单项是使用 nlapiSelectNewLineItem 的原因,但我想不是。 nlapiCreateNewLineItem 似乎也不存在。
我插入的值都只是测试数据,因为我正在调试器中对此进行测试。位置 9 存在,项目 189 也存在。
我的完整脚本根据文本文件中的字符串值查找这些 ID。但由于这是不起作用的部分,我将其分开进行测试。
有人可以帮忙吗?
您没有指定您正在使用的脚本类型,但是,看起来您不是在记录对象上设置字段,而是在当前记录上设置值。下面是建议的代码。
另外,没有名为invt
的子列表,应该是inventory
。另外,没有这样的字段 invtid
,我想你很可能想设置项目,字段 ID 应该是 item
。您可能还想参考 SuiteScript Record Browser 以获取有关正确 ID
的帮助
var xfer = nlapiCreateRecord("inventorytransfer");
xfer.setFieldValue("trandate", FormatDate("20160101"));
xfer.setFieldValue("location", 9);
xfer.setFieldValue("transferlocation", 9);
xfer.selectNewLineItem('inventory');
xfer.setCurrentLineItemValue("inventory", "item", 189);
xfer.setCurrentLineItemValue("inventory","adjustqtyby", "5");
xfer.commitLineItem('inventory');
var id = nlapiSubmitRecord(xfer);
如果您正在使用 Bin/Lot 编号项目,请参阅帮助主题 "Sample Scripts for Advanced Bin / Numbered Inventory Management"
我使用 NetSuite 的时间很短,已经很讨厌它了。如果这是一个愚蠢的问题,我很抱歉,但到目前为止我还没有在 Netsuite 文档、Whosebug 或其他网站上找到答案。其实我找的答案都出错了
我的公司需要一个脚本来根据 EDI 输入文件传输库存。读取文件没有问题,甚至可以解析它。但是,实际插入数据证明是有问题的。 我已经能够插入正常记录,但库存转移记录给我带来了问题。
我从 Stack Overflow 中找到了一些代码并将其改编为以下内容:
var xfer = nlapiCreateRecord("inventorytransfer");
xfer.setFieldValue("trandate", FormatDate("20160101"));
xfer.setFieldValue("location", 9);
xfer.setFieldValue("transferlocation", 9);
nlapiSelectNewLineItem('invt');
nlapiSetLineItemValue("invt","invtid",1, 189);
nlapiSetLineItemValue("invt","adjustqtyby", 1, "5");
nlapiCommitLineItem('invt');
var id = nlapiSubmitRecord(xfer);
FormatDate 函数只是将文本文件中的日期转换为 NetSuite 可以理解的系统日期。
但是,当我 运行 这段代码时,出现以下错误:
USER_ERROR: You must enter at least one line item for this transaction.
我认为插入订单项是使用 nlapiSelectNewLineItem 的原因,但我想不是。 nlapiCreateNewLineItem 似乎也不存在。
我插入的值都只是测试数据,因为我正在调试器中对此进行测试。位置 9 存在,项目 189 也存在。 我的完整脚本根据文本文件中的字符串值查找这些 ID。但由于这是不起作用的部分,我将其分开进行测试。
有人可以帮忙吗?
您没有指定您正在使用的脚本类型,但是,看起来您不是在记录对象上设置字段,而是在当前记录上设置值。下面是建议的代码。
另外,没有名为invt
的子列表,应该是inventory
。另外,没有这样的字段 invtid
,我想你很可能想设置项目,字段 ID 应该是 item
。您可能还想参考 SuiteScript Record Browser 以获取有关正确 ID
var xfer = nlapiCreateRecord("inventorytransfer");
xfer.setFieldValue("trandate", FormatDate("20160101"));
xfer.setFieldValue("location", 9);
xfer.setFieldValue("transferlocation", 9);
xfer.selectNewLineItem('inventory');
xfer.setCurrentLineItemValue("inventory", "item", 189);
xfer.setCurrentLineItemValue("inventory","adjustqtyby", "5");
xfer.commitLineItem('inventory');
var id = nlapiSubmitRecord(xfer);
如果您正在使用 Bin/Lot 编号项目,请参阅帮助主题 "Sample Scripts for Advanced Bin / Numbered Inventory Management"