Proposal summary
This proposal describes Transport Management System Integration.
Requirement
The sales rep, Truck drivers, and credit control team is manually managing the customer payments currently.
The client would like to implement a solution to manage the customer payments collected by Truck drivers, sales reps, or credit control team in the NetSuite as follows:
- Need to create a page to enter the payment details by Truck drivers, sales reps, or credit control team.
- The Page will show the following data based on the subsidiary:
- Customer
- Invoice
- Payment type
- Date
- Amount
- Once the user enters the data and submits the page, a custom record will be created in NetSuite.
- The user must view the PDF and send the receipt to the customer by email.
- Approval process will be added to the custom record for the accounting team.
- Once the Accounting team approves the custom record, the customer payment needs to be created in NetSuite for invoice and GL should be posted.
Prerequisites:
- We need the mock-up of the receipt PDF to create the PDF.
- Provide the roles to set as approvers for the custom record.
Deliverables
We have included the details for implementing the solution to manage customer payments automatically as below.
Collector Authentication details:
We will create a custom record to hold the collector credentials. The custom record will contain the following fields:
- Name: Name of the user
- Email address: The email address (username) of the user can be entered in this field.
- Password: The password of the login access can be entered in encrypted format in this field.
- Subsidiary: The subsidiary of the invoice.
The users can use the credentials in this custom record to login to the custom page to make the customer payment.
Invoice Assignment:
Each invoice can be assigned to specific users to collect the customer payment. We can select the user in the custom field in invoice when creating/updating the invoice record. The users in the custom field will be filtered based on the subsidiary. The invoices in the custom page will be filtered based on this invoice assignment.
Login page:
We will provide a login page to log in for the users (sales rep, Truck drivers, and credit control team) to the custom page.
- The username will be the email address in the User Authentication custom record.
- By using Custom encryption, the credentials were encrypted and then stored in the password field and the timestamp (Time of customer creation) will store in the “timestamp” in the User Authentication custom record.
- Initially, we will add a test password in the User Authentication custom record for the initial phase. And users can reset the password through the Reset page.

Reset page:

- When the user forgets the password then clicks the reset password button to reset the password
- After entering the valid E-mail click the reset button then by that email search for the user and taken details (internal id, username, email id).
- Creating a token for setting duration for the password reset link (approximately 10 min).
- The password reset link with the token will send to the user.
- When the user clicks the link, a page will show for creating a new password.
- After entering the password it’ll be updated in the respective User Authentication custom record.
The user can log in if the entered credentials and credentials in the User Authentication custom record are identical. Once logged in after authentication, the user is navigated to the homepage.
Home page
All assigned open invoices, the remaining invoice amount and related customers will list on this page.
The following fields will be added to the home page:
- Customer: A field will list all customers from the assigned invoices of the user from NetSuite. Users can select the customer in the field. Once the user select the customer, all assigned invoices under this customer will list in the page.
- Invoice: A field will list all assigned invoices of the user from NetSuite. Users can select the invoice in the field. Once the user select the invoice in this field, the invoice will be filtered.

Once the user clicks the invoice in this page, user navigate to the customer payment page to do the payment.
Customer payment page:
On this page, the following fields will be added:
- Customer: Customer name will be auto-populate in this field
- Customer email address: The customer’s email address from NetSuite will be auto populated in this field.
- Billing address: The billing address of the customer will auto-populate in the custom page.
- Invoice: The NetSuite invoice document number will auto-populate in this field
- Invoice Amount: The remaining invoice amount will auto-populate in this field.
- Paying Amount: The user can enter the customer paying amount against each invoice.
- Payment type: The user will have the following payment types to select.
- Cash
- PDC
- Card
- Bank: The user must enter the value in this field if the payment type selected is PDC or card.
- Currency: The customer’s primary currency will be set by default.
- Additional Payment: if the customer wants to pay an additional amount rather than the invoice amount, the amount can be entered here.
- Total Amount: The total amount that the customer paid will automatically be populated based on the amount paid for invoices and additional payment.

- “Make Payment” Button: The user can click this button, after entering the values in these fields. Once the user clicks the button, the custom record will be created in NetSuite for invoices with provided details. And navigate to Error/Success page.
Error page:
If the script fails to create the NetSuite’s custom record, the user navigates to the error page.
Success page:
If the process is successful, navigate to the success page. On the success page, Print Receipt and Email Receipt buttons will be displayed.

Receipt Print:
By clicking on Print Receiptbutton in success page, the user can view the receipt of the payment and the user can download the print. We will create the PDF once we got the mock-up of the same.
Sending receipt to Customer:
By clicking on Email Receipt button, the user can send the PDF of receipt to the customer’s email address as an email.
Custom record for customer Payment:
We will create a custom record in NetSuite for storing the customer payment details of sales reps, Truck drivers, and credit control team entered in the custom page.
Fields are:
- Collector: The user who collected the payment
- Subsidiary: The Subsidiary of the employee
- Date: Date of payment done
- Customer: NetSuite customer who made the payment
- Payment type: Payment type is chosen on the custom page.
- Currency: Currency of invoice
- Bank: Bank from the custom page
- Invoice: Invoice selected on the custom page
- Invoice Amount: Amount paid for the invoice.
- Total Payment Amount: Total amount customer paid.
Approval process
We will add the one level approval process to the custom record.
- Once the custom record is created by the script, the custom record will enter the approval process.
- The administrator and specific roles can view the Approve and Reject buttons.
- Approve Process:
- Once the user clicks the Approve button, the custom record will be approved, and the custom status field in the custom record will change to Approved.
- And the script will create the customer payment in NetSuite.
- Reject Process:
- Users have the option to reject the custom record by clicking the Reject Button.
- Once the user clicks the reject button, a popup will show to enter the rejection reason.
- Once the Users enter the reject reason and submit the page, the custom record will be rejected, and the rejection reason will be set in the custom record.
- After rejecting the custom record, the Users (specific roles) can again submit the custom record to the approval process by clicking the “Resubmit for approval” button.
- After clicking the “Resubmit for approval” button, the user can again Approve or Reject the custom record.
Customer Payment
The script will create the customer payment with field mapping as below:
| NetSuite field | Value |
| Customer | Customer in the custom record |
| Payment Amount | Total Payment Amount from the custom record |
| Currency | Currency of invoice |
| Date | Default value: date created |
| Undeposited funds | checked |
| Subsidiary | Subsidiary from the custom record |
The values in the remaining fields in the customer payment will be automatically populated by default.
The selected invoices and amounts from the custom page will be applied to the customer payment.
Assumptions
- We are considering one-level approval for the custom record for customer payment.
- We are not considering any payment options to pay for customers like PayPal or credit card. Bank transfer in this scope.
- Users can make the payment only in the invoice’s currency.
- The Estimate time can be varied based on the Receipt PDF layout complexities if any.
- Only the body fields of invoices such as document number, amount and currency will show on the custom page.
- If the sales order has a customer deposit, and when the invoice is created, the invoice will automatically apply to that customer deposit.
- We will display only invoices with Pending billing/partially billed status.
- This functionality will work for all subsidiaries.
- We have added the mock-up of the custom pages. The design of the custom pages will be confirmed in the development stage.
- The font size, style, and page layout of the recipient pdf will be confirmed in the development stage.
- We will use the suite lets for developing the custom pages. And not using the webapps and middleware.
Risk
- If the user rejected the custom record multiple times, only the latest rejection reason will be set in the custom record. To improve the performance, we are not storing multiple rejection reasons in the custom record.
- We are not considering standalone customer deposits and credit memos.
- We will ignore the mandatory fields receipt number (reference), sales rep name, and collector in customer payment.
- If there is any NetSuite downtime due to unforeseen circumstances, this functionality will not work.
Future scope
- Checkout integration can be included in the custom page for the payment.