Produce Pro Module 05 — Charges

Ontology pack for PP module 05 (Charges), pinned to PP version 2401.0. Confidence: manual · Extractor: manual@2026-05-18 · Renderer: pp-module-renderer@1.0.0.

Module purpose

PP Module 05 (Charges) holds the master taxonomy of additional charges and credits that ride alongside POs (Module 09), sales orders (Module 12), and invoices (Module 17 AR / Module 16 AP). A charge represents anything that is NOT the per-case line cost: freight, palletization, fuel, restocking fees, vendor temperature-tracker billing, manual adjustments, and produce-industry specifics such as ripening or repack labor.

Business context

Charges in PP are CODE-driven — each entry references a ChargeCode lookup (maintained in this module’s master tables) whose fields determine where the charge posts (PO header / PO line / sales order / customer invoice), the default amount or rate, taxability, and the GL account. FIN consumes the emitted charges as events.data.charges[] line items on the corresponding event types and persists the ChargeCode verbatim so downstream reconciliation can join back to PP’s master.

Canonical field reference

PP fieldBusiness meaningData typeUoMValidity rulesSentinel valuesEnum valuesLookup tableFIN mappingVersion notes
ChargeCode.CodeShort code referenced from POs / sales orders / invoices.id_referenceUppercase alphanumeric, ≤ 8 chars typicalPP charge-code master (Module 05)events.data.charges[].code
ChargeCode.DescriptionHuman-readable description shown on invoices and reports.stringevents.data.charges[].description
ChargeCode.PostsToWhere the charge posts. Drives whether the FIN consumer treats it as a vendor charge (Module 09 / 16) or customer charge (Module 12 / 17).enumPO_HEADER, PO_LINE, SALES_ORDER_HEADER, SALES_ORDER_LINE, INVOICEevents.data.charges[].posts_to
ChargeCode.DefaultAmountDefault flat amount or rate. When RateType=FLAT it’s an absolute USD amount; when RateType=PER_CASE or PER_LB it’s a per-unit rate.currencyUSD (flat) or USD per unit (rate)0 = No default — operator must set amount at point of entryevents.data.charges[].default_amount_usd
ChargeCode.RateTypePricing basis for this charge. Determines how the amount field is interpreted at apply-time.enumFLAT, PER_CASE, PER_LB, PER_PALLET, PERCENTevents.data.charges[].rate_type
ChargeCode.TaxableWhen true, the charge is subject to sales/use tax computation downstream.booleanevents.data.charges[].taxable
ChargeCode.GLAccountGL account code (Module 18 General Ledger) the charge posts to when AP/AR finalises the entry.code_lookupPP GL chart (Module 18)events.data.charges[].gl_account

Workflow state machines

Charge application lifecycle

How a ChargeCode entry traverses from PP master into a line item on a PO/SO/invoice and finally into AP/AR settlement.

  • Initial state: Defined
  • Terminal states: Settled
stateDiagram-v2
    [*] --> Defined
    Defined --> Applied: Operator selects charge during PO / SO / invoice entry
    Applied --> Posted: Parent document (PO / SO / invoice) is finalised
    Posted --> Settled: AP cuts the payment OR AR collects from customer
    Settled --> [*]

Transitions:

FromToTriggerActor roleNotes
DefinedAppliedOperator selects charge during PO / SO / invoice entryBuyerSalesperson
AppliedPostedParent document (PO / SO / invoice) is finalisedBuyerSalesperson
PostedSettledAP cuts the payment OR AR collects from customerAPAR

Cross-references to other PP modules

ModuleTitleHandoff pointNotes
09PurchasingPO header + line charges (freight, palletization, vendor tracker billing)
12SalesSales order charges (delivery, repack, ripening, customer-specific surcharges)
16Accounts PayableVendor charges flow into AP for invoice reconciliation
17Accounts ReceivableCustomer-billable charges post to AR for collection
18General LedgerEach ChargeCode has a GLAccount mapping that drives posting

Sample artifacts

KindFilenameManifest anchorNotes
pdf_report05 - Charges.PDFBucket 1 (Vendor manual) — Module 05 subsetModule 05 user guide (PP 2401.0)
passing_sheetSunkist Temptale billing line ($24.50)FIELD_MAPPING_AND_SAFETY_SPEC §0.3 (vendor temperature trackers)Real-world example of a vendor-side charge posting on a passing report — Sunkist bills Nathel for the vendor-provided Temptale tracker.

Open questions / drift watch

  • Does PP carry a separate `OperatorOverrideAllowed` flag per ChargeCode? FIELD_MAPPING does not yet have this; affects which charges agents can suggest changes to vs which must be operator-set.
    • Raised in: Module 05 charge_application workflow design
    • Watch artifact: PP charge-code master export (PD335-equivalent for Module 05)