Ошибка при перенастройке деталей инвентаризации Netsuite

#mapreduce #netsuite #suitescript #suitescript2.0

Вопрос:

При создании пользовательской записи я вызываю сценарий сокращения карты, который при создании отрицательной корректировки запасов. Скрипт вызывается после отправки. Я использую следующий код для заполнения вложенных записей сведений об инвентаризации

 for (var n = 0; n < cp_lotsearch.length; n  ) {
                    if (cree_onhand > 0) {
                        var cp_lotid = cp_lotsearch[n].getValue({name: 'internalid'});
                        var cp_parentcasenum = cp_lotsearch[n].getValue({name: 'custrecord_nsts_ia_lot'});
                        var itemsearch = search.create({
                            type: 'item',
                            filters: ['inventorynumber.inventorynumber', 'is', cp_parentcasenum],
                            columns: [search.createColumn({name: "quantityonhand", join: "inventorynumber"})]
                        }).run().getRange({
                            start: 0,
                            end: 1000
                        });
                        var qtyonhand = itemsearch[0].getValue({name: 'quantityonhand', join: 'inventorynumber'});
                        var remain_qtyonhand = Number(qtyonhand) - Number(cree_onhand);
                        if (remain_qtyonhand >= 0) {
                            var reduceqty = 0 - Number(cree_onhand);
                        } else {
                            var reduceqty = 0 - Number(qtyonhand);
                        }
                        log.debug("reduceqty", reduceqty);
                        subrecord.insertLine({sublistId: 'inventoryassignment',line: n});

                        subrecord.setSublistText({ sublistId: 'inventoryassignment',fieldId: 'issueinventorynumber',line: n,text: cp_parentcasenum});
                        subrecord.setSublistValue({sublistId: 'inventoryassignment',fieldId: 'binnumber', line: n, value: cree_bin});
                        subrecord.setSublistValue({sublistId: 'inventoryassignment',fieldId: 'quantity',line: n,value: reduceqty});
                        log.debug("reduceqty added to inventory detail", reduceqty);
                        cree_onhand = Number(cree_onhand)   Number(reduceqty);
                        
                    }
                }
                var invadjid = parentcase_inv_Adj.save({
                    enableSourcing: true,
                    ignoreMandatoryFields: true
                });
 

Когда я пытаюсь запустить этот код, я получаю следующую ошибку:

«тип»:»ошибка.SuiteScriptError»,»имя»:»ОШИБКА ПОЛЬЗОВАТЕЛЯ»,»сообщение»:»Вам все еще необходимо перенастроить запись сведений о запасах после изменения количества».

Тот же код отлично работает в учетной записи песочницы, но в рабочей среде он выдает ошибку

Кто-нибудь может помочь мне решить эту ошибку?

У меня есть одно решение в ответе, которое я уже пробовал, но оно не работает, вот ссылка на него: https://netsuite.custhelp.com/app/answers/detail/a_id/80790/kw/reconfigure error

Ответ №1:

Я обнаружил, что эта ошибка может быть вызвана на стороне сервера, если :

  • включена функция нескольких единиц измерения.
  • единицы измерения запасов не являются 1 к 1, т. е. Единица поступления находится в упаковках по 20 штук, но базовая единица измерения UOM равна 1.
  • товар серийно выпускается.

Однако, если то же самое будет предпринято на стороне клиента, ошибка станет «Общее количество деталей запасов должно быть XX» (XX-это количество, установленное в «adjustqtyby» в строке корректировки запасов).