我正在尝试创建一个脚本,以便它可以使用“仓库”位置(我们有多个位置)的数量更新自定义字段。首先,我试图在自定义字段中设置值,但它不起作用。 代码:
{
var stdField = 'custitem_annaslinenssku'; // Custom field for quantity
var qtyAvail = 0;
qtyAvail = rec.getValue('locationquantityavailable');
}
function Qtyupdate()
{
if(location == 1)
nlapiSetFieldValue(stdField,qtyAvail);
return true;
}
然后我想添加一个逻辑,如果“如果数量小于12,那么脚本应该使这些项目数量为0.。
我还想为套装/包裹项目添加数量,但完全不知道。
答案 0 :(得分:2)
您可能还想分享您使用这些信息的方式。看起来您可能正在尝试设置库存储备。您可能最好创建一个保留位置并在那里转移库存。然后,您可以将您的12个项目放入保留位置,并使其不适用于网站。
如果这不是您要完成的目标,您可能需要查看Netsuite的库存管理字段。
但是,要回答您的问题,您通常无法从项目记录中获取库存位置字段,因此在计划脚本中您将执行以下操作。如果从用户脚本运行此操作,请注意治理问题:
var items = nlapiSearchRecord('inventoryitem', null,
[
new nlobjSearchFilter('inventorylocation', null, 'is', 1), // your target inventory location internal id.
new nlobjSearchFilter('isinactive', null, 'is', 'F'),
new nlobjSearchFilter('locationavailable', null, 'lessthan', 13),
new nlobjSearchFilter('custitem_my_custom_field', null, 'greaterthan', 0)
],[
new nlobjSearchColumn('locationavailable'),
new nlobjSearchColumn('custitem_my_custom_field')
]);
if(!items) return;
items.forEach(function(it){
var customLevel = parseInt(it.getValue('locationavailable'), 10)||0;
customLevel = Math.min(customLevel - 12, 0);
if(customLevel == parseInt(it.getValue('custitem_my_custom_field'), 10)) return;
nlapiSubmitField(it.getRecordType(), it.getId(), 'custitem_my_custom_field', customLevel);
});