Order Parts Form (Order_Parts)
Field-by-field reference for the Order Parts form and its embedded Order Line Items subform — the structure that holds purchase-order line items. Includes a review of legacy/redundant fields (see Field Review).
- Display name: Order Parts
- Success message: "Data Added Successfully!"
- Last documented: 12 June 2026
Background
Historically, purchase orders did not have line items as separate records — part descriptions were maintained as free text in a single Description field. The Order_Line_Items grid on this form introduced line items as proper child records (one record per part, with quantity, part number, supplier, and pricing). The Purchase Order Form's Order_Line_Items grid references these same child records — this subform is where they are defined and populated.
Because the form evolved from the older free-text approach, it carries fields from earlier iterations that may no longer be needed — flagged in the review below.
Main Section — Order Details
| Field | Type | Source / Values | Notes |
|---|---|---|---|
Parts_to_be_ordered_for | Picklist | Claim, Fleet Vehicle, Private Job | Determines which vehicle lookup applies. |
File_Number | Picklist (lookup) | Claim_Form.ID, displays [File_Number] | Populated for Claim orders. |
Fleet_Vehicle_Rego | Picklist (lookup) | logistics_app.Add_Car.ID, displays [Registration] | Populated for Fleet Vehicle orders. Cross-app lookup into the logistics app. |
Ordered_By | Picklist (lookup) | User.ID, displays full name | Staff member raising the order. |
Registration | Text | Free text | Denormalised copy of vehicle rego. |
VIN_No | Text | Free text | Denormalised copy of VIN. |
Make | Text | Free text | Denormalised. |
Model | Text | Free text | Denormalised. |
Colour | Text | Free text | Denormalised. Not present on the PO form. |
Date_Ordered | Date | Defaults to ${zoho.currentdate} | Mandatory (must have). |
Purchase_Order_No_I_Body | Text | Free text | iBody purchase number — also exists on the PO form (see review). |
Order Line Items (embedded grid / subform)
One row per part. These are the records the invoice extraction module matches invoice lines against.
| Field | Type | Source / Values | Notes |
|---|---|---|---|
Parts_to_Order | Picklist (lookup) | Parts_to_Order.ID, displays [ID] | Back-link to the originating parts request line. |
Description | Text | Free text | Part description — comparison target for the extracted invoice line description. |
Quantity1 | Number (integer) | — | Display name "Quantity" — the authoritative quantity field (review item 1). |
Quantity | Decimal | — | Duplicate, displays as "Quantity" — to be removed from the form (review item 1). |
Part_Number | Text | Free text | Comparison target for the extracted invoice part_number. |
Suppliers | Picklist (lookup) | Suppliers.ID, displays [Supplier_Name] | Not used — supplier is taken from the PO header Supplier_Name (review item 2). |
Parts_Type | Picklist | OEM, Parallel, Aftermatket, Used | Note the typo in the stored value "Aftermatket" — see review. |
Request_Status | Picklist | Part to Order, Part to Repair | Initial value Part to Order. Triage-stage status — see review. |
Unit_List_Ex_GST | Decimal | — | List price ex GST — maps to extracted unit_list. |
Unit_Net_Ex_GST | Decimal | — | Net (agreed) price ex GST — maps to extracted unit_net. This is the price the supplier should invoice. |
Due_In_date | Date | All days allowed | Expected arrival. |
Status | Picklist | Ordered, Arrived, Unavailable | Per-line fulfilment status. |
Notes | Textarea | — | Free notes. |
Upload_Evidence | File upload | Local drive | Supporting attachment per line. |
System Section
| Field | Type | Source / Values | Notes |
|---|---|---|---|
Parts_to_Order | List (multi-lookup) | Parts_to_Order.ID, displays [ID] | Order-level list of source request lines — duplicates the per-line lookup; see review. |
Order_Source | Picklist | Direct Order, From Pending Request | How the order was raised. |
Auto_Number | Autonumber | Starts at 1 | Internal sequence. |
Actions
| Event | Buttons |
|---|---|
| On add | Submit |
| On edit | Update, Cancel |
Field Review — Legacy and Redundant Fields
Fields flagged during the 12 June 2026 review, with decisions recorded. Do not delete any field without first auditing data and Deluge workflow references — removing a field that scripts read/write will break the parts flow silently.
| # | Finding | Decision (12 Jun 2026) |
|---|---|---|
| 1 | Duplicate quantity fields | ✅ Decided — remove Quantity (decimal); Quantity1 is authoritative |
| 2 | Per-line Suppliers lookup | ✅ Decided — not needed; supplier comes from the PO header |
| 3 | Purchase_Order_No_I_Body on both forms | ✅ Decided — PO form's value is authoritative |
| 4 | Request_Status looks vestigial | ✅ Keep — used elsewhere in the app |
| 5 | Parts_to_Order linked twice | 🟡 Pending verification against the live form |
| 6 | Denormalised vehicle fields | 📋 Noted — revisit later |
| 7 | Parts_Type typo "Aftermatket" | 📋 Noted — fix later (with record migration, see below) |
| 8 | No line-total field | 📋 Noted — matcher computes it |
1. Duplicate quantity fields — Quantity1 vs Quantity — RESOLVED
The grid has two quantity fields, both displaying as "Quantity" in the UI: Quantity1 (integer) and Quantity (decimal).
Decision: the decimal Quantity field will be removed from the form. Quantity1 (integer) is the live field — all code, including invoice line matching, reads Quantity1.
2. Per-line Suppliers vs PO-header Supplier_Name — RESOLVED
The PO form has a single supplier at header level; the line items each carry their own supplier lookup.
Decision: the per-line Suppliers field is not needed. The supplier is taken from the Purchase Order header (Supplier_Name) — that is what invoice supplier matching resolves against.
3. Purchase_Order_No_I_Body exists on both forms — RESOLVED
Both Order_Parts and Purchase_Order_Form carry the iBody number.
Decision: the Purchase Order form's value is authoritative — same principle as the supplier field. Invoice-to-PO matching reads Purchase_Order_No_I_Body from the PO form.
4. Request_Status (Part to Order / Part to Repair) — KEEP
Initially flagged as vestigial (a triage-stage decision). Decision: the field is used elsewhere in the app — keep as-is.
5. Parts_to_Order duplicated (per-line lookup + order-level list) — PENDING VERIFICATION
The exported form definition contains the link twice: a per-line picklist inside the Order_Line_Items grid (first grid field), and an order-level list field in the System section (row = 3, height = 60px). The team did not find the second field when reviewing — possibly hidden in the form builder's System section, or the export predates a removal. Action: check the live form builder's System section; if the list field is genuinely gone, update this page and the export.
6. Denormalised vehicle fields (Registration, VIN_No, Make, Model, Colour) — NOTED
Copied from the claim/fleet record rather than looked up. Standard Creator practice, but they can drift from the source record. Colour exists here but not on the PO form. To be revisited later; treat the claim record as the source of truth.
7. Typo in Parts_Type picklist: "Aftermatket" — NOTED, FIX LATER
Should be "Aftermarket". Caution for whoever fixes it: picklist values are stored as literal strings — fixing the option without migrating existing records leaves old rows holding the misspelled value, and any Deluge/report filters on "Aftermatket" will silently stop matching. Fix the value, update records, and grep workflows for the misspelling in one pass.
8. No line-total field — NOTED
Lines carry unit prices but no extended total (qty × unit_net); the PO form's Total_Value is presumably computed by workflow. Fine as-is — the invoice matcher computes line totals itself.
Relevance to Invoice Extraction
Line-item matching compares extracted invoice lines against Order_Line_Items records:
| Extracted invoice field | Line item field | Match approach |
|---|---|---|
description | Description | Normalised text similarity (supplier wording differs from internal wording) |
part_number | Part_Number | Exact match after normalisation — strongest signal when both sides have it |
quantity | Quantity1 | Numeric exact match (Quantity decimal field is being removed) |
unit_list | Unit_List_Ex_GST | Tolerance comparison |
unit_net / unit_price | Unit_Net_Ex_GST | Tolerance comparison — the price-discrepancy check that catches list-vs-net overbilling |
total (per line) | computed qty × Unit_Net_Ex_GST | Computed, no stored field |
Both sides are ex-GST at line level, so no GST conversion is needed for line matching (header totals still need the GST basis of Total_Value confirmed).