VERSICH

NetSuite On Order Column for Purchase Orders That Stays Accurate

netsuite on order column for purchase orders that stays accurate

Adding an On Order column to NetSuite purchase orders sounds like a simple form customization, but the important question is what “on order” should mean. It could refer to the quantity on the current purchase order, the total quantity open across all purchase orders, or the quantity expected from a specific vendor or location.

For most purchasing teams, the most useful definition is the open quantity expected for the item, calculated from approved or partially received purchase orders and reduced as item receipts are posted. That value is dynamic, so adding a permanently accurate column to a NetSuite Purchase Order requires more than dragging a field onto a form.

The reliable way to add an On Order column to NetSuite purchase orders is to define the calculation first, then choose between a saved search, a custom transaction line field, or SuiteScript 2.1. A saved search is best for reviewing open purchase-order supply, while a custom column populated by SuiteScript is the better choice when the value must appear directly on the purchase order form or PDF. Native form customization alone is not enough to calculate a live, cross-transaction On Order quantity.

What should “On Order” mean in NetSuite?

Before configuring NetSuite, we recommend writing the business definition in one sentence. This avoids creating a column that looks useful but measures the wrong quantity.

A practical definition is:

> On Order = the remaining quantity on relevant open purchase order lines for the same item, subject to the required subsidiary, location, vendor, status, and expected receipt rules.

That calculation has several moving parts:

  • Ordered quantity, taken from the purchase order line.

  • Received quantity, taken from item receipts or the related transaction status.

  • Remaining quantity, calculated as ordered quantity minus received quantity.

  • Transaction status, which determines whether the PO is still supplying inventory.

  • Location and subsidiary, which prevent supply from one inventory pool being shown against another.

  • Vendor or currency filters, if the business wants a supplier-specific view.

For example, a purchase order line for 100 units with 40 units received should contribute 60 units to the open On Order total. If the purchase order is closed, canceled, or fully received, it should contribute zero.

This is different from the quantity on the current PO line. A line-level quantity of 100 tells the buyer what this transaction requests. An aggregate On Order value tells the buyer how much supply is already expected from all relevant open POs.

NetSuite also displays related inventory concepts such as Available, Committed, Back Ordered, and On Hand. These fields are not interchangeable. The correct calculation depends on whether the goal is purchasing visibility, inventory planning, fulfillment, or a printed vendor document.

Why a standard custom column does not provide a live total

A NetSuite custom transaction column can display a value on a purchase order, but the field itself does not automatically calculate a total across other purchase orders.

A custom column can generally do one of three things:

  1. Store a manually entered value.

  2. Display a value sourced from a related record or item field.

  3. Receive a value populated by automation, such as a workflow or script.

The third option is required when the column must reflect changing transaction data. An item’s open purchase-order quantity changes when someone creates another PO, edits an existing PO, receives inventory, closes a line, changes the location, or updates the transaction status.

That timing issue is the main reason a simple sourced field is not sufficient. A field sourced from the item record might show a current item-level value, but it does not necessarily reproduce the exact business definition required for a particular purchase order. It may also fail to respect the PO’s subsidiary, location, vendor, or transaction-date context.

A live search result and a stored transaction value are also different things:

  • A saved search calculates results when the search runs.

  • A stored custom column shows the value saved on the transaction.

  • A scripted field can calculate or refresh the stored value at selected events.

  • A workflow can set values under defined conditions, but it is not ideal for complex aggregate calculations.

This distinction should guide the design before anyone modifies the purchase order form.

Which method is best for an On Order column in NetSuite?

The best method depends on where the buyer needs the information and how current it must be.

RequirementBest-fit methodWhy
Review total open supply by itemTransaction saved searchDynamic results without storing values on every PO
Show a related item value on the PO formSourced custom columnFast configuration for simple, non-aggregated data
Print an On Order value on each POCustom column plus automationSupports transaction and PDF presentation
Apply location, subsidiary, and status logicSuiteScript 2.1 or carefully designed searchProvides stronger control over filters and calculations
Alert buyers when open supply exceeds a thresholdSaved search alert or workflowBetter suited to exception management than document display
Give buyers an interactive supply viewWorkbook or dashboardAllows grouping, filtering, and drill-down

Our general recommendation is to avoid putting a dynamic aggregate on the printed purchase order unless there is a clear operational reason. A vendor-facing PO should primarily communicate what that vendor must supply. A purchasing dashboard or saved search is normally a better place to show total open supply across all vendors.

If the column is needed for an internal approval form, buyer review, or customized PDF, a scripted custom column is appropriate.

How to add an On Order column to NetSuite purchase orders

The implementation should follow a defined sequence. The exact menu labels can vary slightly based on account configuration, permissions, and NetSuite release behavior, but the design principles remain consistent.

1. Define the calculation and scope

Start by deciding which transactions contribute to On Order.

Document the answers to these questions:

  • Should pending approval purchase orders count?

  • Should only approved POs count?

  • Should partially received lines count for their remaining quantity?

  • Should closed lines be excluded?

  • Should drop-ship or special-order lines be excluded?

  • Should transfer orders or work orders contribute to supply?

  • Should the calculation be item-wide or location-specific?

  • Should it be limited to the current vendor?

  • Should it respect a subsidiary?

  • Should expected receipt dates affect the result?

A common purchasing definition includes approved purchase orders that are not fully received or closed. It excludes canceled transactions and removes quantities as item receipts are posted.

Do not begin with the column placement. Begin with this logic, because a visually correct column can still produce misleading purchasing decisions.

2. Create the custom transaction line field

If the value must appear on purchase order lines, create a custom transaction line field, not a body field.

A line field is appropriate because each PO line has its own:

  • Item

  • Quantity

  • Location

  • Units

  • Vendor context

  • Expected receipt date

  • Remaining quantity

Use a clear label such as On Order Quantity or Open Supply Quantity. The field should be a numeric field with suitable decimal precision for the item types used in the account.

Important field settings include:

  • Apply the field to purchase orders.

  • Set the field to appear on the required custom forms.

  • Decide whether it should display on printed and emailed transactions.

  • Make it read-only if automation owns the value.

  • Add a help description that defines the calculation.

  • Consider whether users should see the field only internally.

The field description matters. “On Order” is ambiguous, while “Open quantity on approved purchase orders for this item and location, excluding the current PO” gives users a meaningful definition.

3. Build a transaction saved search for validation

Before automating the column, build a saved search that calculates or exposes the expected result. This provides a testing baseline.

A purchase order line search should normally filter for:

  • Main Line = No

  • Item lines only

  • Relevant transaction type

  • Appropriate purchase order statuses

  • Non-closed lines

  • Non-zero remaining quantities

  • Required subsidiary

  • Required location

  • Optional vendor

  • Optional item category

The search should expose fields such as:

  • Purchase order number

  • Vendor

  • Item

  • Location

  • Quantity

  • Quantity received

  • Quantity billed, if relevant to the process

  • Expected receipt date

  • Transaction status

  • Remaining quantity

A key design issue is avoiding duplicate totals. Transaction searches can return multiple rows when a purchase order has related item receipts, fulfillments, or other joined records. Summing the wrong result set can overstate supply.

For that reason, validate the search against known examples:

  • A new PO with no receipts

  • A partially received PO

  • A fully received PO

  • A closed PO line

  • Multiple open POs for the same item

  • The same item at different locations

  • The same item across subsidiaries

The saved search is not only a reporting tool. It is the control calculation used to confirm that the scripted or sourced column behaves correctly.

4. Decide whether the current PO should be included

This is one of the most important details in the design.

Suppose a buyer is editing a purchase order for 50 units and the item already has 200 units open on other POs. There are two valid values:

  • Existing On Order: 200 units, excluding the current PO.

  • Total On Order After This PO: 250 units, including the current PO.

These values answer different questions. “How much supply already exists?” requires excluding the current transaction. “What will total open supply become if we approve this PO?” requires including it.

If SuiteScript populates the line field during `beforeLoad`, the current transaction may not yet be saved. A search for existing POs will generally exclude the unsaved record, which is useful for showing existing supply but not for showing the post-save total.

If the requirement is to include the current PO, the script must add the current line quantity, account for edits to existing lines, and avoid double counting when the transaction is being edited. This is a common source of inaccurate totals.

5. Populate the column with SuiteScript 2.1 when necessary

SuiteScript 2.1 is the most flexible option when the column needs to reflect cross-transaction logic.

A typical implementation uses a User Event script or a Client Script, depending on the required behavior:

  • Before Load can display values when the PO opens, but it does not save the values automatically.

  • Before Submit can calculate and store values before the PO is saved.

  • After Submit can update related records or trigger a separate refresh process.

  • Client Script can provide interactive behavior while a user edits the form, but it cannot replace server-side validation.

  • Scheduled or Map/Reduce processing is better when many purchase orders must be recalculated in bulk.

The script should use efficient searches and avoid running one search per line when a purchase order contains many lines. A better pattern is to collect the item and location combinations first, run a grouped search, and map the results back to the PO lines.

The calculation should also define how it handles:

  • Multi-location inventory

  • Multi-subsidiary accounts

  • Units of measure

  • Lot-numbered or serialized items

  • Matrix items

  • Non-inventory items

  • Service items

  • Drop-ship lines

  • Special-order lines

  • Closed or canceled POs

For example, the quantity on a purchase order may be expressed in cases while inventory is tracked in eaches. The script must use NetSuite’s unit conversion rules or a consistent base unit. Otherwise, the displayed On Order amount will look plausible but remain mathematically wrong.

6. Add the field to the correct form and PDF

After the field is populated, place it on the appropriate purchase order form.

In NetSuite, a field can be available but still invisible because it is not included on the active custom form. Check both the Screen and Print settings. If the value must appear on a PDF, confirm that the Advanced PDF/HTML template references the field’s internal ID.

The PDF template may require a line-level reference similar to the transaction line field used in the form. The implementation team should test:

  • Creating a new PO

  • Editing an existing PO

  • Printing before approval

  • Printing after approval

  • Printing after a partial receipt

  • Emailing the PO

  • Viewing the transaction in the browser

  • Using different custom forms

Avoid showing an internal operational metric to vendors if the number is not intended for external use. In many accounts, the best design is to display the column on the internal form but omit it from the vendor-facing PDF.

How to keep the On Order value accurate after receipts and edits

A stored value becomes stale unless the account has a refresh strategy.

The most important trigger is the item receipt. When a receipt is created or edited, the remaining open quantity on the related purchase order changes. Other triggers include:

  • Purchase order creation

  • Purchase order approval

  • PO line quantity edits

  • Line closure

  • PO cancellation

  • Vendor change

  • Location change

  • Subsidiary change

  • Item receipt deletion or correction

If the On Order value is stored on each purchase order line, a script must update affected records when these events occur. That design creates additional automation and governance requirements.

A search-based approach avoids stale stored values because it recalculates when opened. The tradeoff is that the result does not necessarily appear as a native column on every PO or printed document.

For higher-volume accounts, consider separating the two purposes:

  • Use a saved search or workbook for live procurement analysis.

  • Use a scripted snapshot only where an internal document requires a point-in-time value.

  • Use alerts for exceptions such as excessive open supply, overdue receipts, or demand coverage gaps.

This separation reduces the risk that a printed purchase order becomes the assumed source of truth for current inventory planning.

What are the most common implementation mistakes?

The most common mistake is treating “On Order” as a universal NetSuite field with one fixed meaning. It is a business metric that must be scoped.

Other frequent problems include:

Counting fully received lines. A PO with 100 ordered and 100 received should contribute zero open quantity.

Ignoring locations. An open PO for Location A should not automatically be presented as available supply for Location B.

Including the current transaction twice. This occurs when a script searches saved POs and then adds current unsaved values without accounting for edit mode.

Joining item receipts incorrectly. A transaction search can duplicate PO lines when receipt joins are not grouped correctly.

Mixing units. Cases, packs, and individual units must be normalized before quantities are summed.

Displaying the value externally by accident. A custom field shown on the PO form can also appear in the PDF if print settings and templates are not reviewed.

Using a workflow for complex aggregation. Workflows are useful for statuses, approvals, and simple field updates. They are not the strongest tool for multi-record quantity calculations with location and status rules.

For manufacturing businesses, the same supply logic may need to account for work orders, assemblies, and component demand. Our broader guide to NetSuite work orders and assemblies covers that manufacturing context separately. An On Order PO column should not be treated as a complete materials planning calculation when production supply and component requirements are also involved.

How should we test a NetSuite On Order column?

Testing should compare the displayed value with a controlled expected result, not simply confirm that a number appears.

Create a test matrix covering ordinary and edge-case transactions. At minimum, test a new PO, a partially received PO, a fully received PO, a closed line, multiple POs for one item, multiple locations, and an edited transaction.

For each case, record:

  • The expected quantity

  • The search result

  • The value shown on the purchase order

  • The value shown on the PDF

  • The result after an item receipt

  • The result after changing quantity or location

Also test permissions. A buyer, purchasing manager, warehouse user, and administrator may see different forms, subsidiaries, or locations. A script that works for an administrator can fail for a role that lacks permission to search item receipts or view related transactions.

Finally, decide who owns the metric. Purchasing, inventory control, finance, and operations may use the same words differently. The field label, help text, saved search name, and documentation should all use the same definition.

If the requirement involves several forms, transaction types, or integrations, our team can help assess the design through the Versich contact page.

Conclusion

Adding an On Order column to NetSuite purchase orders requires a clear quantity definition, not just a form change. Decide whether the value represents the current PO line, existing open supply, or projected supply after the current transaction. Then validate the calculation with a saved search before choosing a custom field, workflow, or SuiteScript 2.1 implementation.

For most purchasing teams, a saved search is the simplest live view of open PO supply. When the value must appear directly on an internal purchase order or PDF, use a custom transaction line field with carefully designed automation, receipt triggers, unit conversion, and location-aware filters. That approach gives buyers useful visibility without turning an ambiguous field into a source of bad inventory decisions.

Looking for NetSuite Solutions?

Explore our expert NetSuite services and get started today.

Get Started
CTA Illustration

Frequently Asked Questions

How do I add an On Order column to NetSuite purchase orders?

Create a custom transaction line field, add it to the purchase order form, and populate it with a defined calculation. For a live total across multiple open purchase orders, use a saved search for reporting or SuiteScript 2.1 when the value must be stored and displayed directly on each PO.

Is an On Order column already available in NetSuite?

NetSuite includes inventory and purchasing information in several records and views, but a live, customized aggregate On Order column is not automatically available on every purchase order form. The required value depends on filters such as status, location, subsidiary, vendor, and receipt history.

Can I add On Order to a NetSuite purchase order PDF?

Yes, but the value must first be available as a transaction line field or another supported template value. The Advanced PDF/HTML template must then reference the correct internal field ID, and the field should be tested separately on internal and vendor-facing forms.

Should On Order include the current purchase order?

That depends on the business question. Excluding the current PO shows existing open supply, while including it shows the projected total after the transaction is accepted. The field label should state which definition applies.

Does NetSuite update On Order after an item receipt?

NetSuite updates the underlying purchasing and inventory records as receipts are posted, but a custom stored column does not automatically refresh unless automation updates it. A saved search recalculates when run, while a scripted field requires triggers for receipts, edits, closures, and other relevant changes.

Is SuiteScript required to add an On Order column in NetSuite?

SuiteScript is not required if a saved search or standard item field provides the needed visibility. SuiteScript becomes appropriate when the value must appear on the purchase order line, use complex filters, include or exclude the current transaction, or print on a customized document.

What is the alternative to an On Order column on each purchase order?

A transaction saved search, SuiteAnalytics Workbook, or purchasing dashboard is often a better alternative. These tools provide dynamic totals and drill-down details without storing a value that can become stale after receipts or PO edits.