Jira Code : TM 130
This is to set Job Expense field in the Invoice record related with the corresponding job.
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
* @ScriptTitle TM 130 UE Set Exp Amt invc frm bill
* @ScriptID customscript_tm130_ue_set_exp_amt_to_inv
* @Description This is to set Job Expense in the Invoice related to job
* @CreatedBy AJ 07/12/2018
*/
define(['N/record', 'N/search', 'N/ui/serverWidget'],
/**
* @param {record} record
* @param {search} search
* @param {serverWidget} serverWidget
*/
function(record, search, serverWidget) {
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {string} scriptContext.type - Trigger type
* @param {Form} scriptContext.form - Current form
* @Since 2015.2
*/
function afterSubmit(scriptContext) {
try{
if(scriptContext.type=='create')
{
var billID = scriptContext.newRecord.id;
log.debug("billID",billID);
var billRecord = scriptContext.newRecord;
// to get the lines
var lineNum = billRecord.getLineCount({
sublistId:'expense'
});
// var SO#='';
if(lineNum>0)
{
for(var i=0;i<lineNum;i++)
{
// to get the jobId & Amount
var Amount= billRecord.getSublistValue({
sublistId:'expense',
fieldId:'amount',
line:i
});
//customer
var job= billRecord.getSublistValue({
sublistId:'expense',
fieldId:'customer',
line:i
});
// to get the SO# of job
var jobSearchObj = search.create({
type: "job",
filters:
[
["internalidnumber","equalto",job]
],
columns:
[
search.createColumn({name: "custentity_io_number", label: "IO#"})
]
});
var searchResultCount = jobSearchObj.runPaged().count;
var searchResult = jobSearchObj.run().getRange({
start:0,
end:1
});
// to get the SO#
if(searchResultCount>0)
{
var reltdSO = searchResult[0].getValue({
name:'custentity_io_number'
});
// search for Invoice
// to get the InvoiceId
var invoiceId = getInvoiceDetails(reltdSO);
// to submit the Invoice Amount in Invoice
for(var j=0;j<invoiceId.length;j++)
{
var JobExp=0;
var oldAmount=invoiceId[j].amount;
if(oldAmount==null || oldAmount==undefined || oldAmount==" "||oldAmount==""||oldAmount==''||oldAmount==' ')
oldAmount=0;
JobExp = parseFloat(oldAmount)+parseFloat(Amount);
var id = record.submitFields({
type: record.Type.INVOICE,
id: invoiceId[j].invceId,
values: {
'custbody_jj_job_expense': JobExp
}
});
}
}
}
}
}
}catch(e)
{
log.debug("Err@ FN ",e.message);
}
}
function getInvoiceDetails(reltdSO)
{
try
{
var returnArray =[];
var invoiceSearchObj = search.create({
type: "invoice",
filters:
[
["type","anyof","CustInvc"],
"AND",
["createdfrom","anyof",reltdSO],
"AND",
["mainline","is","T"]
],
columns:
[
search.createColumn({name: "internalid", label: "Internal ID"}),
search.createColumn({name: "tranid", label: "Document Number"}),
search.createColumn({name: "custbody_jj_job_expense", label: "Job Expenses"})
]
});
var searchResultCount = invoiceSearchObj.runPaged().count;
log.debug("invoiceSearchObj result count",searchResultCount);
var searchResult = invoiceSearchObj.run().getRange({
start:0,
end:1000
});
for(var i=0;i<searchResultCount;i++)
{
var InvceObj={};
InvceObj.invceId = searchResult[i].getValue({
name: "internalid"
});
InvceObj.amount = searchResult[i].getValue({
name: "custbody_jj_job_expense"
});
returnArray.push(InvceObj);
}
return returnArray;
}catch(e)
{
log.debug("Err@ FN ",e.message);
}
}
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type
* @Since 2015.2
*/
function beforeSubmit(scriptContext) {
}
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type
* @Since 2015.2
*/
function beforeLoad(scriptContext) {
}
return {
beforeLoad: beforeLoad,
beforeSubmit: beforeSubmit,
afterSubmit: afterSubmit
};
});