Jira Code: VMNT-1
This script converts item fulfillment to invoice, trigger on after submit
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
/**
* Script Description
* This script converts itemfulfillment to invoice, trigger on aftersubmit
*
* Created on 30-Nov-2018
*/
/*******************************************************************************
*
* **************************************************************************
*
*
* Author: Jobin & Jismi IT Services LLP
*
* REVISION HISTORY
*
*
******************************************************************************/
/**
* SCRIPT ID : customscriptvmnt_1_jj_ue_itemfulfillment (491)
*
* DEPLOYMENT ID : customdeployvmnt_1_jj_ue_itemfulfillment (807)
*
*/
define(['N/error','N/record','N/search', 'N/log'],
function(error, record, search, log) {
function afterSubmit(scriptContext) {
try {
if (scriptContext.type == scriptContext.UserEventType.CREATE) {
var Items = new Object();
var newRec = scriptContext.newRecord;
var id = newRec.id; // item fulfillemet id
var salesOrderId = newRec.getValue({ // Here we are getting the sales order id to use in the transform function
fieldId: 'createdfrom'
}); // sales order id
// Transform the Sales Order into an Invoice
var invoiceRecord = record.transform({
fromType: record.Type.SALES_ORDER,
fromId: salesOrderId,
toType: record.Type.INVOICE
});
log.debug({
title: 'invoiceRecord',
details: invoiceRecord
});
var lineCountItemSublist = newRec.getLineCount({ sublistId: 'item' });
for (var i = 0; i < lineCountItemSublist; i++) {
try {
var itemId = newRec.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
var itemQuatity = newRec.getSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i
});
Items[itemId] = itemQuatity;
} catch (e) {
log.debug('err@lineCountItemSublist', e.message);
}
}
var InvoiceLine = invoiceRecord.getLineCount({ sublistId: 'item' });
for (var i = 0; i < InvoiceLine; i++) {
try {
var itemId = invoiceRecord.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
if (Items[itemId] != null || Items[itemId] != undefined)
var itemQuatity = invoiceRecord.setSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i,
value: Items[itemId]
});
} catch (e) {
log.debug('err@InvoiceLine', e.message);
}
}
for (var i = 0; i < InvoiceLine; i++) { // to delete items excluded in fulfillment
try {
var itemId = invoiceRecord.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
if (Items[itemId] == null || Items[itemId] == undefined || Items[itemId] == "") {
invoiceRecord.removeLine({
sublistId: 'item',
line: i,
ignoreRecalc: true
});
}
} catch (e) { log.debug("e", e); }
}
log.debug('Items', Items);
//Submit the record
var saveInv = invoiceRecord.save();
log.debug('Saved Invoice', saveInv);
}
} catch (e) {
log.debug('err@afterSubmit', e.message);
}
}
return {
// beforeLoad: beforeLoad,
// beforeSubmit: beforeSubmit,
afterSubmit: afterSubmit
};
});