2017-03-31 25 views
7

Tak, to jest to, co robię (hardcoding najwięcej wartości teraz, po prostu staramy się nauczyć NS):Programowo utworzyć rekord PAYMENT_VENDOR w NetSuite?

var vendorBillPayment = record.create({ 
      type: record.Type.VENDOR_PAYMENT, 
      isDynamic: false, 
      defaultValues: { 
       entity: 45 
      } 
     }) 

     vendorBillPayment.setValue({ 
      fieldId: 'entityname', 
      value: "Superior ISP" 
     }) 

     vendorBillPayment.setValue({ 
      fieldId: 'account', 
      value: 129 
     }) 

     vendorBillPayment.setValue({ 
      fieldId: 'currency', 
      value: 1 
     }) 

     vendorBillPayment.setValue({ 
      fieldId: 'customform', 
      value: 45 
     }) 

     vendorBillPayment.setValue({ 
      fieldId: 'exchangerate', 
      value: "1.00" 
     }) 

     var recordId = vendorBillPayment.save({ 
      enableSourcing: false, 
      ignoreMandatoryFields: true 
     }) 

Teraz, problem zaczyna się w poniższym fragmencie, rekord VendorPayment ma podmenu „Zastosuj” , która jest listą rachunków, których płatność musi dotyczyć.

 vendorBillPayment.setSublistValue({ 
      sublistId: 'apply', 
      fieldId: 'internalid', 
      line: 1, 
      value: "303" 
     }); 

Zwracany błędu:

error message:{"type":"error.SuiteScriptError","name":"UNEXPECTED_ERROR","message":null,"stack":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/..)"],"cause":{"type":"internal error","code":"UNEXPECTED_ERROR","details":null,"userEvent":null,"stackTrace":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/..)"],"notifyOff":false},"id":"","notifyOff":false} 

Oznacza to, że nie bardzo przydatne wiadomości. Przejrzałem ich dokumentację, ale nie wygrałem.

EDYCJA: okazuje się, że lista podrzędna dotyczy listy typów. Oznacza to, że NIE można programowo dodawać/usuwać linii z tej podlisty. Wystarczy edytować istniejące linie.

Czy istnieje inny sposób programowego opłacania rachunku dostawcy, poza tworzeniem rekordu VENDOR_PAYMENT?

+0

Pierwszy indeks podlisty w SuiteScript 2.0 to '0', a nie' 1'; spróbuj zamiast tego ustawić 'line' na' 0'. Myślę, że będziesz musiał również sprawdzić pole 'apply' na linii podlisty, więc musisz także ustawić' apply' na 'true' na linii. – erictgrubaugh

+0

@erictgrubaugh Witam, przepraszam za opóźnioną odpowiedź i dziękuję za odpowiedź. Teraz, w odniesieniu do pytania - nie można tego zrobić z rekordem VENDOR_PAYMENT na netsuite. Powodem jest to, że podlista "zastosuj" jest typu "lista", co oznacza, że ​​NIE możesz dynamicznie dodawać/usuwać linii. Możesz edytować tylko istniejące linie. – user2187935

+0

Interesujące. Chociaż nie próbowałem tego specjalnie w odniesieniu do płatności dla dostawców, wiem, że to ograniczenie nie istnieje w przypadku płatności dla klientów. – erictgrubaugh

Odpowiedz

0

Trudno jest upewnić się na podstawie podanego kodu, ale widzę dwa potencjalne problemy. Po pierwsze, podlista Zastosuj IS jest wymieniona jako skryptowalna zgodnie z dokumentacją NetSuite. Można zobaczyć podmenu wymienione w przeglądarce Records pod Vendor Płatność tutaj: https://system.na1.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/script/record/itemfulfillment.html można również zobaczyć, że podlistę „zastosuj” jest specjalnie zawołał na liście Scriptable podlist tutaj: https://system.na2.netsuite.com/app/help/helpcenter.nl?fid=chapter_N3206326.html

Teraz na kwestii kodu . Nie jest to całkowicie jasne, jak już wspomniałem wcześniej, ale na podstawie tego, co podałeś powyżej, wydaje się, że próbujesz dodać/edytować listę podrzędną "zastosuj" w zapisie po jej zapisaniu. Będziesz musiał dodać wartości podlisty przed zapisaniem lub ponownie załadować rekord przed ustawieniem wartości podlisty. Drugi problem, jaki widzę, to próba ustawienia "internalid" rekordu podlisty, którego nie można wykonać. Mogę się mylić, ale nie znam żadnych zapisów w NetSuite, niestandardowych lub innych, które pozwalają na ustawienie "internalid". Mógłbym podać bardziej przejrzysty kierunek za pomocą większej próbki skryptu, który próbujesz napisać, ale od tej pory wszystko to może być lśnione na twoim przykładzie.