Back to ER Diagram
PO Amendment

PO Amendment Management

Industry-standard Purchase Order amendment workflow with type classification, threshold-based approval matrix, vendor consent handling, partial receipt rules, impact assessment, before/after comparison, lock periods, and complete audit trail.

PostgreSQL
5 Tables
Schema: po
Vendor Consent

Amendment Lifecycle Overview

PO amendments modify released Purchase Orders. Each amendment type has specific approval and vendor consent requirements. The system tracks cumulative changes and enforces lock conditions.

DRAFT
PENDING_APPROVAL
APPROVED
AWAITING_VENDOR
VENDOR_ACCEPTED
EXECUTED
REJECTED
COUNTER_PROPOSED
VENDOR_REJECTED
CANCELLED
12
Amendment Types
5
Approval Tiers
5
Vendor Responses
72h
Response Deadline

Amendment Type Classification

Each amendment is classified by type to determine approval routing, vendor consent requirements, and auto-approval thresholds.

Type Code Description Vendor Consent Auto-Approve Threshold
QTY_INCREASE Increase ordered quantity Required ≤10% of original qty
QTY_DECREASE Decrease ordered quantity Notify Only ≤20% of original qty
PRICE_INCREASE Unit price increase Required ≤5% of line value
PRICE_DECREASE Unit price decrease Notify Only Unlimited
DATE_EXTENSION Extend delivery date Required ≤30 days
DATE_ADVANCE Earlier delivery requested Required Any
SCOPE_ADD Add new line items Required N/A
SCOPE_REMOVE Remove/cancel line items Notify Only ≤20% of PO value
TERMS_CHANGE Payment/freight/warranty changes Required N/A
SPEC_CHANGE Technical specification changes Required N/A (Eng. approval)
SHIP_TO_CHANGE Change delivery location Required N/A
CANCELLATION Full PO cancellation Notify Only N/A

Threshold-Based Approval Matrix

Approval routing is determined by the percentage value change. Cumulative amendments are factored into threshold calculation.

Value Change % Approver Level SLA (Hours) Escalation To
≤5% Procurement Officer (PO Creator) 4 Department Head
5.01% - 10% Department Head 8 Procurement Manager
10.01% - 15% Procurement Manager 16 Director
15.01% - 25% Director 24 CFO
>25% CFO 48 CEO

Special Approval Rules

Price Increases: Require one additional approval level beyond quantity rules.
Specification Changes: Require Engineering Lead sign-off regardless of value impact.

-- Approval Matrix Calculation
SELECT
    amendment_id,
    value_change_percent,
    CASE
        WHEN value_change_percent <= 5 THEN 'PROCUREMENT_OFFICER'
        WHEN value_change_percent <= 10 THEN 'DEPARTMENT_HEAD'
        WHEN value_change_percent <= 15 THEN 'PROCUREMENT_MANAGER'
        WHEN value_change_percent <= 25 THEN 'DIRECTOR'
        ELSE 'CFO'
    END AS required_approver,
    -- Add one level for price increases
    CASE WHEN amendment_type = 'PRICE_INCREASE' THEN TRUE ELSE FALSE END AS escalate_one_level
FROM po.po_amendments;

Vendor Amendment Response

Vendors can accept, reject, or counter-propose amendments that require their consent. Response deadline is 72 hours with auto-reminders.

ACCEPT

Vendor agrees to amendment. System executes changes and updates PO.

ACCEPT_WITH_CONDITIONS

Conditional acceptance. Routes to buyer for review of conditions.

COUNTER_PROPOSE

Vendor submits alternative proposal. Creates negotiation round.

REJECT

Vendor declines amendment. Buyer notified with rejection reason.

NO_RESPONSE

Timeout after 72 hours. Auto-escalated to buyer for action.

Amendment Sent
Portal Notification
Awaiting Response
24h Reminder
48h Reminder
72h Auto-Escalate

po_amendment_vendor_responses

  • amendment_id — FK to po_amendments
  • vendor_id — FK to vendors
  • response_type — ACCEPT, ACCEPT_WITH_CONDITIONS, COUNTER_PROPOSE, REJECT, NO_RESPONSE
  • counter_quantity, counter_unit_price, counter_delivery_date — Counter-proposal values
  • counter_valid_until — Expiry of counter-proposal
  • reminder_sent_24h, reminder_sent_48h — Reminder tracking
  • auto_escalated — TRUE if timeout escalation occurred

Partial Receipt Amendment Rules

Special restrictions apply when goods have been partially received (GRN exists). Amendments are limited to unreceived quantities only.

Amendment Type Allowed After Partial GRN? Conditions
QTY_INCREASE Yes For unreceived quantity only
QTY_DECREASE Yes Cannot reduce below received qty
PRICE_INCREASE Restricted Only for unreceived items
PRICE_DECREASE Yes Applies to future invoices only
SCOPE_ADD Yes New line items only
SCOPE_REMOVE Restricted Only unreceived lines
CANCELLATION Restricted Only unreceived portion
-- Partial Receipt Validation
CREATE FUNCTION validate_partial_receipt_amendment(
    p_amendment_id UUID,
    p_po_item_id UUID,
    p_new_quantity DECIMAL
) RETURNS BOOLEAN AS $$
DECLARE
    v_received_qty DECIMAL;
    v_invoiced_amount DECIMAL;
BEGIN
    -- Get received and invoiced amounts
    SELECT
        COALESCE(SUM(gi.accepted_qty), 0),
        COALESCE(SUM(ii.line_total), 0)
    INTO v_received_qty, v_invoiced_amount
    FROM po.po_items pi
    LEFT JOIN logistics.grn_items gi ON gi.po_item_id = pi.id
    LEFT JOIN logistics.invoice_items ii ON ii.po_item_id = pi.id
    WHERE pi.id = p_po_item_id;

    -- Validate: new quantity >= received quantity
    IF p_new_quantity < v_received_qty THEN
        RAISE EXCEPTION 'Cannot reduce quantity below received: %', v_received_qty;
    END IF;

    RETURN TRUE;
END;
$$ LANGUAGE plpgsql;

Amendment Impact Assessment

System auto-calculates and displays the impact of proposed amendments before approval routing.

Cost Impact

  • • Original PO Value
  • • Proposed PO Value
  • • Value Difference (₹ +/-)
  • • Percentage Change (%)
  • • Cumulative Change (all amendments)

Schedule Impact

  • • Original Delivery Date
  • • Proposed Delivery Date
  • • Variance (days +/-)
  • • Affected Project Milestones
  • • Critical Path Impact

Budget Impact

  • • Available Project Budget
  • • Budget After Amendment
  • • Commitment Release/Addition
  • • Budget Exceeded Warning

Vendor Impact

  • • Vendor Rating Points (+/-)
  • • SLA Risk Assessment
  • • Late Amendment Penalty
  • • Relationship Impact Score

Impact Warnings

⚠️ Budget Exceeded: Amendment exceeds available project budget
⚠️ Critical Path Impact: Delivery change affects project milestones
⚠️ Amendment Limit: Approaching maximum amendment count (3)
⚠️ Audit Flag: Cumulative amendments exceed 25% of original value

Before/After Comparison View

Side-by-side version comparison for amendment review and approval decision-making.

BEFORE (Current Version)

Total Value ₹5,00,000
Delivery Date 15-Mar-2026
Payment Terms 30 Days
Item 1: Steel Plates Qty: 100 @ ₹1,000
Item 2: Copper Wire Qty: 50 @ ₹2,000

AFTER (Proposed Amendment)

Total Value ₹5,75,000 (+15%) 🔴
Delivery Date 30-Mar-2026 (+15 days) 🟡
Payment Terms 30 Days (No Change)
Item 1: Steel Plates Qty: 120 (+20) @ ₹1,000 🟢
Item 2: Copper Wire Qty: 50 @ ₹2,100 (+5%) 🔴
Item 3: Insulation Tape NEW: Qty: 200 @ ₹250 🟢
🟢 Favorable Change 🟡 Neutral Change 🔴 Attention Required ➕ Added ➖ Removed

Amendment Lock Period

POs are locked for amendments after certain conditions are met. Lock can be overridden with elevated approval.

Lock Condition Lock Type Override Allowed? Override Authority
PO Closed Full Lock No -
PO Cancelled Full Lock No -
Full GRN Received Full Lock Credit Notes Only -
Full Invoice Paid Full Lock Credit Notes Only -
Days Since PO Release > 365 Soft Lock Yes Director
Amendment Count ≥ 3 Soft Lock Yes CFO
Cumulative Change > 50% Soft Lock Yes CEO

Lock Override Process

1. User attempts amendment on locked PO
2. System displays lock reason
3. User requests override with justification
4. Override routed to designated authority
5. If approved, one-time amendment window opens (24 hours)

Database Tables

po.po_amendments (Header)

  • id — Primary key (UUID)
  • po_id — FK to purchase_orders
  • amendment_number — Sequential per PO (1, 2, 3...)
  • amendment_type — Type classification enum
  • status — DRAFT, PENDING_APPROVAL, APPROVED, AWAITING_VENDOR, EXECUTED, REJECTED, CANCELLED
  • original_po_value, proposed_po_value — Before/after amounts
  • value_change_amount, value_change_percent — Calculated impact
  • requires_vendor_consent — Boolean based on type
  • vendor_consent_status — PENDING, ACCEPTED, REJECTED, COUNTER_PROPOSED
  • cumulative_amendment_count, cumulative_value_change_percent — Running totals
  • impact_assessment — JSONB with cost/schedule/budget impact

po.po_amendment_items (Line Details)

  • amendment_id — FK to po_amendments
  • po_item_id — FK to po_items (NULL for new items)
  • change_type — QUANTITY, PRICE, DELIVERY_DATE, SPECIFICATION, ADD_NEW, REMOVE
  • is_new_item, is_removed — Scope change flags
  • original_quantity, proposed_quantity — Quantity change
  • received_quantity, amendable_quantity — Partial receipt tracking
  • original_unit_price, proposed_unit_price — Price change
  • original_specifications, proposed_specifications — JSONB for spec changes

po.po_amendment_approvals (Approval Workflow)

  • amendment_id — FK to po_amendments
  • approval_level — 1, 2, 3... based on matrix
  • approval_type — PROCUREMENT, ENGINEERING, FINANCE
  • approver_id — FK to users
  • delegated_from — Original approver if delegated
  • status — PENDING, APPROVED, REJECTED, ESCALATED
  • sla_due_date — Calculated from approval matrix
  • is_escalated, escalation_reason — SLA breach tracking

po.po_amendment_audit (Audit Trail)

  • amendment_id — FK to po_amendments
  • event_type — CREATED, SUBMITTED, APPROVED, REJECTED, VENDOR_NOTIFIED, VENDOR_RESPONDED, EXECUTED, CANCELLED
  • actor_id — FK to users
  • actor_type — USER, SYSTEM, VENDOR
  • before_state, after_state — JSONB snapshots
  • ip_address, user_agent — Security tracking

Business Rules Summary

Rule ID Description
BR-PKR-015Amendment types classified by impact: QTY, PRICE, DATE, SCOPE, TERMS, SPEC
BR-PKR-016Approval matrix based on percentage value change with cumulative tracking
BR-PKR-017Vendor consent required for increases; decreases are notify-only
BR-PKR-018Vendor response deadline: 72 hours with auto-reminders at 24h, 48h
BR-PKR-019Counter-proposals create new negotiation round
BR-PKR-020Partial GRN amendments restricted to unreceived quantity only
BR-PKR-021Amendment cannot reduce quantity below GRN'd quantity
BR-PKR-022Amendment cannot reduce value below invoiced amount
BR-PKR-023Impact assessment mandatory before approval routing
BR-PKR-024Before/After comparison view required for all approvals
BR-PKR-025PO locked after: full GRN + payment, 365 days, 3 amendments, or 50% cumulative change
BR-PKR-026Lock override requires one level higher authority approval
BR-PKR-027Complete audit trail with before/after snapshots mandatory
BR-PKR-028Price increase amendments require one additional approval level
BR-PKR-029Specification changes require Engineering Lead approval
BR-PKR-030Amendment notifications sent to: Vendor, Project Manager, Finance