Netsuite:根据选择的交易(采购订单)填充包含项目的字段

时间:2017-03-01 22:39:39

标签: netsuite

是否有办法过滤所选采购订单(交易)在字段中列出的项目,即用户选择采购订单,然后使用该采购订单上的项目列表填充项目字段? / p>

很抱歉,如果这是一个非常简单的问题,但我已经搜遍了所有地方,而且我无法找到这种情况。也无法在文档中找到它。我会继续尝试,但如果有人知道副手,那将非常感激!

3 个答案:

答案 0 :(得分:1)

可以使用Suitescript。

您需要使用用户事件脚本动态地在beforeLoad上的表单中插入自定义选择字段,然后将其称为custpage_mycustomfield

然后,您需要一个填充custpage_mycustomfield项目列表的客户脚本,这需要在PO字段更改后发生。您可以运行搜索或加载记录以获取订单项。

您在custpage_mycustomfield中输入的数据将不会保存,因此如果您想保留它,则需要执行以下操作:

  1. 使用类型为List / Record>的UI创建自定义字段 项目,我们称之为custbody_mypermanentfield

  2. 将customercript函数设置为在saveRecord上运行,该函数将复制 从custpage_mycustomfieldcustbody_mypermanentfield选择的值。

答案 1 :(得分:1)

所有这些操作都可以在PO字段的fieldChanged事件中通过clientscript完成。首先,对PO应用搜索并获得所有子列表项列表,然后删除项目字段的所有选择选项,然后在此字段上添加PO的子列表项列表。

function fieldChanged(context){
var currRec = context.currentRecord;

// search on PO to get sublist items
var itemSearch = search.create({
    type: 'purchaseorder',
    filter: ['internalid', 'is', '<your PO id>'],
    columns: ['item']
}).run().getRange(0,100);

var poItemList = [];
itemSearch.forEach(function(result){
    if (result.getValue({name: 'item'})) {
        poItemList.push = { value: result.getValue({name: 'item'}), text: result.getText({name: 'item'})};
}
})

//remove all options of item field
var itemField = currRec.getField({fieldId: '<your custom field>'});
itemField.removeSelectOption({value: null}) //this removes all options

//add sublist items in item field options
poItemList.forEach(function(item){
    itemField.addSelectOption(item);
})}

希望这会有所帮助!

答案 2 :(得分:0)

我知道这已经很老了,但是我认为一个更强大的解决方案是使用自定义表单上可用的已保存搜索过滤器。

从管理中心->定制->表单->交易表单->“您的表单”->编辑

在子列表字段选项卡下是项目搜索的下拉菜单。您只需要根据需要选择限制下拉列表的搜索即可。