Keeping Track of Period Cutoff Timelines

This was the one of the first projects I was involved. Looking back, I would do couple of things differently, especially the coding. It is a good example why we should benefit a library like moment.js instead of struggling with dates with native JavaScript functionalities.

The idea started with having period cutoff times hard-coded in the integration platform. Company is using an purchase tool and the transactions are being synced to NetSuite periodically. Before syncing a Vendor Bill to NetSuite, platform is checking the Accrual Cutoff Time for the current period. If it is passed already, transaction is posted to the next period.

It means, whenever a new Accounting Period is created in NetSuite, Accrual Cutoff Time must be evaluated and data must be entered to the Integration Platform. This includes Internal ID of the Next Accounting Period as well. In case there will be a change on the cutoff date / time, Integration Platform Admin must be informed and data must be updated.

Reviewing the requirement, I decided to convert this process into a NetSuite Customization which would automate the creation of the Period Cutoff Schedules. This would prevent hard-coding of the data within the Integration Platform while giving flexibility to the user to sign-off the preset cutoff times or change without any notification or further Admin involvement.

Start point of the project was to create a Custom Record that will hold the data. NSE Period Cutoff Schedule have been created for this purpose. While holding the required data for the Integration Platform (Accrual Cutoff Time, Next Accounting Period), we added InterCompany Cutoff Time and Period Hard Close times as informational fields to this record. This would address the continuous query from NetSuite users during each month end period to learn the current Period Cutoff Schedule.

To automate the creation of the Period Cutoff Schedule records, I developed a Scheduled Script. Cutoff dates and times are hardcoded in the script based on the requirement of our company. It is scheduled to run monthly but the script deployment can also be changed to Not Scheduled and triggered by the user. While it is coded pretty straightforward, it does the job. With my current knowledge, I would create this script from scratch.

One requirement was to give the FP&A user ability to change the cutoff times in case required. This was required if there is a regional public holiday during period end dates. To prevent other users interacting with the record and also to keep the track of the FP&A user interaction, I created a basic Workflow that controls and updates the record when necessary. FP&A user is able to update the upcoming Period Cutoff Schedules or sign-off the preset timelines. Role that is allowed to change the Period Cutoff Schedule can be set on the Workflow field. When a record is signed-off or the related Accounting Period is already started, only Administrator can change the data on the record.

Purpose of the User Event Script is to validate the data entered by the FP&A user in case there is a change on the cutoff times. It does cover only the essential part for the integration.

On top of these customizations, NSE Period Cutoff Schedules saved search is created for the NetSuite users to review the period end timelines. Users can add this saved search to their dashboard and see the timelines for the previous and next accounting periods as well.

From the technical design perspective, this is not a project I would be proud of. But still, it is lightweight and works without problems. Source code and SDF Project (SuiteCloud Development Framework) data is available on our GitHub page.

We would like to hear your opinion if you liked this solution or if you discover something missing, something not working properly, a better option, weird coding. If you have any comments on this solution, please use the section below. For any other communication, please use the form on the Contact Us page.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.