How to Close Partially Received Inbound Shipments in NetSuite

in , , January 6th, 2025
An aerial view of a parking lot with cars parked in it

Inbound shipments provide visibility of in-transit inventory and the status of a shipment. Items from multiple purchase orders can be assigned to an incoming shipment and bulk received and billed from within the record.

Filling a Gap in Inbound Shipment Functionality

A massive gap in Inbound Shipment functionality is the inability to close a partially received inbound shipment, which also prevents the partially received purchase orders included in the inbound shipment from being closed. In addition, when a purchase order item line is linked to an inbound shipment record, NetSuite severely limits the user’s ability to edit the line, so no adjustment can be made to the line quantity after a partial receipt has been recorded.

Write a User Event script that will add a button, labelled “Close Remaining Items”, to the Inbound Shipment record that, when clicked, will do the following:

Receive the Remainder of the Inbound Shipment

The goal is to set the received quantity to match the ordered quantity and remove landed costs from the new item receipts.

Since these item receipts are not representative of physical reality, we need to remove the landed costs from them, which then removes excess cost being added to the items in the receipt (since those items weren’t physically received, the landed costs should not be assigned to them).

Create an object in which the landed cost per item will be stored for use later in the creation of the journal entry:

  • Item
  • Cost Category
  • Amount (be sure to account for currency conversion)
  • Remove the landed cost from each item line in the new item receipts.

Bill from the Item Receipts

For each item receipt created in this process, create a Vendor Bill and zero out the amounts for each line item so the total for the Vendor Bill is $0 (zero).

Create an Inventory Adjustment Transaction

Set the Adjustment Account (field id: account) to Accrued Purchases (internal id: 112).

Calculate the total quantity received per item per location in the script-generated item receipts and negatively adjust the inventory of each item by that quantity.

For example, if the receipt in this situation was:

  • Item A | Quantity 28
  • Item B | Quantity 14

Then, the Inventory Adjustment should be:

  • Item A | Quantity -28
  • Item B | Quantity -14

Journal Entry to Move Landed Costs to the Correct Account

Next, create a journal entry to move landed costs to the appropriate account.

  • Landed costs are stored in the landed cost sublist.
  • There can be multiple lines of landed costs.
  • Landed costs have an associated cost category, and each cost category is associated with a specific expense account. See Accounting Lists > Type = Cost Category.
  • Currently, the company from this example is only using the Inbound Shipping Expense cost category, however that could change in the future and there can be multiple landed costs associated with an Inbound Shipment which all share the same cost category (see INBSHIP8, INBSHIP11, and INBSHIP84).
  • Landed cost lines contain an amount, currency, and exchange rate, so currency conversion will need to be accounted for (see INBSHIP84 for an example with multiple currencies).
  • Each item line in the inbound shipment record has a field which stores the unit landed cost (item.unitlandedcost). Maybe this isn’t needed if you have the data stored off from the item receipts as noted above.
  • Create a parameter where we can specify to which account these landed costs should be moved.

After the Button has been Clicked, do the Following

  • Show a warning pop-up that explains what’s going to happen and requires the user to either Accept & Continue or Cancel.
  • Message: This action will close all remaining lines. Undoing this action requires significant manual effort. Are you sure you wish to proceed?
  • Hide the button, or at least preventing the script from kicking off multiple times if the button is clicked multiple times.
  • Limit the button to only show for the correct role, likely an Inventory Manager.
  • Create a custom checkbox field called “Created by Script” and set the field to true on the item receipt, bill, and inventory adjustment records created in this process.

Author: Jordan Spinharney

Got stuck on a step in this article?

We like to update our blogs and articles to make sure they help resolve any troubleshooting difficulties you are having. Sometimes, there is a related feature to enable or a field to fill out that we miss during the instructions. If this article didn't resolve the issue, please use the chat and let us know so that we can update this article!


FREE SuiteCommerce Book

If you liked this article, you'll LOVE our book on SuiteCommerce! Order the free SuiteCommerce book today, and we'll even pay for shipping!

Oracle NetSuite Alliance Partner & Commerce Partner

If you have general questions about SuiteCommerce or more specific questions about how our team can support your business as you implement NetSuite or SuiteCommerce, feel free to contact us anytime. Anchor Group is a certified Oracle NetSuite Alliance Partner and Commerce Partner equipped to handle all kinds of NetSuite and SuiteCommerce projects, large or small!

We are a premium SuiteCommerce agency that creates powerful customer portals. Unlike our competitors, we have already solved your problems.


 
 

Want to keep learning?

Our team of NetSuite and ecommerce professionals has written articles on a wide variety of topics, from step-by-step tutorials, to solution recommendations, available support services, and more!

Your cart