Добавить элемент списка на основе поставщика - PullRequest
0 голосов
/ 10 января 2020

Мне нужно автоматически заполнить несколько полей на уровне строки в счете поставщика после выбора поставщика. Линии должны будут заполняться на основе информации о выбранной записи поставщиков. Есть ли способ для Suitescript заполнить строку расходов несколькими полями, которые (в сценарии) могут быть получены из выбранной записи поставщиков?

Я не знаю, как загрузить информацию из другой записи и затем добавить это это в поле уровня линии. Я знаю, что это понадобится в режиме Dynami c, чтобы это происходило в режиме реального времени. Поскольку я хочу загрузить его после выбора поставщика, с какой функции мне нужно начать?

Вот сценарий, который я создал,

/**
*@NApiVersion 2.x
*@NScriptType ClientScript
* @NModuleScope SameAccount
 */

 define(["N/search","N/record"], 

  function fieldChanged(context) {

  var currentRecord = context.currentRecord;

        var fieldId = context.fieldId;
        if (fieldId === 'Vendor'){
        var recVE = nlapiLookupField("vendor", 64, 'Department',false);
            var veStatusValue = recVE.status;
        var recVE1 = nlapiLookupField("vendor", 64, 'Channel', false);
            var veStatusValue1 = recVE1.status;
        var recVE2 = nlapiLookupField("vendor", 64, 'Product', true);
            var veStatusValue2 = recVE2.status;
        }

function addLine(rec) {
 rec.selectNewLine({sublistId:"expense"});
 rec.setCurrentSublistValue({
    sublistId: "expense",
    fieldId: "Department",
    value: "veStatusValue"
    });

 rec.setCurrentSublistValue({
    sublistId: "expense",
    fieldId: "Channel",
    value: "veStatusValue1"
    });

    rec.setCurrentSublistValue({
    sublistId: "expense",
    fieldId: "Product",
    value: "veStatusValue2"
 });
rec.commitLine({sublistId:"expenses"});
  }          
 return {fieldChanged:fieldChanged};
});

1 Ответ

0 голосов
/ 14 января 2020

Я заставил скрипт работать сейчас, но есть ли способ его запустить, чтобы он не пытался создать строку, просто заполняя поля уровня строки, и пользователь может заполнить остальную информацию вручную?

   /**
    *@NApiVersion 2.x
     *@NScriptType ClientScript
     * @NModuleScope SameAccount
     */

 define(["N/search","N/record"], function (search, record) {

function fieldChanged(context) {
//log.debug('test','testing')

        var currentRecord = context.currentRecord;
    /*      currentRecord.selectNewLine({
                                               sublistId:"expense"
            });*/
        var fieldId  = context.fieldId;
        if (fieldId === 'entity'){

              var entityId = currentRecord.getValue({
              fieldId: 'entity'
              })

              log.debug('test', entityId)

              var vendorFields =  search.lookupFields({
              type: search.Type.VENDOR,
              id: entityId,
              columns: ['custentity_vel_vendor_department', 'custentity_vendor_channel','cseg_vel_product']
              });
          log.debug('test', vendorFields)

              var department = vendorFields.custentity_vel_vendor_department.value
              var channel = vendorFields.custentity_vendor_channel.value
              var product = vendorFields.cseg_vel_product.value


              currentRecord.selectNewLine({sublistId:"expense"});
              currentRecord.setCurrentSublistValue({
                  sublistId: "expense",
                  fieldId: "department",
                  value: department,
                  ignoreFieldChange:false,
                  fireSlavingSync: true,
                  forceSyncSourcing: true

                  });
              currentRecord.setCurrentSublistValue({
                  sublistId: "expense",
                  fieldId: "class",
                  value: channel,
                  ignoreFieldChange:false,
                  fireSlavingSync: true,
                  forceSyncSourcing: true
                  });
              currentRecord.setCurrentSublistValue({
                  sublistId: "expense",
                  fieldId: "cseg_vel_product",
                  value: product,
                  ignoreFieldChange:false,
                  fireSlavingSync: true,
                  forceSyncSourcing: true
                  });
             currentRecord.commitLine({sublistId:"expense"});
        }
}

 return {
     fieldChanged:fieldChanged
  };
  });
...