SUITE LET TO APPROVE THE BILL PAYMENTS

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

Leave a comment

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