Skip to main content
Version: Current

Purchase Orders

Overview

📥 Direction: NetSuite → Zudello
🔄 Sync Type: Incremental sync
⏱️ Frequency: Every 15 minutes
📋 Entity: Purchase orders with line items and allocations

Purchase order data flows from NetSuite to Zudello to provide reference information for invoice matching, procurement tracking, and purchase order to bill transformation workflows.

Key Benefits

Three-way Matching - Reference data for PO-Invoice-Receipt validation
Allocation Tracking - Monitor PO line consumption and remaining amounts
Multi-subsidiary Support - Handle cross-subsidiary transactions
Automatic Relationships - Link suppliers, items, projects, and dimensions
Complex Status Filtering - Only sync approved and active orders

Processing Strategy

The integration uses complex SuiteQL queries that:

  • Join transaction and transaction line tables
  • Filter for approved purchase orders only
  • Exclude closed and cancelled orders
  • Calculate line-level pricing from amounts and quantities
  • Handle multi-subsidiary and multi-currency scenarios

Field Mappings

Header Fields

NetSuite FieldZudello Transaction FieldData TypeNotes
traniddocument_numberStringPurchase order number
trandatedate_issuedDateOrder creation date
duedatedate_dueDateExpected delivery date
entitysupplierRelationLinks to Supplier
currencycurrencyRelationLinks to Currency
subsidiarysubsidiaryRelationLinks to Subsidiary
custbody_zu_approval_statusapproval_statusStringCustom approval field
approvalstatusnetsuite_approval_statusStringNative approval status
statustransaction_statusStringOrder status
exchangerateexchange_rateDecimalCurrency exchange rate
memonotesStringHeader memo/notes

Line Item Field Mappings

NetSuite FieldZudello Line FieldData TypeNotes
lineline_numberIntegerLine sequence number
itemitemRelationLinks to Item
descriptiondescriptionStringLine description
quantityquantityDecimalOrdered quantity
rateunit_priceDecimalCalculated from amount/quantity
amounttotal_exclusiveDecimalLine amount excluding tax
taxamounttax_totalDecimalLine tax amount
grossamttotal_inclusiveDecimalLine amount including tax
departmentdepartmentRelationLinks to Department
classclassificationRelationLinks to Classification
locationlocationRelationLinks to Location
isclosedis_closedBooleanLine closure status
quantityreceivedquantity_receivedDecimalReceived quantity
quantitybilledquantity_billedDecimalBilled quantity

API Configuration

SuiteQL Query Structure

The integration uses a complex SuiteQL query that joins:

  • Transaction table for header data
  • TransactionLine table for line item details
  • Multiple dimension tables for complete reference data
  • Status filtering to exclude inactive records

Query Filters

  • transaction.type = 'PurchOrd' - Purchase orders only
  • transaction.status NOT IN ('Cancelled', 'Closed') - Active orders
  • transactionline.mainline = 'F' - Exclude header lines
  • transactionline.taxline = 'F' - Exclude tax summary lines
  • lastmodifieddate >= :last_sync_date - Incremental sync

Sync Configuration

Incremental Sync Details

  • Sync Field: lastmodifieddate
  • Initial Load: All approved, non-closed purchase orders
  • Updates: Only modified records since last sync
  • Frequency: Every 15 minutes
  • Batch Size: 1000 records per sync cycle

Status Requirements

Purchase orders are synced only when:

  • Approval status is not "Pending Approval"
  • Order status is not "Cancelled" or "Closed"
  • At least one line item exists
  • Line items are not fully closed

Special Processing Features

Line-Level Price Calculation

When rate field is null or zero:

  • Calculate unit price from amount / quantity
  • Handle zero quantity scenarios
  • Preserve original amount for validation

Multi-Currency Handling

  • Store original currency code
  • Capture exchange rate for reporting
  • All amounts in transaction currency

Allocation Tracking

Track PO consumption with:

  • quantity_received - Items already received
  • quantity_billed - Items already invoiced
  • quantity - quantity_billed - Remaining to invoice

Document Type Classification

All purchase orders set with:

  • Module: "PURCHASING"
  • Submodule: "ORDER"
  • Document Type: "PURCHASE_ORDER"
  • Status: Mapped from NetSuite status

Processing Logic

Complex Query Processing

The integration performs:

  1. Complex SuiteQL join across transaction and line tables
  2. Status filtering at both header and line level
  3. Exclusion of non-item lines (headers, taxes, shipping)
  4. Price calculation from totals when rates missing
  5. Dimension mapping for all supported fields

Line Filtering Logic

Exclude lines where:

  • mainline = 'T' (header information line)
  • taxline = 'T' (tax summary line)
  • item IS NULL (non-item lines)
  • No amount or quantity exists

Status Mapping

NetSuite StatusZudello StatusDescription
Pending ApprovalPENDINGAwaiting approval
ApprovedAPPROVEDReady for processing
Partially ReceivedPARTIALSome items received
Pending ReceiptOPENAwaiting delivery
ClosedCLOSEDFully processed
CancelledCANCELLEDOrder cancelled

Troubleshooting

IssueCauseSolution
Missing purchase ordersStatus filter excludingCheck order approval status
Incomplete line itemsLine type filteringVerify mainline and taxline flags
Zero unit pricesRate field not populatedPrice calculation from amount/quantity
Missing dimensionsDimension not mappedVerify department/class/location setup
Duplicate linesTax lines includedEnsure taxline filter active
Old orders not syncingInitial sync date limitAdjust incremental sync start date
Currency mismatchesMissing currency syncRun currency master sync first