Proposal summary
Clients would like to automate their fulfillment process as per the following scope and plan.
Requirement
The ultimate aim is to generate item fulfilment records for sales order from a customized page. The user should be able to filter out the sales orders after specifying some criteria. Users should have the flexibility to mark and unmark the order lines. For the selected sales orders, we have to create item fulfillment records.
Our Solution
Implement a suitelet page in the Netsuite account where the user can generate an item fulfillment record by selecting the sales orders.
We will be creating a navigation to the suitelet from the classic center. The user can navigate to Automation > Generate item fulfillment.Then upon clicking the “Generate item fulfillment”, the suitelet page as shown in the figure will be displayed.
Generate Item Fulfillment page
Generate Item Fulfillment page will contain the following elements:
Notice
A Message at the top of the page will display the number of custom records that have not started and processed and will provide a navigation link to a search results page to see the custom records created.
When a user opens a Bulk page and at the same time if there are any Bulk processes in Queue, a notification message will be displayed at top of the page saying that “x Processes are in Queue. Click <Link> to view the details of the ongoing requests and it’s status”.
If the user clicks the link, then they will redirect to a Custom record search result page which provides the Pending the Tasks and its current status (based on the custom record entities for the previously submitted requests).
This message will display only for 4 seconds and disappear.
Generate Item fulfillment Button
A button will appear at the top of the page and when the user clicks on the button, a custom record entry will be created for further processing.
Cancel Button
Upon clicking the cancel button, the user will be navigated to the home dashboard.
Search Button
When the user enters the selection criteria and presses the search button, the script will run a search of sales orders where the orders have to meet the mentioned criteria. After filtering out the results, the results will be displayed in the list tab of the suitelet page.
Selection Criteria Fields
The user will be able to enter the following fields for the filtering out of search results of the sales orders:
| Generate Item Fulfillment page fields | Internal ID of the Sales Order Fields |
| Customer | Customer ID + company name in the customer record |
| SO No. From | tranid |
| SO No. To | tranid |
| SO Date From | trandate |
| SO Date To | trandate |
| Brand | cseg_brand |
| Model | custbody_model |
| ทะเบียนรถ(Thai) | custbody_licence_plate |
Item fulfillment record fields
Upon clicking the generate item fulfillment button, the item fulfillment records will be created for selected orders. The date field values entered in the form will be used for item fulfillment record creation and it is mandatory for the user to enter the date field value. We will be validating the date field in the format as in sales order (DD/MM/YYYY).
Sales Orders List
This section will display Sales Orders by Selection Criteria entered by use in the “Selection criteria Fields” section. The orders will be sorted by the order line. We will display only the orders with pending fulfillment status and the orders are approved.
Note: We will be using filters in the top of this subtab. The filters available will be page size and page index. Users can define the page size and page index to filter the results and display in this subtab.
Mark All and unmark all button will appear at top be easily select the lines
Fields displayed in the list have been illustrated in the following table.
Field label will be in the corresponding Thai word for some specific fields.
| List fields | Fields in sales order |
| Select(checkbox) | |
| Customer | Customer ID + company name in the customer record |
| SO No | tranid field in the order |
| SO Date | trandate(DD/MM/YYYY) field in the order |
| Item | Item in the items sublist field in the order |
| Description | Description in the items subtab field in the order |
| Units | Units in the items subtab field in the order |
| Quantity | Quantity in the items subtab field in the order |
| Location(Editable dropdown) | Default value will be the location in the sales order |
| Remaining fulfillable quantity | Committed Quantity – fulfilled quantity |
| Fulfill Quantity(Editable field for user) | Default value will be the Remaining fulfilled quantity |
| On Hand | Value from item record for the location selected in the field “Location”Note: This value should be the count in the item record with inventory status as good in the inventory detail subtab in the item record |
| Fulfilled quantity | Order lines that are already fulfilled |
| Invoiced Quantity | Order lines that are already invoiced |
| PO No | Linked purchase order in the order lines in the items subtab |
| PO Date | Trandate in the linked purchase order |
| PO Vendor | Vendor name in the linked purchase order |
| Item Receipt No | Item Receipt No for the linked purchase order |
| Ship To | Label field value in the address book of the customer shipping address |
| ทะเบียนรถ(Thai) | custbody_licence_plate |
| Brand | cseg_brand |
| Model | custbody_model |
| เลขที่เคลม(Thai) | cutbody_claim_no |
| เลขตัวถัง(Thai) | custbody_vin |
Page format design will be similar to the image displayed below.
Generate fulfillment page validations
Restrict the generation of the item fulfilment record if the following conditions are not satisfied
- If Fulfill Quantity is greater than Quantity, notify the user that the “Fulfill Quantity does not allow greater than Remaining Qty”
- If quantity greater than on hand quantity, notify the user that “Fulfill Quantity does not allow greater than On Hand”
- User have to enter the Mandatory fields
- User entry to the date field will be validated to check the date format and popup alert will be displayed
Custom record set up
The user needs to mark the checkbox near to the sales orders. When the user clicks the “Generate item fulfillment” records, corresponding Custom records will be created in the Netsuite. An entry in the custom record will be created with the data from the suitelet page(sales orders and item details) after the user clicks on the “Generate item fulfillment” button We will be implementing a customized field “Generate item fulfillment status”, in the custom record to indicate whether all item fulfillments have been created for the custom record or not.
The scheduled script will be creating item fulfillment records for the sales order lines selected in the “Generate fulfillment page”. In each custom record, the sales order number will be grouped together and saved in one object in the post action of the suitelet.
Note: Even if the Item Fulfillment from a Sales Order is failed, the process will continue to create Item Fulfillment for other Sales Orders in the selected list
Processed Records Status Page
We can navigate the user to a search results page where the user can see with fields Submission ID, Status, and Related Transactions
- Submission ID: Custom record Number
- Related Transactions: A link to navigate to another search to view the Submitted SOs and
- Statuses are as follows:
- Not started
- Processing
- Completed
We will be creating child records for all custom records created in such a way that the child records will be created for each sales order selected in one generation and their item fulfillment record will be added to the child record. So the user who is viewing the custom record can navigate to the sales order and item fulfilment records created for each parent custom record.
Along with results published in this page, we will be providing a link to navigate to child records created for each custom record.
Email notification
We will be creating a custom field, “error for item fulfilment record creation”, in the custom record. If there is any error generated while running the script on the custom record, the field will be updated by the error message. Then it will be notified to the user who submits the “Generate item fulfillment” button in the suitelet page via email. For email notification, we will be implementing a saved search in the error field of the custom record.
Item fulfillment record creation
Item fulfillment record details
Following are the points we will be considering while creating the item fulfilment record:
- Location and fulfilled quantity field values should be taken from the suitelet custom form page for item fulfillment record creation
- Document number will be auto generated by Netsuite
- Date field value will be the value entered in the “Generate Item Fulfillment” page
- Every other fields should be the same as that in the sales order record
- Status will be always the same as “Shipped”
- Inventory value in each line will be always static as “Good” and entered in the line level inventory detail subrecord
- Main category field in the line item will be always the Item Process Family of Item
Assumptions
- The Sales Order can be created in UI or CSV uploaded.
- Applicable only to the sales order record type only and not the transfer orders
- Applicable only for those warehouse locations where there is no bin management and thus no inventory detail configurations required
- Applicable only to inventory items and special order items and not applicable to Lot numbered, serialized inventory items, item groups, kit items, discount items, gift certificates, service items
- No restrictions related to Subsidiaries or locations or even roles
- The date format set in the account is DD/MM/YYYY
- There is no restriction to the user roles who have access to the “Generate Item Fulfillment” page
- We assume that the standard functionality to create the bulk fulfillment has been considered and that functionality cannot meet the partial fulfillment requirements
- Brand is a custom segment used in the body level only
- Fulfillments can be shipped from only one location when using Multi-Location Inventory
- The “Fulfilment based on commitment” accounting preference is set to “Limit to committed” and the “remaining fulfillable quantity” will be updated by the difference of the committed quantity and fulfilled quantity
- If the same item is repeated multiple times, the on-hand quantity remains the same for the already selected item. If the user chooses the same items multiple times, it is the responsibility of the user to consider the previously chosen item quantity rather than always looking at the On-hand quantity
- The status of the processes will be provided to the user by saved searches of the custom records
Risks
- The NetSuite will enforce concurrency limits on Suitelet.
- The failure during the fulfillment creation process is notified to the user via email.
So users have to review the same and reprocess the failed one again. - The submitted sales order will be stored in the custom record after the “Generate Item fulfillment” button is clicked. If the user immediately opens the suitelet page and applies the criteria to display the order list, previously selected sales orders will be listed (since the Item Fulfillment is created via a scheduled process). It is the responsibility of the user to select the orders accordingly and make sure that the previously selected sales orders will not be repeatedly selected. Previously chosen Sales Order Item lines will be removed from the list only when Item Fulfillment is created for the same by the scheduled script.
Time
Estimated Effort : 38 hrs