2016-04-07 4 views
0

Я пытаюсь написать сценарий, который предотвратит вывод готовой продукции из инвентаря, если сборка ожидает одобрения. Это первый скрипт, который я когда-либо делал, и впервые использовал Javascript, поэтому я извиняюсь, если то, что у меня до сих пор не имеет смысла (и если я говорю глупо). Скрипт проверяет, является ли запись сборкой сборки, которая создается или редактируется, а затем создает временное поле «количество ожидающих». При сохранении, если статус одобрения «ожидает утверждения», сценарий назначает значение количества, ожидающего значения в количестве для сборки, тогда количество для сборки установлено в 0, и запись отправляется. Если одобрен статус одобрен, количество для сборки установлено на значение, хранящееся в ожидаемом количестве, а количество ожидающих - 0, запись затем отправляется. Опять прошу прощения, если это не имеет смысла.NetSuite: сборка сценариев строит только для снятия инвентаря при его одобрении

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

Вот что у меня есть. Если кто-то сделал что-то подобное или знает лучший подход, я все уши.

function commitIfApproved() { 
    var cR = nlapiGetOldRecord();  
    var recordId = cR.nlapiGetRecordID();  
    var recordType = cR.nlapiGetRecordType();  
    if (recordId == 'assemblybuild') {  
     if(recordType = 'create' || 'edit') {  
      var approvalstatus = cR.nlapiGetFieldValue('approval status');  
      var quantityPending = cR.nlapiGetFieldValue('quantity to build - pending');  
      if (approvalstatus == "Awaiting Approval") {  
       cR.nlapiSetFieldValue('quantity to build', '0');   
       cR.nlapiSetFieldValue('quantity to build - pending', quantityPending);  
       cR.nlapiSubmitRecord();  
       alert("Finished goods will not be taken from inventory until this assembly build is approved."); 
      } 
      if (approvalstatus == "Approved") {  
       cR.nlapiSetFieldValue('quantity to build', quantityPending);  
       cR.nlapiSetFieldValue('quantity to build - pending', '0');  
       cR.nlapiSubmitRecord();  
       alert("This assembly build has been approved. Finished goods have been subtracted from inventory."); 
      } 
     } 
    } 
} 

ответ

0

Первая ошибка, я вижу, с recordId сравнения. Вы хотите изменить свой оператор if, который сравнивается с assemblybuild, чтобы использовать recordType вместо recordId.

Во-вторых, ваши вызовы методов в ваших recordId и recordType присваиваниях. nlapiGetRecordId() и nlapiGetRecordType() являются глобальными статическими методами. Методы экземпляра: getRecordType() и getId(). То же самое верно для всех ваших вызовов до setFieldValue. См. Статью справки под названием nlobjRecord для получения более подробной информации об API-интерфейсе объекта записи.

var recordId = nlapiGetRecordId(); // alternatively, cr.getId() var recordType = nlapiGetRecordType(); // alternatively, cr.getRecordType();

Наконец, ваши идентификаторы полей все неправильно. 'quantity to build' - не настоящий идентификатор. Вы захотите проверить браузер записей в Eclipse IDE (Справка> NetSuite Records Browser) на странице в сборке записей сборки, чтобы увидеть все поля и их соответствующие идентификаторы.

+0

Благодарим вас за то, что нашли мои ошибки и объяснили все это очень четко! Я до сих пор не внес никаких изменений в свой код, но я дам вам знать, если это сработает! По некоторым причинам так сложно найти хорошие источники статей и справки NetSuite. – Jordan

 Смежные вопросы

  • Нет связанных вопросов^_^