/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define([‘N/record’, ‘N/search’],
/**
* @param{record} record
* @param{search} search
*/
(record, search) => {
/**
* Defines the function definition that is executed after record is submitted.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord – New record
* @param {Record} scriptContext.oldRecord – Old record
* @param {string} scriptContext.type – Trigger type; use values from the context.UserEventType enum
* @since 2015.2
*/
const afterSubmit = (scriptContext) => {
try {
log.debug(‘type’,scriptContext.type)
let status = scriptContext.newRecord.getValue({ fieldId: ‘approvalstatus’ });
let oldStatus = scriptContext.oldRecord ? scriptContext.oldRecord.getValue({ fieldId: ‘approvalstatus’ }) : null;
log.debug(“status”, status);
log.debug(“oldStatus”, oldStatus);
if (scriptContext.type !== scriptContext.UserEventType.EDIT || status != 2 || oldStatus !=1) {
return;
}
let newRecord = scriptContext.newRecord;
let expenseLineCount = newRecord.getLineCount({ sublistId: ‘expense’ });
let itemLineCount = newRecord.getLineCount({ sublistId: ‘item’ });
// If there are no expense lines, do nothing
if (expenseLineCount > 0) {
createItemReceiptForSublist({
newRecordId: newRecord.id,
sublistId: ‘expense’,
sublistFieldId: ‘markreceived’,
memoText: ‘Generated from Purchase Order (Items): ‘ + newRecord.id
});
}
if (itemLineCount > 0) {
createItemReceiptForSublist({
newRecordId: newRecord.id,
sublistId: ‘item’,
sublistFieldId: ‘itemreceive’,
memoText: ‘Generated from Purchase Order (Expense): ‘ + newRecord.id
});
}
} catch (e) {
log.error(‘Error Creating Item Receipt’, e);
}
};
const createItemReceiptForSublist = ({ newRecordId, sublistId, sublistFieldId, memoText }) => {
try {
let itemReceipt = record.transform({
fromType: record.Type.PURCHASE_ORDER,
fromId: newRecordId,
toType: record.Type.ITEM_RECEIPT,
isDynamic: true
});
itemReceipt.setValue({
fieldId: ‘memo’,
value: memoText
});
let lineCount = itemReceipt.getLineCount({ sublistId });
for (let i = 0; i < lineCount; i++) {
itemReceipt.selectLine({ sublistId, line: i });
itemReceipt.setCurrentSublistValue({
sublistId,
fieldId: sublistFieldId,
value: false
});
itemReceipt.commitLine({ sublistId });
}
let itemReceiptId = itemReceipt.save();
log.debug(`Item Receipt for ${sublistId} Created`, ‘ID: ‘ + itemReceiptId);
} catch (e) {
log.error(`Error processing sublist ${sublistId}`, e);
}
};
return { afterSubmit };
});