Suitescript 2.0: event.record.getCurrentSublistField не является функцией - PullRequest
0 голосов
/ 17 июня 2020

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

Я провел некоторое тестирование и при сохранении корректировки инвентаря в клиентском скрипте с использованием не пронумерованных предметов, он работает и не выдает мне ошибки. Когда я пытаюсь ввести детали инвентаря для пронумерованных партий, я получаю event.record.getCurrentSublistField не является функцией. Эта ошибка не возникает в моем скрипте, но, похоже, происходит в системном скрипте. Я добавляю сюда свой клиентский скрипт. Есть идеи, почему это происходит?

define (['N / record', 'N / search', 'N / currentRecord', 'N / runtime'],

функция (запись, поиск, currentRecord, время выполнения) {

function pageInit(context) {

}

function buildSecondaryItems(){
    var currentWo = currentRecord.get();
    var currentId = currentWo.id;
    var account = runtime.getCurrentScript().getParameter('custscript_cab_accountparamater');
    console.log(currentId);
    console.log(account);

    var workOrder = record.load({
        type: "workorder", 
        id: currentId
    });

    var location = workOrder.getValue({
        fieldId: 'location'
    })
    var batch = workOrder.getValue({
        fieldId: 'custbody_cab_processingbatchfield'
    })
    var batchName = workOrder.getText({
        fieldId: 'custbody_cab_processingbatchfield'
    })

    var assembly = workOrder.getValue({
        fieldId: 'assemblyitem'
    })
    var subsidiary = workOrder.getValue({
        fieldId: 'subsidiary'
    })
    console.log("Location: "+location);
    console.log("Batch: "+batch);
    console.log("Batch Name: "+batchName);
    console.log("Assembly: "+ assembly);
    console.log("Subsidiary: "+ subsidiary);

    // Getting information from the related Assembly build on the Work order

    var assemblyBuildSearch = search.load({id: 'customsearch274'})
    var firstResult = runRelatedRecordSearch(assemblyBuildSearch,currentId)

    var glImpact = firstResult.getValue(assemblyBuildSearch.columns[1]);
    var qtyBuilt = firstResult.getValue(assemblyBuildSearch.columns[2]);
    var date = firstResult.getValue(assemblyBuildSearch.columns[3]);
    console.log("gl Impact: " + glImpact);
    console.log("qty Built: " + qtyBuilt);
    console.log("date: " + date);

    // Creating the Inventory Adjustment
    var inventoryAdjustment = record.create({
        type: "inventoryadjustment",
        isDynamic: true,
        defaultValues :null
    });
    // Setting Main value on Inventory Adjustment
    inventoryAdjustment.setValue({
        fieldId: 'subsidiary',
        value: subsidiary
    });
    inventoryAdjustment.setValue({
        fieldId: 'trandate',
        value: new Date(date)
    });
    inventoryAdjustment.setValue({
        fieldId: 'account',
        value: account
    });
    inventoryAdjustment.setValue({
        fieldId: 'adjlocation',
        value: location
    });

    inventoryAdjustment.setValue({
        fieldId :'custbody_cab_processingbatchfield',
        value: batch
    });
    inventoryAdjustment.setValue({
        fieldId :'custbody_cab_adjustmenttype',
        value: '2'
    });
    inventoryAdjustment.setValue({
        fieldId :'custbody_cab_invadjworkorder',
        value: currentId
    });


    //Entering the first line on the inventory Adjustment

    inventoryAdjustment.selectNewLine({
        sublistId: 'inventory'
    });
    inventoryAdjustment.setCurrentSublistValue({
        sublistId: 'inventory',
        fieldId: 'item',
        value: assembly
    });
    inventoryAdjustment.setCurrentSublistValue({
        sublistId: 'inventory',
        fieldId: 'location',
        value: location
    });
    inventoryAdjustment.setCurrentSublistValue({
        sublistId: 'inventory',
        fieldId: 'adjustqtyby',
        value: qtyBuilt
    });
    inventoryAdjustment.setCurrentSublistValue({
        sublistId: 'inventory',
        fieldId: 'unitcost',
        value: glImpact/qtyBuilt
    });


    //Selecting the inventory detail subrecord and setting the values.
    var subrecord = inventoryAdjustment.getCurrentSublistSubrecord({
        sublistId: 'inventory',
        fieldId: 'inventorydetail'
    });
    subrecord.selectNewLine({
        sublistId: 'inventoryassignment'
    });
    subrecord.setCurrentSublistValue({
        sublistId: 'inventoryassignment',
        fieldId: 'issueinventorynumber',
        value: "ALT1"
    });
    subrecord.setCurrentSublistValue({
        sublistId: 'inventoryassignment',
        fieldId: 'inventorystatus',
        value: '1'
    });
    subrecord.setCurrentSublistValue({
        sublistId: 'inventoryassignment',
        fieldId: 'quantity',
        value: qtyBuilt
    });


    // Committing the inventory detail and first line
    subrecord.commitLine({
        sublistId: 'inventoryassignment'
    });

    inventoryAdjustment.commitLine({
        sublistId: 'inventory'
    });



    var inventoryAdjustmentID = inventoryAdjustment.save({
        enableSourcing: true,
        ignoreMandatoryFields: false
    });


}



function runRelatedRecordSearch(assemblyBuildSearch,currentId){
    var filter = search.createFilter({              // Creates filter on created from field
        name:'createdfrom',
        operator: search.Operator.IS,
        values: currentId
    })
    assemblyBuildSearch.filters.push(filter);
    var results = assemblyBuildSearch.run();
    var firstResult = results.getRange({
          start: 0, 
          end: 1
        })[0];

    return firstResult;
}

return {
    pageInit: pageInit,
    buildSecondaryItems: buildSecondaryItems

};

});

Заранее благодарю

Ответы [ 2 ]

0 голосов
/ 02 июля 2020

Я обратился в службу поддержки Netsuite, и проблема была вызвана идентификатором поля "issueinventorynumber". Несмотря на то, что это поле в обозревателе записей, представитель службы поддержки подтвердил, что это ошибка, и было предложено усовершенствовать ее для ее изменения. Мне нужно использовать "инвентарный номер квитанции", чтобы он работал.

0 голосов
/ 23 июня 2020

Abed, я не могу комментировать слишком далеко, так как я не знаком (я никогда не пробовал писать скрипт именно таким образом), но клиентский скрипт, который вызывается UE, должен быть модульным и почти никогда не развертывается. - и, следовательно, по дизайну ваш вызов custscript_cab_accountparamater обязательно завершится ошибкой.

UE, которые вызывают CS, могут передавать параметры CS с помощью аналогичного (модифицированного) процесса, и именно так CS вызывается с параметрами. Возможно, это то, что вам следует сделать.

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

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