簡體   English   中英

在 Suitescript 2.0 中使用新項目創建銷售訂單

[英]creating sales order with new items in Suitescript 2.0

我正在編寫帶有 Map/Reduce 類型的suitescript 2.0。 我正在通過 API 獲取一些列表訂單,我檢查客戶,如果存在則創建訂單,否則首先創建客戶,然后添加銷售訂單及其項目(這是新項目)。 我收到錯誤消息, You have entered an Invalid Field Value 5260365201455 for the following field: item 我假設(因為我是suitescript的新手),在創建銷售訂單時,遵循腳本也會創建其項目。

代碼- 根據以下答案更新

// updated function for creating item
    function createChildItems(itemName) {
        log.debug({ title: 'createChildItems', details: 'child item' });

        var item = record.create({
            type: record.Type.INVENTORY_ITEM,
            isDynamic: true
        });
        item.setValue({ fieldId: 'itemid', value:itemName });
        var itemId = item.save({
            ignoreMandatoryFields: true
        });
        return itemId;
    }

以上函數創建項目並返回其內部ID,

var salesOrder = record.create({
    type: record.Type.SALES_ORDER,
    isDynamic: true,
    defaultValues: {
        entity: customer.id
    }
});

salesOrder.setValue({ fieldId: 'trandate', value: new Date(), ignoreFieldChange: true });

var subrec = salesOrder.getSubrecord({
    fieldId: 'shippingaddress'
});

subrec.setValue({ fieldId: 'addr1', value: order.shipping_address.address1 });
subrec.setValue({ fieldId: 'city', value: order.shipping_address.city });
subrec.setValue({ fieldId: 'state', value: order.shipping_address.province });
subrec.setValue({ fieldId: 'zip', value: order.shipping_address.zip });
subrec.setValue({ fieldId: 'addressee', value: order.shipping_address.first_name });

subrec.setValue({ fieldId: 'attention', value: order.shipping_address.first_name });


salesOrder.selectNewLine({
    sublistId: 'item'
});


var items = order.line_items; // this list of items are in array and all are new items, dos not exist in current netsuite

items.forEach(function (item) {
var internalID = createChildItems(item.name) // getting item internal ID here
    salesOrder.setCurrentSublistValue({
        sublistId: 'item',
        fieldId: 'item',
        value:  internalID // item.id.toString() // also tried without toString(), and tried with value of existing item
    });

    salesOrder.setCurrentSublistValue({
        sublistId: 'item',
        fieldId: 'quantity',
        value: item.quantity
    });
    salesOrder.setCurrentSublistValue({
        sublistId: 'item',
        fieldId: 'price',
        value: item.price
    });

    salesOrder.setCurrentSublistValue({
        sublistId: 'item',
        fieldId: 'rate',
        value: item.price
    });

    salesOrder.commitLine({
        sublistId: 'item'
    });
});

var id = salesOrder.save({
    ignoreMandatoryFields: false
});

在創建銷售訂單之前,我是否必須創建這些項目。

NetSuite 不會自動為您創建新的項目記錄。 您需要首先創建適當的項目記錄,然后使用新創建的項目記錄的內部 ID 作為item子列表的item列的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM