this script is to approve the bill payments that uses a batch number as filter
/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
define(['N/ui/serverWidget', 'N/file', 'N/record', 'N/redirect'],
function (serverWidget, file, record, redirect) {
function onRequest(context) {
if (context.request.method === 'GET') {
// Create the form
let form = serverWidget.createForm({
title: 'Approve Bill Payments'
});
// Add fields
form.addField({
id: 'custpage_batch_no',
type: serverWidget.FieldType.TEXT,
label: 'Batch No'
});
form.addSubmitButton({
label: 'Approve'
});
// Add sublist
let sublist = form.addSublist({
id: 'custpage_sublist',
type: serverWidget.SublistType.LIST,
label: 'Checks for Approval'
});
sublist.addField({
id: 'custpage_select',
type: serverWidget.FieldType.CHECKBOX,
label: 'Select'
});
sublist.addField({
id: 'custpage_check_number',
type: serverWidget.FieldType.TEXT,
label: 'Check Number'
});
sublist.addField({
id: 'custpage_bill_transaction',
type: serverWidget.FieldType.TEXT,
label: 'Bill Transaction'
});
// Read the check details from the JSON file
let fileObj = file.load({
id: 'SuiteScripts/check_details.json' // Path to the file
});
let checks = JSON.parse(fileObj.getContents());
// Populate sublist
for (let i = 0; i < checks.length; i++) {
let check = checks[i];
sublist.setSublistValue({
id: 'custpage_check_number',
line: i,
value: check.checkNumber
});
sublist.setSublistValue({
id: 'custpage_bill_transaction',
line: i,
value: check.billTransaction
});
}
context.response.writePage(form);
} else {
let request = context.request;
let lines = request.getLineCount({
group: 'custpage_sublist'
});
for (let i = 0; i < lines; i++) {
let isSelected = request.getSublistValue({
group: 'custpage_sublist',
name: 'custpage_select',
line: i
});
if (isSelected === 'T') {
let billTransaction = request.getSublistValue({
group: 'custpage_sublist',
name: 'custpage_bill_transaction',
line: i
});
// Approve the bill payment (custom logic here)
let billRecord = record.load({
type: record.Type.VENDOR_BILL,
id: billTransaction
});
billRecord.setValue({
fieldId: 'custbody_approved',
value: true
});
billRecord.save();
}
}
// Redirect to the same page after approval
redirect.toSuitelet({
scriptId: '_jj_sl_checkapprov_advaun345', // Replace with your Suitelet script ID
deploymentId: 'customdeploy_jj_ss_bill_print_advaun345' // Replace with your Suitelet deployment ID
});
}
}
return {
onRequest: onRequest
};
});
