Overview
The Purchase Orders importer creates or updates Purchase Orders and their Purchase Order Lines from a single CSV. The CSV is denormalized: one row per PO line, with the PO header columns repeated across every row that belongs to the same PO. Example: two POs, three lines.
Rows sharing the same
po_number are merged into a single PO header. If a header column is included in your CSV, it must be populated on every row of that PO and all values must match. Any blank cell or any value that disagrees with another row of the same PO fails the import with a per-conflict error before any data is written.
Header columns
These describe the PO itself. If your CSV includes a header column, every row that shares apo_number must carry the same value in it, or the import fails.
Line columns
These describe a single PO line. Every row contributes one line if any line column is populated.A row that populates only header columns (no
part_number or other line column) contributes to the PO header but does not create a line. Use this to create or update a PO without lines.The importer doesn’t set a line’s Project or Charge Account. Set them on the line after the import. See Edit purchase order lines.
Fees
Thefees column accepts a semicolon-delimited list of fee records. Each record uses two bracketed fields after the fee name:
Example:
Shipping[50.00][currency];VAT[8.5][percentage]
Custom attributes
Any column not in the standard set above is treated as a custom attribute. The importer routes each column to either PO-level or PO-line-level attributes based on which table defines it in your organization’s attribute configuration:- A column matching a PO custom attribute is attached to the PO.
- A column matching a PO-line custom attribute is attached to the line.
- A column matching both is ambiguous and rejected. Rename one side to disambiguate.
- A column matching neither is rejected as unrecognized.
BatchID matches an attribute keyed BatchID only.