Suitescript, который должен автоматически заполнять настраиваемое поле (Основной контакт и Основной адрес электронной почты), когда поле клиента в записи о продажах вводится значением - PullRequest
0 голосов
/ 18 марта 2020

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

Я попробовал приведенный ниже код, но не могу получить роль (Основной контакт) из Записи клиента. Я получаю нулевое значение (пусто) при вводе поля клиента в заказе клиента, а также не заполняю автоматически настраиваемые поля.

function fieldChanged(context) 
    {

        var sales=context.currentRecord;

        if(context.fieldId=='entity')
        {
            var cusid=sales.getValue('entity');

            var cust=record.load({
                type: record.Type.CUSTOMER,
                id:cusid
            });

            var custid=cust.getText('entityid');

            log.debug(custid);


            var roleCount= cust.getLineCount({
                sublistId :'contactroles',

            });

            log.debug('count',roleCount);

            for(var i=0;i<roleCount;i++)
            {
                var roleName=cust.getSublistText({ sublistId : 'contactroles',fieldId : 'contactrole', line:i});

                log.debug('role',roleName);

                if(roleName=='Primary Contact')
                {
                    var emailinfo=cust.getSublistText({ sublistId : 'contactroles',fieldId : 'email', line:i});
                    sales.setValue('custbody_primary_email',emailinfo);
                }

            }

        }
    }

Ответы [ 3 ]

1 голос
/ 19 марта 2020

function fieldChanged(context) {
  try {
    var sales = context.currentRecord;
    if (context.fieldId == 'entity') //checking whether the cursor is in customer field or not
     {
      var cusid = sales.getValue('entity'); //retrieving the id of customer in salesOrder

      var cust = record.load({     //loading the customer record using above id
        type: record.Type.CUSTOMER,
        id: cusid
      });

      log.debug('customer id', cusid);

      var custid = cust.getText('entityid');

      log.debug(custid);


      var roleCount = cust.getLineCount({  //counting the lines in sublist (customer record)
        sublistId: 'contactroles'

      });

      log.debug('count', roleCount);

      for (var i = 0; i < roleCount; i++)   //traversing the list in sublist(contact list)
      {
        var roleId = cust.getSublistValue({
          sublistId: 'contactroles',
          fieldId: 'contact',
          line: i
        });

        log.debug('role id', roleId);

        var contactRecord = record.load({   //loading the contact record
          type: record.Type.CONTACT,
          id: roleId
        });

        var roleName = contactRecord.getValue({     //fetching the role in contact record
          fieldId: 'contactrole'
        });

        var phone1 = contactRecord.getText('phone');

        var emailinfo = contactRecord.getText('email');

        if (roleName == '-10')  //checking whether it is primary contact or not(primary contact id is -10)
         {

          sales.setValue('custbody_primary_email', emailinfo);//setting the custom fields )

          sales.setValue('custbody_primary_contact', phone1);
        }

      }

    }
  } catch (e) {
    log.error('Error Occurred in Updating Values' + e.message);
  }
}
0 голосов
/ 19 марта 2020

Вам необходимо указать поле клиента «контакт». В этом поле будет указан внутренний идентификатор основного контакта. Оттуда вы можете построить логи c, чтобы получить информацию из основного контакта.

0 голосов
/ 18 марта 2020

В подсписке contactroles нет поля contactrole. См. Браузер записей для правильных идентификаторов полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...