繁体   English   中英

在创建记录期间按供应商自动过滤项目

[英]Automatically Filtering Items By Vendor During Creation of a Record

我有一组正在使用的脚本彼此交互。 我使用客户端,用户事件和Suitelet脚本创建一个按钮,当按下该按钮时,将打开一个弹出窗口,其中包含按供应商筛选的项目列表。

当我处于编辑状态时,它工作正常,但是在创建记录时使用它会出现问题。 由于要创建的记录没有供应商或ID,因此无法按供应商检索项目。 我想要做的是让Suitelet从保存之前从输入的供应商字段中检索信息。 因此,我可以按供应商过滤所有项目,并一次性添加必要的项目。 这可能吗? 我可以在提交信息之前访问该信息吗?

以下是客户端和Suitelet。 用户事件只是对套件的调用,因此为了简洁起见,我省略了它。

客户端脚本

function addItemButtonCallback(data){
    nlapiSelectNewLineItem('item');
    nlapiSetCurrentLineItemValue('item', 'item', data);
    nlapiCommitLineItem('inventoryitem');
}

function addItemButton() {
    var id = nlapiGetFieldValue('id');
    if (id != "") {
        var url = nlapiResolveURL('SUITELET', 'customscript_val', 'customdeploy1') + '&poId='+id;
        window.open(url, '_blank', 'width=500,height=500'); 
    } 
}

小套房

function suitelet(request, response){
    if(request.getMethod() == 'GET') {
        var form = nlapiCreateForm('Add Item');
        form.addSubmitButton('Submit');

        var itemfield = form.addField('custpage_val', 'select', 'Item');
        var id = request.getParameter('id');

        var rec = nlapiLoadRecord('purchaseorder', id);
        var vend = rec.getFieldValue('entity');
        var search = nlapiSearchRecord(...search parameters...);

        for (result in search){
          if (search[result].getValue('vendor') == vend){
            itemfield.addSelectOption(search[result].id, nlapiLookupField('inventoryitem', search[result].id, 'itemid'));
          }
        }
        response.writePage(form);
    } else {
        var data = request.getParameter('custpage_item');
        response.write('<html><body><script>window.opener.addItemButtonCallback("'+data+'"); window.close();</script></body></html>');
    }
}

在客户端脚本上使用nlapiGetFieldValue('entity'),并使用查询参数将其传递给Suitelet,就像处理poId一样(如果这样做,您甚至可能甚至不需要poId +无需在Suitelet上加载记录)。

另外,您可能希望通过运行一个传递项目ID数组的搜索来优化代码,而不是为每个项目调用nlapiLookupField。

您可能需要修改beforeLoad,以便在按下按钮时动态插入实体(我不记得clientscript按钮是否这样做)。 像这样:

var suiteletURL = nlapiResolveURL('SUITELET', 'customscript_val', 'customdeploy1');
var script = "var entity = nlapiGetFieldValue('entity'); var url = '" + suiteletURL + "'&entityId=' + entity;window.open(url, '_blank', 'width=500,height=500')";
var button = form.addButton('custpage_addItemButton', 'Add Item', script);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM