suitescript Replace transaction SKUs without affecting transition total

 const updateTransaction = (transactionId, valueArray) => {
            try {
                let transactionRecord = record.load({
                    type: RECORD_TYPE[valueArray[0]["Type"]],
                    id: transactionId,
                    isDynamic: true
                });
                for (let i = 0; i < valueArray.length; i++) {
                    let lineId = transactionRecord.findSublistLineWithValue({
                        sublistId: 'item',
                        fieldId: 'lineuniquekey',
                        value: valueArray[i]['Line Unique Key']
                    });
                    let replaceSku = REPLACE_SKU.find(obj => Number(obj["epicSkuId"]) === Number(valueArray[i]["Item"]))?.["equivalandSkuId"] || "";
                    if (lineId !== -1 && replaceSku) {
                        transactionRecord.selectLine({
                            sublistId: 'item',
                            line: lineId
                        });
                        transactionRecord.setCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'isclosed',
                            value: true,
                        });
                        transactionRecord.setCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'price',
                            value: PRICE_LEVEL.Custom
                        })
                        transactionRecord.setCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'rate',
                            value: 0
                        })
                        transactionRecord.setCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'quantity',
                            value: 0
                        });
                        let fulfilmentLocation = transactionRecord.getCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'location'
                        });
                        let taxCode = transactionRecord.getCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'taxcode'
                        });
                        log.debug("taxCode", taxCode);
                        transactionRecord.commitLine({
                            sublistId: 'item'
                        });
                        transactionRecord.selectNewLine({ sublistId: 'item' });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'item', value: replaceSku });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'price', value: PRICE_LEVEL.Custom });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'location', value: fulfilmentLocation });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'quantity', value: valueArray[i]['Quantity'] });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'rate', value: valueArray[i]['Item Rate'] });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'amount', value: valueArray[i]['Amount'] });
                        transactionRecord.setCurrentSublistValue({ sublistId: 'item', fieldId: 'taxcode', value: taxCode });
                        transactionRecord.commitLine({ sublistId: 'item' });
                    }
                }
                transactionRecord.save({
                    enableSourcing: true,
                    ignoreMandatoryFields: true
                });
            } catch (e) {
                log.error("Error in updateTransaction", e);
            }
        }

Leave a comment

Your email address will not be published. Required fields are marked *