Proposal Summary
This proposal presents a solution for restructuring the accounting process for Pre-Orders and Advance Auto Invoicing before fulfilment. The proposed process involves generating automatic invoices for pre-ordered quantities before fulfilment and for committed quantities post-fulfilment. Notably, invoices for back-ordered quantities will be associated with the Deferred Revenue 23010 account, facilitated by a custom GL plugin.
Requirement
Currently, Olsa Tools exclusively accepts orders for products that are in stock. However, there is a strategic shift towards accepting pre-orders for Inventory items anticipated to be available in upcoming months. In this scenario, Olsa Tools aims to receive pre-orders from customers and collect payments prior to item fulfillment. Consequently, Olsa Tools seeks to automate invoicing for pre-orders before fulfillment and reconfigure their accounting setup for pre-orders (backorders) as follows:
Deliverables
Prerequisites
· Ensure that the “Invoice in Advance of Fulfillment” and “ Show Unfulfilled Items on Invoices” preference is enabled within the Accounting Preferences. This preference is already active in the production account.
· Enable the “Custom GL Lines” feature in the SuiteCloud Enable Features section. This feature is necessary to utilize the Custom GL plugins for adding the “Deferred Revenue account to Invoices”. Additionally, ensure that the “Custom Transactions” feature is enabled to facilitate the creation of Journals for Pre-Order Fulfillment.
Pre Orders
We’ll recognize pre-orders through the “Pre-Sold” checkbox and the presence of back-ordered quantities at the line level. If any backorders exist, the “Pre-Sold” checkbox will be automatically ticked by Pipe17. Pre-orders are restricted to standard inventory items only, excluding kit items and their components. We won’t accommodate partial scenarios for pre-orders. Pre-orders will be accepted only when the available quantity is zero. In case of a partial scenario, two separate orders will be generated: one for pre-order and another for a regular order from Pipe17.
We’ll introduce new scripting on the Sales Order save to generate invoices for pre-orders. This script will only trigger under the following conditions:
· Sales Order status should be “Pending Fulfillment”.
· The “Pre-Sold” checkbox on the item line should be checked.
· Only inventory items (Item Type = Inventory and Decomposed From Kit = False) are eligible.
· Invoiced Quantity should not equal Ordered Quantity.
· Invoiced Quantity should be less than Back Ordered Quantity.
“The quantity will be invoiced is Ordered Qty”
We’ll create a new checkbox field on the Invoice record named “Pre-Order Invoice”, which will be checked when creating invoices for pre-order items (from the Sales Order Script).
If the Invoice is not auto-applied to the deposit record then we will apply it to the deposit record scheduled basis.
GL Plugin for Changing Amount to Deferred Revenue
During the pre-order process, the Invoice’s GL credit should go to “Deferred Revenue 23010”. However, we can’t directly credit the “Deferred Revenue 23010” account. By default, the amount is credited to the “Default Income account” (Revenue 40010) while creating the Invoice.
To redirect the credit amount from the “Revenue 40010” to the “Deferred Revenue 23010” account, we’ll create a new GL plugin for the Invoice record. This plugin will only trigger when the “Pre-Order Invoice” field is checked. Two custom GL lines will be added: one to debit the amount from the “Revenue 40010” account and another to credit the amount to “Deferred Revenue 23010”.
Normal Orders
We have an existing script named “Olsa UE AS Create Invoice for IFs” that currently handles creating invoices for normal orders. We’ll update this script to be flexible for both normal and pre-orders.
In the Item Fulfillment save, the script will trigger under the following conditions:
· As per the existing condition, check whether the already invoice is created for the same IF using the custom field “custbody_olsa_created_invoice”. If not proceed further.
· Invoiced Qty should be not equal to Ordered Qty.
The quantity that will be invoiced is “Fulfilled Qty”.
For sales orders with kit main item lines, they’ll be closed once the full quantity is invoiced to prevent open orders. Additionally, the “Closed After Invoice” checkbox will be checked when closing the sales order kit item line, as per existing functionality.
Pre- Order Fulfillment
Once a pre-order item is fulfilled, we need to transfer the amount from the “Deferred Revenue 23010” to the “Revenue 40010” account. To accomplish this, we’ll utilize the same script deployed on Item Fulfillment save.
If fulfilment is created and no invoice is generated for the item quantity, a Custom Transaction with a Journal Type named “Pre-Order Fulfillment” will be created to transfer the amount from the “Deferred Revenue 23010” to the “Revenue 40010” account. The amount will be fetched from the invoice GL lines using a search.
Assumptions
- Only inventory items and kit items will be present on the sales orders.
- Pre-orders are exclusive to inventory items, excluding kits and their components.
- If the “Pre-Sold” checkbox is checked, it will be considered a pre-order even if quantity is available.
- No partial scenarios will be allowed for pre-orders. Pre-orders will only be accepted when the available quantity is zero. This will be handled from your end.
- In case of a partial scenario, two separate orders will be generated by your team: one for pre-order and one for regular order.
- Sales orders will not be edited once their status changes from “Pending Fulfillment”.
- Item Fulfillment item lines will not be updated after creation.
- In the Transactions view, both kits and components will be displayed separately, distinguished by custom fields (“custcol_olsa_decomposed_from_kit” and “custcol_olsa_original_kit”).
- Fulfilment will only be done for normal inventory items and kit components; kit main items will not be fulfilled.
- The kit components’ amount on the invoice will always be zero.
- Upon invoicing the full quantity for the kit’s main item, the corresponding sales order line will be closed.
- Shipping costs and tax amounts will be credited/debited to separate accounts as per the setup in NetSuite.
- Item quantities’ unit of measure (UOM) will always be “Each”.
- Item line amounts will be calculated based on the rate multiplied by quantity.
- Manual transfer of funds from the bank to Undeposited Funds (Cash) will not be considered in the automation process.
- Making copies of the invoice will not be utilized, so there’s no need to clear the value of the “Pre-Order Invoice” field on copy creation.
Notes
- Development will occur on the Release Preview account to avoid disruption to business processes. After testing and confirmation by your team, the customizations will be moved to the Production account.
- The dates for invoices and journal entries will be set to the current date when the script is executed. The accounting period will also be the current period.
Risks
- There is a risk of double invoicing if both Sales order and Invoice scripts are triggered simultaneously for the same Sales order. This issue seems to align with an existing problem in the current process. Real-time automation may not mitigate this risk. Scheduled processes could be explored to address this rare scenario.
- Due to the complexity of the customization, further concerns or risks may arise during the Development phase that were not identified during the analysis phase. These will be addressed as they arise.
Questions
- Can you specify which particular items are prone to the double invoicing issue you mentioned?
- The current solution operates in real-time, which may lead to items being either not invoiced or double invoiced due to concurrency issues. To address this, we can explore the possibilities of scheduled processes. What are your thoughts on this approach?