禁止在销售订单上添加/删除项目

Disable adding/deleting items on Sales Order

本文关键字:添加 删除项目 禁止      更新时间:2023-09-26

我浏览了很多Netsuite的文档,并在stackoverflow上进行了搜索,但目前没有找到答案。

我基本上想锁定(禁止最终用户更改)销售订单上的某些字段,这些字段在满足某些条件后会影响利润。我已经能够在项目级别锁定我想要的字段,但我意识到他们仍然可以添加/复制/删除项目,这也会影响边距。

我不想锁定整个项目子列表-我们希望他们能够编辑次要内容,但实际项目无法添加/复制/删除。

你知道我该怎么做吗?基本上以某种方式删除添加/复制/删除按钮?

编辑:由于删除了我的Javascript标记,我将解释它的用途。这个删除,因为在行级别,我知道需要使用NetSuite的API在SuiteScript-Javascript中完成。值得注意的是,这是我试图使用的语言。

代码:为了解释我到目前为止所做的工作,下面是一些伪代码:

function pageInit(){
if(currDate >= dLockDate && type == 'edit'){        
    //lock SO Date (header level)
    nlapiDisableField('trandate', true);                        
}
}

在线路I中nit://locks在行项目级的一些字段

function lineInit(){
if(type == 'item'){
//list of items to disable
    var a_itemDisFields = ['rate', 'quantity','porate','amount', 'item'];
    for(var i = 0; i < a_itemDisFields.length; i++){
        nlapiDisableLineItemField('item',a_itemDisFields[i] , true);
    }
}

}

类似于上面两个函数,在我禁用字段的地方,我想禁用添加行项目的功能。我不想锁定整个记录(我知道我可以从工作流中锁定),但我想阻止用户添加/复制/删除项目子列表中的项目。

您可以在客户端脚本中使用validateLine事件来防止用户在满足某些条件时添加行。您使用的函数只需要返回一个布尔值:如果行添加可以继续,则返回true;如果不应该继续,则需要返回false

类似地,当满足某些条件时,可以使用validateDelete事件来防止删除线路。

最后,也遵循类似的模式,当满足某些条件时,可以使用validateField事件来防止用户修改字段值。这并不是完全禁用字段,但会阻止他们更改值。

将这些事件处理程序函数添加到客户端脚本中应该可以防止所需的更改,尽管它实际上并没有禁用任何字段。

您可以使用jQuery禁用添加/复制/删除按钮和某些字段,但我怀疑NetSuite是否会认为这是一种"受支持"的方法。