NetSuite:如何使用交运地址自定义地址字段填充自定义交易字段

时间:2016-05-24 19:17:44

标签: netsuite

在NetSuite中,如何填充自定义交易字段

(custbody_site_no_shipto) 

对具有自定义地址字段的交易(例如,销售订单)

(custrecord_site_no) 

选择的送货地址(在“运输”选项卡下)?

 Custom transaction field: custbody_site_no_shipto
 (Menu: Customization > Lists, Records, & Fields > Transaction Body   Fields – Display Type is Inline Text).

 Custom address field: custrecord_site_no
 (Menu: Customization > Lists, Records, & Fields > Other Custom Fields –    Checked Apply To All Custom Address Forms).

2 个答案:

答案 0 :(得分:0)

通常,您需要在“采购和过滤”中配置自定义字段的来源。
但是,送货地址不包括在“源列表”中。
因此,为了满足这些要求,您可能只能通过SuiteFlow或SuiteScript(客户端或用户事件脚本)进行自动化/自定义。

并且根据您的要求,您似乎只能在提交用户事件脚本后执行此操作。这是因为"地址"您想要访问的是子记录,并非所有API都可以在客户端脚本上使用。我有以下示例:

    var recSO = nlapiLoadRecord('salesorder', 34826,
        {
            recordmode : 'dynamic'
        });//34826 is the internal id of SO
    var recSubAddress = recSO.viewSubrecord('shippingaddress');//Ship To field id
    var stSiteN0 = recSubAddress.getFieldValue('custrecord_site_no');

    recSO.setFieldValue('custbody_site_no_shipto', stSiteN0);
    var stRecId = nlapiSubmitRecord(recSO);

答案 1 :(得分:0)

下面的脚本可以工作,并作为用户事件脚本实现。

function userEventBeforeSubmit(type) {
 var shipadd = nlapiGetFieldValue('shipaddresslist');
 var customer = nlapiGetFieldValue('entity');

 var record = nlapiLoadRecord('customer', customer,{recordmode: 'dynamic'});
 var linenum = record.findLineItemValue('addressbook', 'internalid', shipadd);


 record.selectLineItem('addressbook', linenum);
 var subrecord = record.viewCurrentLineItemSubrecord('addressbook', 'addressbookaddress');
 var customfield1 = subrecord.getFieldValue('custrecord_site_no'); 
 nlapiSetFieldValue('custbody_site_no_shipto', customfield1);
}