【问题标题】:Netsuite - How to populate sublist based on item & location searchNetsuite - 如何根据项目和位置搜索填充子列表
【发布时间】:2017-02-06 07:52:23
【问题描述】:

所以我正在尝试创建一个自定义的重新分配项目页面,主要区别在于预期发货日期中的数据。我想要做的是,根据项目 ID 和位置中的内容填充子列表。就像标准重新分配项目的工作原理一样。

到目前为止,我已经为页面创建了一个 ff js 作为 Suit let。

    var form = nlapiCreateForm('Reallocate Items');
    nlapiLogExecution('DEBUG', 'DEBUG', form);

    form.setScript('customscriptcust_reallocate_field_change');
    var item = form.addField('item','select', 'Item','item');
    var location = form.addField('location','select', 'Location','location');
    var qtyonhand = form.addField('qtyonhand','float', 'Quantity On Hand');
    qtyonhand.setDisplayType('disabled');
    var qtycommitted = form.addField('qtycommitted','text', 'Quantity Committed');
    qtycommitted.setDisplayType('disabled');
    var qtyrequired = form.addField('qtyrequired','text', 'Quantity Required');
    qtyrequired.setDisplayType('disabled');
    var qtypicked = form.addField('qtypicked','currency', 'Quantity Picked');
    qtypicked.setDisplayType('disabled');
    var units = form.addField('unitofmeasure','select', 'Units','unitstype');
    units.setDisplayType('disabled');

    var sublist = form.addSubList('sublist','list', '')
    var checkbox = sublist.addField('checkbox', 'checkbox', 'Allocate');
    var orddate = sublist.addField('orderdate', 'date', 'Order Date');
    orddate.setDisplayType('disabled');
    var expshipdate = sublist.addField('cust_tl_expectedshipdate', 'date', 'Custom Expected Ship Date');
    expshipdate.setDisplayType('disabled');
    var custreqdate = sublist.addField('custreqdate', 'date', 'Customer Request Date');
    custreqdate.setDisplayType('disabled');
    var ordernumber = sublist.addField('ordernumber', 'text', 'Order No.');
    ordernumber.setDisplayType('disabled');
    var specialorder = sublist.addField('specialorder', 'text', 'Special Order');
    specialorder.setDisplayType('disabled');
    var customer = sublist.addField('customer', 'select', 'Customer','customer');
    customer.setDisplayType('disabled');
    var qtyord = sublist.addField('qtyord', 'float', 'Quantity Ordered');
    qtyord.setDisplayType('disabled');
    var qtyremaining = sublist.addField('qtyremaining', 'float', 'Quantity Remaining');
    qtyremaining.setDisplayType('disabled');
    var commit = sublist.addField('commit', 'text', 'Commit');
    commit.setDisplayType('disabled');
    var qrtcommitted = sublist.addField('qtycommitted', 'float', 'Quantity Committed');

    form.addSubmitButton('Submit');
    form.addResetButton('Reset');


    response.writePage( form );

这是我的客户端脚本。

if ((name === 'item' || name === 'location') && !isEmpty(nlapiGetFieldValue("item")) && !isEmpty(nlapiGetFieldValue("location"))){

  var item = nlapiGetFieldValue('item');
  var unitstype = nlapiLookupField('item',item,'unitstype');
  nlapiSetFieldValue('unitofmeasure',unitstype);
  var location = nlapiGetFieldValue('location');

  var filters = new Array();
  filters[0] = new nlobjSearchFilter( 'inventorylocation', null, 'anyof', location );
  filters[1] = new nlobjSearchFilter('internalid', null, 'anyof', item);
  var columns = new Array();
  columns[0] = new nlobjSearchColumn('locationquantitycommitted');
  columns[1] = new nlobjSearchColumn('locationquantityonhand');
  var search = nlapiSearchRecord( 'item', null, filters, columns );

  if (search){
    var searchrow = search[0];
    var quantitycommitted = searchrow.getValue( 'locationquantitycommitted' );
    var quantityonhand = searchrow.getValue( 'locationquantityonhand' );
    //var quantitypicked = searchrow.getValue( 'quantitypicked' );
    nlapiSetFieldValue('qtycommitted',quantitycommitted);
    nlapiSetFieldValue('qtyonhand',quantityonhand);
    nlapiSetFieldValue('qtypicked', '100');
    }
  }
 }

我的问题是如何填充子列表,就像它在重新分配项目中的工作方式一样? 谢谢!

【问题讨论】:

  • 你有什么问题?
  • 如何在从 ID 和 Location 中选择一个时填充子列表,就像在标准重新分配项目页面中一样?

标签: javascript netsuite sublist suitescript clientscript


【解决方案1】:

在您的 nlobjSublist 参考中使用 setLineItemValuessetLineItemValue 方法。

如果您的子列表列 ID 与搜索结果中的列 ID 完全匹配,您只需将搜索结果数组传递给 nlobjSublist.setLineItemValues 即可使用搜索结果填充整个列表。只有与搜索列完全匹配的子列表列才会被填充。

如果不这样做,您可以遍历搜索结果并使用 nlobjSublist.setLineItemValue 使用每个搜索结果手动填充每一行。

【讨论】:

  • nlobgSearchColumn() 里面应该有什么?子列表中的每个字段?如果是这样,我在哪里可以找到内部 ID?
  • 您的搜索栏看起来不错;它只是您想要从搜索结果中获得的字段的 ID。
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 2015-06-08
  • 2017-12-01
  • 2015-08-07
  • 1970-01-01
  • 2016-02-17
  • 2013-07-26
  • 1970-01-01
相关资源
最近更新 更多