Get Total Unbilled PO Amount on Vendor Record Using Client Side Script

Written by
Manuelito Macalinao
Published on
August 31, 2023 at 9:17:12 AM PDT August 31, 2023 at 9:17:12 AM PDTst, August 31, 2023 at 9:17:12 AM PDT

Scenario

The total unbilled amount which can be seen in theAmountfield on theVendorrecord is based on the items' total quantity multiplied by their respective amounts. Some use cases permits users to change the rate of each item on theVendor Billrecord which will sometime exceed the totalPurchase Orderamount set in thePurchase Orderrecord.

Solution

The following code can be useful for approval processes if the user wants to flag vendor billsexceeding the totalPurchase Orderamount for approval.Run this code in thePageInitfunction of aClient Scriptdeployed to theVendor Billrecord:

functionunbilledPOAmount(type){var ponum =nlapiGetFieldValue('podocnum');if(ponum !=null&& ponum !=''){var arrSearchFilter =newArray(); arrSearchFilter[0]=newnlobjSearchFilter('createdfrom',null,'is', ponum); arrSearchFilter[1]=newnlobjSearchFilter('mainline',null,'is','T');var arrSearchColumn =newArray(); arrSearchColumn[0]=newnlobjSearchColumn('amount',null,'sum');var result =nlapiSearchRecord('vendorbill',null, arrSearchFilter, arrSearchColumn);var billed = result[0].rawValues[0].value;var porec =nlapiLoadRecord('purchaseorder', ponum);var totalPO = porec.getFieldValue('total');var remaining =(totalPO - billed)<0?0: totalPO - billed;nlapiSetFieldValue('custbody_remainingamount',remaining);//set the calculated unbilled or remianing amount to be billed in your custom field}if(type =='edit'){var arrSearchFilter =newArray(); arrSearchFilter[0]=newnlobjSearchFilter('internalid',null,'is',nlapiGetFieldValue('id')); arrSearchFilter[1]=newnlobjSearchFilter('mainline',null,'is','T');var arrSearchColumn =newArray(); arrSearchColumn[0]=newnlobjSearchColumn('createdfrom');var result =nlapiSearchRecord('vendorbill',null, arrSearchFilter, arrSearchColumn);var createdFromRecord = result[0].getValue('createdfrom');if(createdFromRecord !=null&& createdFromRecord !=''){var arrSearchFilter =newArray(); arrSearchFilter[0]=newnlobjSearchFilter('createdfrom',null,'is', createdFromRecord); arrSearchFilter[1]=newnlobjSearchFilter('mainline',null,'is','T');var arrSearchColumn =newArray(); arrSearchColumn[0]=newnlobjSearchColumn('amount',null,'sum');var result =nlapiSearchRecord('vendorbill',null, arrSearchFilter, arrSearchColumn);var billed = result[0].rawValues[0].value;var porec =nlapiLoadRecord('purchaseorder', createdFromRecord);var totalPO = porec.getFieldValue('total');var remaining =(totalPO - billed)<0?0: totalPO - billed;nlapiSetFieldValue('custbody_remainingamount',remaining);//set the calculated unbilled or remianing amount to be billed in your custom field}}}