ERP Core / Purchase

Purchase - Domain Invariants & Business Rules

Invariants governing 3-way matching, commitment integrity, delivery variance, and approved vendor lists.

Domain Invariants & Business Rules (“The Law”)

Domain invariants represent absolute truths that the Purchases & Procurement domain enforces. Any transaction violating these invariants is aborted.


1. The 3-Way Matching Invariant

A Vendor Bill cannot transition to Approved for Payment without strict mathematical and quantitative parity against an authorized Purchase Order and a verified Goods Received Note.

$$ \text{PO Quantity} \ge \text{GRN Quantity} \ge \text{Billed Quantity} $$

$$ |\text{PO Unit Price} - \text{Bill Unit Price}| \le \text{Discrepancy Tolerance} $$

  • The Law: Every approved vendor bill line must reference an open PO line, a matching GRN reference, and fall within configured quantity and price tolerances.
  • Exception Rule: Any variance outside tolerance triggers a formal discrepancy workflow requiring explicit authorization before approval.
  • No GRN Exception: A bill cannot be approved without receiving evidence unless a pre-approved “accrual” exception is granted for services or advance agreements.

Audit Rationale

3-way matching is the primary control against duplicate payments, overpayments, and fictitious invoices. Bypassing this invariant exposes the enterprise to fraud and regulatory non-compliance.


2. Commitment Integrity

Authorizing a Purchase Order creates an operational commitment that freezes budget allocation.

  • The Law: Once a PO is approved, its quantities and prices cannot be retroactively modified in place.
  • Quantity Lock: Additional quantities require a supplementary PO or a call-off against a blanket agreement.
  • Price Lock: Unit prices cannot be changed after approval. Price corrections require a vendor credit/debit note or a formal change order.
  • Budget Lock: The committed amount is reserved against the originating cost center and budget line until the PO is closed or cancelled.

Structural Consequence

Without commitment integrity, budgets become unreliable, supplier disputes arise from ambiguous terms, and downstream WMS and Accounting contexts receive conflicting signals.


3. Over-Delivery & Price Variance Policies

Suppliers occasionally ship more than ordered or invoice at a different price than agreed. The domain handles these cases rigidly:

ScenarioPolicy
Unauthorized Over-DeliveryQuantities received in excess of the PO are not accepted into matched inventory unless explicitly allowed by the PO or a supplementary authorization.
Within Quantity ToleranceMinor over-shipments within tolerance are accepted and the bill is matched normally.
Price Discrepancy Within ToleranceSmall price differences within the configured threshold are approved automatically with variance recording.
Price Discrepancy Exceeding ToleranceThe bill is rejected and routed to procurement for renegotiation or debit note issuance.

Variance Ledger

All quantity and price variances are recorded explicitly. They feed into supplier scorecards and cost-center variance reports without altering the original PO commitment.


4. Approved Vendor List (AVL) Rule

Purchasing commitments cannot be issued to suppliers categorized as inactive, blacklisted, or failing mandatory compliance certifications.

  • The Law: A PO can only be issued to a vendor with a status of Approved or Preferred.
  • Certification Check: Critical commodities may require active certifications (e.g., quality, safety, environmental) with valid expiry dates.
  • Blacklist Block: Any attempt to issue a PO to a blacklisted supplier is rejected at validation time.
  • Re-approval Requirement: A vendor moved to On-Hold cannot receive new POs until reinstated through a formal re-approval workflow.

Risk Consequence

The AVL rule prevents the enterprise from entering commercial commitments with non-compliant, financially unstable, or ethically disqualified suppliers, reducing legal and reputational risk.

Our Premium Sponsors

Obelaw is proudly open-source. Continued development, bug fixes, and community support are made possible by the generosity of our sponsors.

Sponsor Obelaw