Proposal For Auto Generated Invoice Enabling for All Subsidiaries

Proposal summary 

This proposal describes the AMVOP would like to build an auto-invoicing process enabled for all subsidiaries with multiple users and roles and restrict the invoice view permission for a selected user and role in the system. 

Requirement 

  1. The auto-invoicing process is enabled for all subsidiaries with multiple users and roles. When the selected users and roles for the auto invoicing process in the subsidiary creates the item fulfilment to the customer, the system should automatically create the invoice related to this item fulfilment with the exact fulfilled quantity. 
  1. Restrict the Selected users (except the administrator and accountant role in all subsidiaries) and the role “Warehouseman” in all subsidiaries access to all invoices upon viewing the record. 

Our Solution 

We will create a custom record to manage the conditions of Subsidiary, user, and Roles. We must create one entry in the custom record for each subsidiary by selecting the Users and Roles that are applicable for auto invoicing and the Invoice view restriction script will refer to the custom record entry based on the item fulfilment subsidiary for validating the User and Role. The corresponding user and role create the item fulfilment, the system automatically creates the invoice related to this item fulfilment. 

Custom Record Creation 

We will be creating a custom record for selecting the users and roles for whom the invoice auto-generation script runs in each subsidiary. 

 The record has the following fields: 

  • Subsidiary 
  • Invoice Automation User 
  • Invoice automation Role  

Note 

  • The custom record should have a single entry per subsidiary. In case there are multiple entries script will consider the latest entry for the corresponding subsidiary. 

Auto Invoicing 

This requirement can be achieved by updating an Auto Invoicing Script in Item Fulfilment. We consider a Real-time Process:  

– For those Item Fulfilments saved with “Shipped” status created by the selected user in the “Invoice Automation User” field with the selected role in the “Invoice Automation Role” corresponding IF subsidiary in the custom record, Script will create an invoice by transforming the SO with matching items and quantities in IF that are shipped (here we should eliminate the lines from SO that are not available in the corresponding IF and it has zero quantity in the created invoice).  

– The script will be triggered in these 3 contexts.  

1. Selected User and Role in corresponding subsidiary creates IF with “Shipped” status.  

2. Selected User and Role in corresponding subsidiary edit and save the IF with “Shipped” status and the previous status of the record is not equal to “Shipped”.  

3. Selected User and Role in corresponding subsidiary on clicking the button “MARK SHIPPED” on record Status in IF changed to “Shipped.  

– We must also add the logic to link the IF to the corresponding Invoice and link of Invoice to the IF (linking of the Invoice to the IF is already in place; this works for manually created Invoices; we need to include this in the auto invoicing script too).  

Note 

  • We are only considering the custom record entry to apply this auto-invoicing to new subsidiaries in the future. 

Restrict Access to Invoice  

– We will update the “Restrict Access” script in the invoice record to restrict the selected users in the custom record (except the administrator and accountant role in all subsidiaries) and the role “Warehouseman” in all subsidiaries access to all invoices upon viewing the record. 

Assumption 

  • We propose a real time Auto Invoicing process. So, for those Sales orders Item Fulfillments & invoices exist in pairs.  
  • While transforming SO into an Invoice we will consider only Assembly and Inventory items.  
  • In the initial development, the auto invoicing script will consider the current subsidiaries and entries in the custom record.   

Risks 

  • There is no system link between an Invoice and an Item Fulfilment. Sales Orders are linked to one or more Item Fulfilments, and one or more Invoices, but as far as NetSuite is concerned there is nothing connecting any specific fulfilment to any specific invoice. In fact, you could have products from multiple fulfilments that are invoiced together, or vice versa, a single fulfilment with multiple invoices. So, we are handling this in the script for the auto generated invoices. The linking will not take place if the user creates the Invoice from UI.  
  • For Other unfulfillable types of items(eg: service item, discount item etc.) as they are not shipped (not included in IF), but on direct invoicing from SO, will include these items; So, on transforming SO it will include all types of items in it. Hence it is risky when partial Fulfilment occurs. Thus, we consider only assembly and inventory-type items and will exclude all other items that are not fulfillable. In case a Service item/discount item arrives in SO it will manually add them to the corresponding auto-generated invoice. So, we must check the item type and rate/amount column other than the order line and quantity here. 
  • In case of deletion of the auto-created invoices user has to edit & save the    corresponding IF to trigger the auto-invoicing script 
  • There could be a performance issue because of evaluating all subsidiary details in the custom record and getting the corresponding user and role details to the script. 
     

Leave a comment

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