Javascript 在添加行项目(NetSuite)之前验证脚本中的状态

Javascript 在添加行项目(NetSuite)之前验证脚本中的状态,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,我试图在添加特定项目时向销售订单添加一行,但在添加之前,我需要先验证状态 这就是我奋斗的方向。我有代码来添加正确工作的项目,但我的状态检查错误 函数validateField(类型、名称、行号){ var shipstate=nlapiGetFieldText() 如果(shipstate='PA'){ 功能recalc(类型){ 如果(类型=='item'){ var itemId=nlapiGetCurrentLineItemValue('item','item'); 如果(itemId=

我试图在添加特定项目时向销售订单添加一行,但在添加之前,我需要先验证状态

这就是我奋斗的方向。我有代码来添加正确工作的项目,但我的状态检查错误

函数validateField(类型、名称、行号){
var shipstate=nlapiGetFieldText()
如果(shipstate='PA'){
功能recalc(类型){
如果(类型=='item'){
var itemId=nlapiGetCurrentLineItemValue('item','item');
如果(itemId==1658){
//插入项目
nlapiSelectNewLineItem(“项目”);
nlapiSetCurrentLineItemValue('item','item',1516);
nlapiSetCurrentLineItemValue('item','quantity',1);
nlapiSetCurrentLineItemValue('item','amount','0.24');
nlapiCommitLineItem(“项目”);
}
}
返回true;
}
}
返回true;

}
我建议您使用
recalc
函数而不是
validateField
函数添加行。这是因为如果您在编辑现有行的同时尝试添加新行,它将取消当前行。使用
recalc
功能,在检查状态并添加新行之前,它将等待您点击现有行上的“添加”按钮

您的状态验证工作进展顺利,您需要的函数是
nlapiGetFieldValue('shipstate')。我相信下面的代码应该可以解决您的问题

function recalc(type) {
    var shipstate = nlapiGetFieldValue('shipstate');
    if (shipstate === 'PA') {
        addNewLine(type);
    }
    return true;
}

function addNewLine(type) {
    if (type === 'item') {
        var itemId = nlapiGetCurrentLineItemValue('item', 'item');
        if (itemId === '1658') {
            //Insert item
            nlapiSelectNewLineItem('item');
            nlapiSetCurrentLineItemValue('item', 'item', '1516');
            nlapiSetCurrentLineItemValue('item', 'quantity', '1');
            nlapiSetCurrentLineItemValue('item', 'amount', '0.24');
            nlapiCommitLineItem('item');
        }
    }
    return true;
}

乔恩,非常感谢你的帮助。我复制了你的代码,没有错误!(比我得到的更多)但当我在OH中为客户加载销售订单时,它仍然会添加额外的行项目。它似乎没有存储用于验证检查的状态。你认为这与地址在子列表中有关吗?我验证了我可以调用正确的字段名{shipstate}。想法?很有趣。您是否介意在加载销售订单时记录“shipstate”的值,并告诉我您看到了什么?因此在
var shipstate=nlapiGetFieldValue('shipstate')之后的脚本开头行添加一个新行,如下所示
console.log('Ship State',shipstate)。然后打开浏览器控制台,看看输出。乔恩,我甚至没想到。日志显示“船的状态哦”。因此,它正在验证状态。现在我只是猜测,它必须是“真”语句的一部分,它不能正常工作。Jon,所以做更多的测试。实际上,我在PA中选择了一个客户,脚本实际上删除了1658项,并用1516项替换它,而不是添加一行。如果我选择了PA之外的客户,当我添加1658项时,它也会添加1516项。首选结果。奇怪。嗯,你能检查一下销售订单上没有其他脚本可能会影响这一点吗?转到自定义>脚本>脚本记录,编辑销售订单,取消选中所有脚本上的“部署”复选框,但“客户端”选项卡上的此脚本除外,然后保存。另外,验证脚本记录的“validateLine”字段中是否有
validateLine
,其他字段中是否没有。我在我的帐户中进行了测试,它似乎可以按照您的要求工作,所以我觉得这是一种设置。