SAFIG-7 POS Integration Proposal V 1.0

Proposal summary 

This proposal describes the POS integration to sync invoices from IPOS to NetSuite and create cash sales or cash refunds in NetSuite. 

Requirement 

The client aims to synchronize sales data from their Point of Sale (POS) system to NetSuite. This involves generating cash sales or invoices in NetSuite for the sales transactions recorded in the POS, as well as creating Return Authorization and Credit Memo documents for any sales returns from the POS. Additionally, since the customer plans to expand and open new POS locations, these new locations also need to be seamlessly integrated into the system. 

POS API Prerequisites 

We need the gross amount as the “NetRate” and the tax rate as “Tax” for each item line in the sales data we get from POS API. 

Here the Gross Amount should be (Unit Price * Quantity) + Total Tax Amount ) and Tax percentage is the total tax amount of that item line. 

This gross amount should include all the conversion factors and it should be rounded to 2 decimal points. 

“InvNo”: 10377, 

“SlNo”: 1, 

“Barcode”: “122”, 

“ItemName”: “TEST Item”, 

“Qty”: 1, 

“Rate”: 3.99, 

“Discount”: 0, 

“NetRate”: 3.99, 

“Tax”: 5, 

“PrimaryBarcode”: “600129”, 

“RefNo”: “11669”, 

“Conversion”: 1 

Our Solution 

Custom Record for API Information   

We will create custom record named “POS Configuration” for storing the integration configuration details.  

  • For each location we will create different instances to store details. 
  • The custom record is storing the domain URL, get or post URLs of IPOS, and credentials of IPOS. It will be helpful for the NetSuite user to edit the details such as update in authorization through a custom record in NetSuite.  
  • The Customer value entered in the “Customer” field will be the entity for all cash sales.  
  • The Date fields in Custom records to identify the last sync and last error date of sales and sales return. Based on this the script will fetch the sales data from IPOS. We will disable these fields, otherwise, the user can change the date in fields and the sales data from IPOS may miss due to the incorrect date. 

Error Handling  

For error handling process will create an integration logs record, this record will store the error that occurred during the sales data synchronization.   

The error will be stored in the custom record. Once the error is solved and created the corresponding record, the custom record instance will be deleted. 

Sales Invoice sync 

We will deploy one Map reduce script which is more efficient script.  

For the subsidiary, Aria Neighborhood Supermarket LLC, a cash sale will be created for the sales invoice. In this subsidiary, the customer in the cash will be a static one that we have set in the configuration record. 

 For the subsidiary, SHIRINASAL MIDDLE EAST GENERAL TRADING LLC, an Invoice will be created for the sales invoice from the POS system. In this subsidiary, the customer will be set based on the customer from the POS system. 

After the successful creation of cash sales/Invoices in NetSuite, the script will mark the orders as created in the POS server. 

Sales Return Sync  

When dealing with sales returns from the POS system, the process involves generating a Return Authorization using the existing cash sales or invoice information in NetSuite. Subsequently, a credit memo is produced based on the generated Return Authorization. This process will be applicable across all the established locations in our setup. 

Note: We are replicating the current practice and not creating cash refunds directly. 

Assumptions 

  • We are using IPOS API for sales data integration with NetSuite. 
  • As per our best understanding, the data from IPOS is transferred to a location server, and data from the location server is transferred to the main server. We hope no data is missing from the main server. We are fetching data from the main server using the location Id. 
  • Assume that the customer sync, item sync, and multi-unit sync is already working well, so this proposal will not be considering any of this sync. 
  • Update or deletion of sales invoices and Sales returns in IPOS will not be reflected in NetSuite. The update in invoices like adding a new line, and removing an existing line, and rate change will not reflect in the NetSuite. Also, the update in a cash sale in NetSuite will not reflect in IPOS.  
  • After a cash sale is created in NetSuite successfully, the order in IPOS will be acknowledged. So, the script can’t get the data for that order from IPOS again. So, If the user deleted a cash sale in NetSuite after successful sync, then the user cannot sync the same cash sale again to NetSuite. 
  • The performance of the integrations has a dependence on the number of processors in the account. The scheduled actions will be processed based on the processing queues. So even if the script can be executed as scheduled, it may get even more delay if there is no available queue to process. 
  • This customization is only Applicable to inventory items. 
  • The script will fetch only Server data. 
  • Shipping methods are not considered in sync since no methods are available in the IPOS. 
  • Sending any emails to customers from the script is out of the scope of this development. 
  • Warehouse locations will not include any bin management.  
  • We are not considering the exchange rate of transactions in NetSuite. 
  • We are not considering the unit of measure specified in any records. 
  • We assume that the transaction date from the POS system will always be in currency “AED”. 
  • Intercompany transactions are out of the scope of this development. 
  • We are only replicating the current flow in NetSuite. For sales return, as best practice, we would suggest the use of a cash refund. 
  • Customer data is not synced for Aria Neighbourhood Supermarket LLC 

Risk 

  • Some of the API endpoints will be deprecated/version updates can take place in the future.   
  • If there are any null values in any fields in IPOS, we will be updating the null value itself in the corresponding fields. 
  • Creation or updates of items in the POS system will not be reflected in NetSuite. So, this will be affecting the integration of sales if any creation or update takes place in the POS side. 
  • NetSuite best practice is 500 item lines for one transaction.  If the sales invoice and sales return in the POS system exceed 500 item lines, it may affect the performance. 
  • In the future, if new locations are added, transaction lines will increase, and NetSuite may recommend a tier upgrade in that case as the supermarket business has more transaction lines. 
  • Applicable only to inventory. Not applicable to special Cash Sales, drop-ship, kits, services, item groups, other charges items, or Matrix items. 
  • In the future, if there is any update in tax calculation or any current processes on our NetSuite side, the POS sync needs to be updated accordingly. 
  • We have not considered the exchange case in the scope of this integration as we assume that the negative and positive quantity will not be available in one invoice. 

Leave a comment

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