Netsuite-Papier Integration

Proposal summary

The proposal summarizes the integration between Papier and Netsuite for item, order, customer deposit, item fulfillment and RMA.

Requirement

Implement the Papier-netsuite interaction . Papier is integration into the client’s website.

Prerequisites

  • API JSON structure from Papier
  • Access to Netsuite
  • Test data

Our Solution

We are developing the Restlet APIs for the Papier – Netsuite  integration requirement for sending details from Papier to Netsuite. Papier can initiate the Restlets URL (API) from your end with necessary details, which will invoke the Restlet script in Netsuite and return the necessary details as a response in JSON format.

For authentication between Netsuite and the Papier we are using the TBA(OAUth 1.0) authentication. Detailed explanation for the authentication details including how to create the signature are added in the document below.

Signature Construction – TBA using OAuth 1.0 – Papier

1)Items

Whenever the item is created/updated/deleted in Netsuite and if it needs to sync with website (there will be a flag to mark whether this item is for the website or not), we will send item details to the Papier. Papier should provide us with the APIs to post the details from Netsuite.

Item types, need integration are as follows.

  • Assembly
  • Inventory
  • Discounts
  • Other Charges

Note: Shipping item is not scriptable. So we cannot integrate this using script.

2)Orders

Papier will send the order details in the JSON format to the Netsuite using the Restlet API.  Instead of real time Restlet invocation(whenever the order is created in papier), the order details can be sent as batches in some specific intervals  to avoid the concurrency issue. Once the Restlet API with order details is invoked, then we will fetch the details and we create a sales order and customer deposit in Netsuite. In order to create the customer deposit using the script from the sales order, we will be using the form “Standard Sales Order – Invoice” for sales order.

We will maintain a custom record in Netsuite to store the order data that we received from Papier. In case of any failure, we will store the failed data with reason in this custom record.

We will provide the field mapping with mandatory fields for creating orders and customer deposits in Netsuite. Which will include the following specification and requires some inputs , confirmation from papier as well.

Sales order:

  • One dummy customer per store/website us used
  • Users will Manually update tax nexus in case of any additional changes.
  • UK – prices inclusive of tax and  US – prices exclusive. This will be  calculated on the website and will be passed to Netsuite upon the order creation API call.
  • Capture the original order number in a custom field
  • Standard discount functionality will be used – header/line
  • Shipping is calculated on the website and passed to Netsuite – either a shipping item or other charge line
  • As a response we will be sending the created SO and customer deposit Ids

Customer deposit:

The customer deposit will be auto linked with the sales orders. And we will set  the reference number of the payment into the Netsuite field P/N REF.

  • Payment Methods can be Stripe, Paypal Store or Credit(Gift Card). We are assuming that payment method validation for these methods will be handled from the Papier side, but not from the Netsuite side.

Work order and invoice will be created manually using standard functionality. Whenever the user creates the invoice manually, customer deposit will be automatically applied with the invoice.

3)Cancel order

For canceling the work order we have to create the “Work order close” record. But this record is not scriptable and thus we cannot automate this using script. So the user may have to manually close the work order in the following ways before closing the sales order.

  • Using close button in the work order
  • Transactions > Manufacturing > Close Work Orders.

 

4)Item fulfillment

Papier will send the fulfillment details in the JSON format to the Netsuite using the Restlet API.  Instead of real time Restlet invocation(whenever the shipping initiated in papier), the fulfillment details can be sent as batches in some specific intervals  to avoid the concurrency issue. Once the Restlet API with fulfillment details is invoked, then we will fetch the details and we create a fulfillment record in Netsuite. We will be creating the fulfillment with status shipped. We assume that there can be partial(multiple) shipments. fulfillment  should contain a unique identifier to link with the sales order.

We will maintain a custom record in Netsuite to store the fulfillment data that we received from Papier. In case of any failure, we will store the failed data with reason in this custom record.

We will provide the field mapping with mandatory fields for creating item fulfillment in Netsuite. Which will include the following specification and requires  some inputs , confirmation from papier.

  • We will update inventory detail in item fulfillment during creation
  • Papier to check if tracking numbers need to be captured in Netsuite

Note: In the normal business process, if we are maintaining inventory in the Netsuite end, then the item fulfillment will be created from Netsuite, and which will change the status in the website accordingly. But in the proposed solution as per the proposal, the item fulfillment is created in Netsuite based on the request from Papier only.

 

5)Refund

Papier will send the refund details in the JSON format to the Netsuite using the Restlet API.  Instead of real time Restlet invocation(whenever the refund is initiated in papier), the refund details can be sent as batches in some specific intervals  to avoid the concurrency issue. Once the Restlet API with refund details is invoked, then we will fetch the details and we create a return authorization (RMA) record in Netsuite. We are assuming that there can be full and partial refunds. So we are creating the RMA for the given items in the Papier request. We assume that we are not restocking the item back into Netsuite.

We will maintain a custom record in Netsuite to store the refund data that we received from Papier. In case of any failure, we will store the failed data with reason in this custom record.

We will provide the field mapping with mandatory fields for creating RMA in Netsuite.

 

Assumptions

  • All the Input and output requests through the Restlet API should be in JSON format.
  • We assumed that payment method validation for  Stripe, Paypal Store or Credit(Gift Card) will be handled from the paper side, but not from the Netsuite side.
  • In case of any serial or lot number inventory item, the inventory details in the Papier request should match with the inventory details in the Netsuite for the successful creation of the item fulfillment.
  • The request from Papier to create the sales order, customer deposit,item fulfillment, RMA in Netsuite should contain the Mandatory field in the request based on the Netsuite mandatory fields.

Out of scope

  • Customer sync- Creation, updation, deletion
  • Sales order – updation, deletion (Scope includes creation only)
  • Customer deposit – updation, deletion (Scope includes creation only)
  • Item fulfillment – updation, deletion  (Scope includes creation only)
  • RMA – updation, deletion  (Scope includes creation only)
  • Inventory sync of the item

Risks

  • In case of any failure for the record to be created in Netsuite(due to invalid details, missing mandatory fields etc), we will store the failed data with reason in the custom records. We will not consider the failed requests again for re-processing.

 

Time

100-110 hours

Leave a comment

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