Custom Approval On Entity Bank Details

The Electronic Bank Payments is a great, free NetSuite SuiteApp and is often one of the first bundles I recommend installing in new client accounts. The SuiteApp enables companies to speed up their A/P function, notably their payment run process, and can reduce human error when having to duplicate payments in NetSuite and their partnering bank portal. However one of the complaints I regularly have is the lack of controls and segregation of duties around the visible bank details for employees and vendors, and the ability for users to edit the bank details to their own. As of the 2020.1 release, this is still the case.

Back in 2019, me and an old colleague had a chat about the problem and came up with a solution that allowed us to add an approval mechanism around the entity bank details record held on employee and supplier records. When i say ‘we’, I mean ‘he’ came up with a design and the solution and I added the workflow action scripts and helped to test it.

If bank details are created or modified, the entities EFT approval goes into an approval state that requires an elected user(s) to review the change before the new details are made visible and active. To achieve this, the EFT Bill Payment checkbox is utilised. It is checked when approved and unchecked when bank details are added or modified. Of course another solution will need to be utilised if the company stores multiple bank details for entities, but for most implementations I come across, this is sufficient.

To replicate the solution, you need to create two Workflow Action Scripts with the following snippets of code.

function enableEFTBankPayment()
//Enables EFT Bill Payment Checkbox
               var Vendor_ID = nlapiGetFieldValue('custrecord_2663_parent_vendor');
    if (Vendor_ID)
       nlapiSubmitField('vendor', Vendor_ID, 'custentity_2663_payment_method', 'T')
function disableEFTBankPayment()
//Disables EFT Bill Payment Checkbox
               var Vendor_ID = nlapiGetFieldValue('custrecord_2663_parent_vendor');
    if (Vendor_ID)
       nlapiSubmitField('vendor', Vendor_ID, 'custentity_2663_payment_method', 'F')

Navigate to the Entity Bank Details custom record and create a field called Approval Status. We will utilise this for a visual indicator of the status of the bank account details, as well as our saved search for alerts. Use the settings below. The List/Record should be a three status list (Approved, Pending Approval and Rejected).

Create the approval workflow with the following set-up.

State 1 – Submission

State 2 – Pending Approval

State 3 – Rejected

State 4 – Approved

Approval Saved Search

Create a saved search that will show all of the entity bank details, but set the approval status as Pending Approval. This can be used as an email trigger or as a dashboard reminder for the elected approver(s).

Entity Record Modification

Modify the Vendor form to make the EFT Bank Payment field as in-line. This will prevent anyone manually bypassing the approval workflow and marking the field as True to functionally approve their changes to the vendors bank details.

Choosing the Approver

You will have to choose who has the ability to see the Approve and Reject buttons, and this can be done in a couple of different ways. You can either set the user as a condition in the workflow for the Add Button actions, or you can put a checkbox on an employee record that will act as an ‘Approve EFT Bank Detail’ permission. Set this as a condition on the workflow instead, and you will be able to give permissions to employees rather than having to edit the workflow each time you wish to add/remove permissions.

Final Thoughts

This is far from the perfect solution, and I’ll be the first to admit the code is probably not the cleanest. I’m not a developer but it does what I want it to do, it’s functional and it adds a layer of financial control for customers where the solution is a fit; I envisage I will continue to use it on future implementations.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s