Я хочу создать заказ на покупку после нажатия кнопки "одобрить" в заказе на продажу

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

Я использовал как внутренний идентификатор, так и строковое имя элемента в качестве значений, и я получаю ту же ошибку "неверное значение поля". Кто-нибудь знает, что не так?

function beforeSubmit(context) {
    var sRecord = context.newRecord;
    var user = runtime.getCurrentUser();

    //get line count
    var itemCount = sRecord.getLineCount({
        sublistId: 'item'
    });

    for (var i = 0; i<itemCount; i++){
        var pOrder = record.create({
            type: record.Type.PURCHASE_ORDER,
            isDynamic: true
        });

        //get item internal id
        var itemId = sRecord.getSublistValue({
            sublistId   : 'item',
            fieldId     : 'item',
            line        : i
        });

        //get qty
        var qty = sRecord.getSublistValue({
            sublistId   : 'item',
            fieldId     : 'quantity',
            line        : i
        });

        //get vendor of item
        var vendor = search.lookupFields({
            type    : 'item',
            id      : itemId,
            columns : ['vendorname']
        });

        //add vendor to record
        pOrder.setValue('vendorname', vendor);

        //selects new line
        pOrder.selectNewLine({sublistId: 'item'});

        //add item to sublist
        pOrder.setCurrentSublistValue({
            sublistId   : 'item',
            fieldId     : 'item',
            value       : itemId
        });

        //add quantity to sublist
        pOrder.setCurrentSublistValue({
            sublistId   : 'item',
            fieldId     : 'quantity',
            value       : qty
        });
        pOrder.commitLine({sublistId: 'item'});
        pOrder.save();

    }
}

1 ответ

Решение

entity поле обязательно для заполнения в записи заказа на покупку. vendorname поле в записи товара не хранит запись о поставщике, и даже если это так, vendorname поле на ПО. Это значение из записи товара используется для идентификации имени / кода поставщика для самого товара, если у него другое имя.

Как написано, этот код функционирует по крайней мере ситуативно, если entity поле установлено на PO. Если вы установили Preferred Vendor или если при использовании функции нескольких поставщиков настроен предпочтительный поставщик, вы можете найти соответствующий entity поле непосредственно из записи элемента еще.

Простой способ добиться того, что, по-видимому, делает этот сценарий без сценариев для инвентарных и не инвентарных предметов для продажи, состоит в использовании Drop Ship Item флажок или Special Order Item флажок на этих записях элементов. Выбор любого из подходящих элементов позволит автоматически создавать позиции для позиций вашего заказа на продажу. Поиск Special Order Items в справке Netsuite для получения дополнительной информации о различиях и о том, как их настроить.

Другие вопросы по тегам