Description
The current invoice PDF created by Netsuite doesn’t quite provide the information we would want to disclose on the invoice to be able to send to the supplier.
We would need the bank details listed on the invoice to pay and the subsidiary that is billing the customer to be shown on the invoice – I’ve attached a current copy of what the invoice shows.
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/record', 'N/search','N/ui/serverWidget'],
/**
* @param{record} record
* @param{search} search
*/
(record, search,serverWidget) => {
/**
* Defines the function definition that is executed before record is loaded.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
* @param {Form} scriptContext.form - Current form
* @param {ServletRequest} scriptContext.request - HTTP request information sent from the browser for a client action only.
* @since 2015.2
*/
const beforeLoad = (scriptContext) => {
try {
if(scriptContext.type==='create') {
var currentForm = scriptContext.form;
let company_name = currentForm.getField({
id: 'custbody10'
});
log.debug("current Form",currentForm);
log.debug("name",company_name)
company_name.updateDisplayType({
displayType: serverWidget.FieldDisplayType.DISABLED
});
}
}catch (e) {
log.debug("Error",e)
}
}
/**
* Defines the function definition that is executed before 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 beforeSubmit = (scriptContext) => {
try {
if(scriptContext.type==='create') {
let curRec = scriptContext.newRecord;
log.debug("Current Record", curRec);
// let recID=curRec.id;
// let rec=record.load({
// type: record.Type.INVOICE,
// id:recID,
// isDynamic: true
// });
let currency = curRec.getValue({
fieldId: 'currency'
});
log.debug("Currency in Invoice", currency);
let subsidiary = curRec.getValue({
fieldId: 'subsidiary'
});
log.debug("Subsidiary", subsidiary)
var customrecord_2663_bank_detailsSearchObj = search.create({
type: "customrecord_2663_bank_details",
filters:
[
["custrecord_2663_currency", "anyof", currency],
"AND",
["custrecord_2663_subsidiary", "anyof", subsidiary]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({
name: "custrecord_2663_gl_bank_account",
label: "GL Bank Account"
}),
search.createColumn({name: "custrecord_2663_subsidiary", label: "Subsidiary"}),
search.createColumn({name: "custrecord_2663_currency", label: "Currency"}),
search.createColumn({name: "custrecord3", label: "Default invoice bank account"}),
search.createColumn({name: "internalid", label: "Internal ID"})
]
});
var searchResultCount = customrecord_2663_bank_detailsSearchObj.runPaged().count;
let internal, deafult_bank, flag = 0;
let bankTrue = [];
let bankFalse = [];
//log.debug("customrecord_2663_bank_detailsSearchObj result count",searchResultCount);
customrecord_2663_bank_detailsSearchObj.run().each(function (result) {
deafult_bank = result.getValue({
name: "custrecord3",
label: "Default invoice bank account"
});
// log.debug("default value",deafult_bank)
if (deafult_bank === true) {
internal = result.getValue({
name: "internalid", label: "Internal ID"
});
bankTrue.push(internal);
flag = flag + 1;
} else {
internal = result.getValue({
name: "internalid", label: "Internal ID"
});
bankFalse.push(internal);
}
return true;
});
if (flag > 0) {
log.debug("Array with", bankTrue[0]);
curRec.setValue({
fieldId: 'custbody10',
value: bankTrue[0]
});
} else {
log.debug("Array False", bankFalse[0])
curRec.setValue({
fieldId: 'custbody10',
value: bankFalse[0]
});
}
}
}catch (e) {
log.debug("error",e)
}
}
return {beforeLoad, beforeSubmit}
});