我浏览了很多 Netsuite 的文档并在 stackoverflow 上进行了搜索,但目前没有看到这个问题的答案。
我基本上想锁定(禁止最终用户更改)销售订单上在满足某些条件后影响利润的某些字段。我已经能够在项目级别锁定我想要的字段,但我意识到他们仍然可以添加/复制/删除项目,这也会影响利润。
我确实不想想要锁定整个项目子列表 - 我们希望他们能够编辑小事情,但实际项目无法添加/复制/删除。
我有什么想法可以做到这一点吗?基本上以某种方式删除添加/复制/删除按钮?
编辑: 由于删除了我的 Javascript 标签,我将解释它的用途。此删除是因为在行级别,我知道需要使用 NetSuite 的 API 在 SuiteScript-Javascript 中完成。值得注意的是,这是我试图使用的语言。
代码:为了解释我到目前为止所做的事情,下面是一些伪代码:
function pageInit(){
if(currDate >= dLockDate && type == 'edit'){
//lock SO Date (header level)
nlapiDisableField('trandate', true);
}
}
在 lineInit://中锁定订单项级别的某些字段
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
事件来防止用户在满足某些条件时添加行。您使用的函数只需要返回一个 bool 值:如果行添加可以继续,则为 true
;如果不可以,则返回 false
。
同样,您可以使用 validateDelete
事件来防止在满足某些条件时删除行。
最后,也遵循类似的模式,您可以使用 validateField
事件来防止用户在满足某些条件时修改字段值。它并没有完全禁用该字段,但会阻止他们更改值。
将这些事件处理函数添加到客户端脚本中应该可以让您阻止所需的更改,尽管它实际上不会禁用任何字段。
您可以使用 jQuery 禁用“添加/复制/删除”按钮和某些字段,但我怀疑 NetSuite 会认为这是一种“受支持”的方法。
关于javascript - 禁用在销售订单上添加/删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23247314/