Apakah mungkin membuat faktur menggunakan id eksternal item dan bukan id internal menggunakan Restlet? Saya dapat mencapai ini di Postman seperti ini:

 "item": {
        "items": [

            { 
                "amount": 120.0,
                "item": {
                    "externalid": "12878"
                },
                 "taxCode": {                    
                    "id": "13"                    
                }
            }
        ]
    } 

Tetapi ketika saya mencoba mengatur yang sama di Restlet, itu menimbulkan kesalahan.

var currentItem = items[i];
record.selectNewLineItem('item');
record.setCurrentLineItemValue('item', 'externalid', currentItem["exId"]);
record.setCurrentLineItemValue('item', 'quantity', currentItem["quantity"]);
record.setCurrentLineItemValue('item', 'rate', currentItem["rate"]);
record.setCurrentLineItemValue('item', 'taxcode', currentItem["taxcode"]);
record.commitLineItem('item');
{"error":{"code":"INVALID_KEY_OR_REF","message":"Invalid item reference key 12878 for subsidiary 1."}}
1
raGs 1 September 2020, 22:14

1 menjawab

Jawaban Terbaik

Yang perlu Anda lakukan adalah mencari item dengan id eksternal.

var extIds = items.map(function(it){ return it.exId});
var items = nlapiSearchRecord('item', null, [
    new nlobjSearchFilter('externalid', null, 'anyof', extIds)
], [
    new nlobjSearchColumn('externalid')
]);
// check for null return and throw error
var extIdMap = {};
items.forEach(function(ref){
    extIdMap[ref.getValue('externalid')] = ref.getId();
});

//then instead of record.setCurrentLineItemValue('item', 'externalid', currentItem["exId"]);
record.setCurrentLineItemValue('item', 'item', extIdMap[currentItem["exId"]]);
0
bknights 1 September 2020, 21:52