Javascript 使用Suitescript 2.0中的新项目创建销售订单

Javascript 使用Suitescript 2.0中的新项目创建销售订单,javascript,mapreduce,netsuite,suitescript,suitescript2.0,Javascript,Mapreduce,Netsuite,Suitescript,Suitescript2.0,我正在用Map/Reduce类型编写SuiteScript2.0。 我通过API获取一些列表订单,我检查客户,如果存在,则创建订单,否则首先创建客户,然后添加销售订单及其项目(这是新项目)。我收到一个错误,您为以下字段输入了无效的字段值5260365201455:item。 我假设(因为我是suitescript新手),在创建销售订单时,下面的脚本也会创建它的项目 代码——根据以下答案更新 // updated function for creating item function cr

我正在用Map/Reduce类型编写SuiteScript2.0。 我通过API获取一些列表订单,我检查客户,如果存在,则创建订单,否则首先创建客户,然后添加销售订单及其项目(这是新项目)。我收到一个错误
,您为以下字段输入了无效的字段值5260365201455: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作为
项目
子列表的
项目
列的值。

同样的错误,我已经按照您的建议更新了代码,请查看相关更新的代码