我试图找出查看包含名为“修复”的项目的新销售订单背后的代码,并在用户提交之前添加第二个名为“修复成本”的项目。我有点迷茫,我欢迎任何可以提供的帮助。我希望这个脚本在 Javascript 中,我会将它附加到 Netsuite 中的销售订单表单中以运行。
问问题
10687 次
2 回答
3
这是一个示例解决方案:
我们仍然假设项目内部 id 是 Repair = 100 和 Repair Cost = 200
function recalc(type)
{
if(type == 'item')
{
var itemId = nlapiGetCurrentLineItemValue('item', 'item'); //Get the Item ID
if(itemId == 100) //Repair Cost
{
//Insert item
nlapiSelectNewLineItem('item');
nlapiSetCurrentLineItemValue('item', 'item', 200); //Repair Cost
nlapiSetCurrentLineItemValue('item', 'quantity', 1);
nlapiSetCurrentLineItemValue('item', 'amount', '0.00');
nlapiCommitLineItem('item');
}
}
return true;
}
将其部署为客户端代码并确保该函数是 Recalc。
要了解有关客户端脚本的更多信息:https ://system.na1.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteFlex/SuiteScript/SSScriptTypes_ClientScripts.html#1016773
于 2013-03-12T19:01:06.420 回答
1
您需要做的第一件事是获取项目“修复”和“修复成本”的内部 id。
在此示例中,假设 Repair 的内部 id = 100 和 Repair Cost = 200
这是代码:
function afterSubmit(type)
{
if(type == 'create' || type == 'edit')
{
var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId()); //Load the record
//Loop to all sublist item
var count = record.getLineItemCount('item');
for(var i = 1; i <= count; i++)
{
var item = record.getLineItemValue('item', 'item', i); //This will return the internal id of the item
if(item == 100) //Item is equal to 100; insert one item
{
record.insertLineItem('item', i);
record.setLineItemValue('item', 'item', i, 200); //Repair Cost internal id
record.setLineItemValue('item', 'quantity', i, 1); //You should put some quantity; depending on your account setup all required fields should be set here.
}
}
//Submit the changes
nlapiSubmitRecord(record, true);
}
}
要了解套件脚本 API 和暴露给销售订单的字段,请查看此 Netsuite 帮助指南:
https://system.netsuite.com/help/helpcenter/en_US/RecordsBrowser/2012_2/Records/salesorder.html
于 2013-03-11T21:33:04.220 回答