Set Job expense in the invoice.

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
	};

});

Leave a comment

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