Skip to content

Purchase Order Workflow

This document outlines the complete workflow for purchase orders in the PRS system, from creation to delivery and closure.

Workflow Diagram

flowchart TD
  Start([PRS Generates PO]) --> S1[For PO Review]
  S1 -->|Submitted| S2[For PO Approval]
  S2 -->|Fully Approved| S3[For Sending]
  S1 -->|Cancels PO| S5[Cancelled PO]
  S2 -->|Cancels PO| S6[Cancelled PO]
  S2 -->|Rejected| S4[PO Rejected]
  S4 -->|Return| S1
  S3 -->|Manual Status Change by Staff| S8[For Delivery]
  S3 -->|Add Incidental Costs| S2
  S8 -->|Add Incidental Costs| S2
  S8 -->|Cancel PO - Partial/No Delivery| S7[Cancelled PO]
  S8 -->|Auto-close when conditions met| S9[Closed PO]
  S9 -->|System Monitoring| S10{Delivery & Payment Complete?}
  S10 -->|Yes| S9
  S10 -->|No| S8

Status Definitions

Status Description
For PO Review Initial status when a purchase order is created, to be reviewed by assigned purchasing staff
For PO Approval Purchase order has been submitted for approval or requires re-approval due to incidental costs
For Sending Purchase order has been approved and is awaiting sending of PO to supplier
For Delivery Purchase order has been sent to supplier and is awaiting delivery
PO Rejected Purchase order has been rejected by an approver
Cancelled PO Purchase order has been cancelled (e.g., supplier suspended, user triggered, or partial cancellation)
Closed PO Purchase order items are fully delivered and fully paid

Detailed Workflow Steps

1. Purchase Order Creation

Actor: System (Automatic)

Actions:

  • Create purchase orders after canvass approval
  • Group items by supplier and terms
  • Generate PO Number

Status Transitions:

  • FOR_PO_REVIEW (default)

Business Rules:

  • Purchase orders are created automatically after canvass approval
  • Purchase orders are grouped by supplier and terms
  • PO Number is auto-generated
  • Includes all selected items from the canvass for each supplier
  • Includes all price, quantity and total amount

2. Purchase Order Review

Actor: Assigned Purchasing Staff

Actions:

  • Review purchase order details
  • Update item quantity
  • Update warranty (optional) and delivery address
  • Add further discount - fixed or percentage
  • Add Incidental Costs
  • Submit for approval

Status Transitions:

  • FOR_PO_REVIEW → FOR_PO_APPROVAL
  • PO_REJECTED → FOR_PO_APPROVAL (if resubmitted after rejection)

Business Rules:

  • Purchase order details can be updated during review
  • Warranty and delivery address can be specified
  • Status changes to FOR_PO_APPROVAL when submitted for approval

3. Purchase Order Approval

Actor: Approvers

Actions:

  • Review the purchase order
  • Approve or reject the purchase order
  • Add note of approval (optional) or rejection (required)
  • Edit item quantity or delete an item from the table (as needed)

Status Transitions:

  • FOR_PO_APPROVAL → FOR_SENDING (if all approvers approve)
  • FOR_PO_APPROVAL → PO_REJECTED (if any approver rejects)

Business Rules:

  • Only FOR_PO_APPROVAL or PO_REJECTED purchase orders can be approved
  • User must be an assigned approver for the purchase order
  • Approvers are processed in order by level
  • If all approvers approve, status changes to FOR_SENDING
  • Status will remain as FOR_PO_APPROVAL until fully approved
  • Additional approvers can be added during the approval process
  • Approvers can input a note during approval
  • Approvers can edit item quantity or delete an item from the table
  • Changes in quantity should reflect in the remaining qty to be canvassed
  • If all approvers approve, status changes to FOR_SENDING
  • See Detailed Approval Business Rules

4. Purchase Order Rejection

Actor: Approvers

Actions:

  • Review the purchase order
  • Reject the purchase order
  • Provide rejection reason

Status Transitions:

  • FOR_PO_APPROVAL → PO_REJECTED

Business Rules:

  • Only FOR_PO_APPROVAL purchase orders can be rejected
  • User must be an assigned approver for the purchase order
  • Rejection requires a reason/comment
  • Upon rejection, status changes to PO_REJECTED

5. Purchase Order Sending and Delivery Status Trigger

Actor: Assigned Purchasing Staff

Actions:

  • Send PO to supplier manually (outside of the system)
  • Update status from FOR_SENDING to FOR_DELIVERY using floating banner
  • Confirm delivery initiation

Status Transitions:

  • FOR_SENDING → FOR_DELIVERY (manual trigger)

Business Rules:

  • Purchasing Staff manually sends PO to supplier offline
  • A floating banner appears to allow status update to FOR_DELIVERY
  • Once updated to FOR_DELIVERY, requesters can create delivery reports
  • Status change enables delivery tracking and monitoring

6. Adding of Incidental Costs after Approval

Actor: Assigned Purchasing Staff

Actions:

  • Add incidental costs to approved purchase orders
  • Recompute PO amount with incidental costs
  • Submit for re-approval

Status Transitions:

  • FOR_SENDING → FOR_PO_APPROVAL (when incidental costs added)
  • FOR_DELIVERY → FOR_PO_APPROVAL (when incidental costs added)

Business Rules:

  • Incidental costs can be added after PO is fully approved
  • Can be added when status is FOR_SENDING or FOR_DELIVERY
  • Must have at least one receiving report, invoice report, or payment request created
  • Sum of all payment requests must not equal full PO amount
  • No draft status for incidental costs - goes directly to approval
  • Same approvers will re-approve the modified PO
  • Existing receiving reports are retained
  • Target payment request amount is updated accordingly - Draft PR
  • Editing will be disabled when incidental cost is already applied to a Payment Request (For Approval)

Viewing Incidental Cost:

  • All users (except root user) can view incidental cost in a PO
  • Incidental cost are displayed only when data exists in the fields

7. Purchase Order Cancellation

Actor: System, Purchasing Staff, or Requester

Actions:

  • Cancel the purchase order (full or partial)
  • Provide cancellation reason
  • Handle delivery scenarios

Status Transitions:

  • FOR_PO_REVIEW → CANCELLED_PO
  • FOR_PO_APPROVAL → CANCELLED_PO
  • FOR_DELIVERY → CANCELLED_PO (partial cancellation scenarios)

Business Rules:

General Cancellation:

  • Purchase orders with status FOR_PO_REVIEW or FOR_PO_APPROVAL can be cancelled if supplier is suspended
  • Purchase orders with status FOR_DELIVERY can be cancelled if not yet fully delivered (see scenarios below)
  • Manual cancellation requires a reason
  • Purchase order approvers are removed upon cancellation
  • Cancelled PO items can be canvassed again (add PO Qty to Remaining Qty to be canvassed)

Delivery-Based Cancellation Scenarios:

Scenario 1 - No Items Delivered:

  • Allow full PO cancellation
  • Return all items as options for canvassing
  • PO status will be CANCELLED_PO

Scenario 2 - Partial Items Delivered:

  • Allow cancellation for unfulfilled quantities only
  • Return unfulfilled items as options for canvassing
  • PO status will be CANCELLED_PO

Scenario 3 - All Items Fully Delivered:

  • Do not allow PO cancellation
  • Cancel button not available

8. Delivery and Payment Monitoring

Actor: System (Automatic Monitoring)

Actions:

  • Monitor delivery quantities against PO quantities
  • Monitor payment requests against PO amounts
  • Automatically close PO when conditions are met

Status Transitions:

  • FOR_DELIVERY → CLOSED_PO (when fully delivered and fully paid)

Business Rules:

Delivery Monitoring:

  • Track quantity delivered per item against PO quantities
  • Monitor all delivery reports related to the PO
  • PO item quantities must equal delivered item quantities for closure

Payment Monitoring:

  • Monitor PO amount against sum of all payment requests
  • PO amount must equal the total of all related payment requests
  • This ensures the PO amount has been fully paid

Auto-Closure Conditions:

  • All PO items are fully delivered (quantities match)
  • All PO amounts are fully paid (payment requests sum equals PO total)
  • Both conditions must be met simultaneously for auto-closure

9. Purchase Order Closure

Actor: System (Automatic)

Actions:

  • Automatically update status to CLOSED_PO
  • Complete the purchase order lifecycle

Status Transitions:

  • FOR_DELIVERY → CLOSED_PO (automatic when conditions met)

Business Rules:

  • Closure is automatic when both delivery and payment conditions are satisfied
  • No manual intervention required for closure
  • Closed POs cannot be modified or cancelled

Example Scenarios

Scenario 1: Standard Purchase Order Flow

  1. System creates purchase orders after canvass approval
  2. Purchasing Staff reviews and updates purchase order details
  3. Purchasing Staff submits the purchase order for approval
  4. Approvers review and approve the purchase order
  5. Purchase order status changes to FOR_SENDING
  6. Purchasing Staff sends the Purchase Order to supplier offline
  7. Purchasing Staff manually changes status from FOR_SENDING to FOR_DELIVERY using floating banner
  8. Items are delivered and delivery reports are created
  9. Payment requests are processed
  10. System automatically closes PO when fully delivered and paid

Scenario 2: Purchase Order with Incidental Costs

  1. Standard flow up to FOR_DELIVERY status
  2. Purchasing Staff adds incidental costs (additional fees)
  3. PO amount is recomputed and status returns to FOR_PO_APPROVAL
  4. Same approvers re-approve the modified PO
  5. Status progresses back to FOR_SENDING, then FOR_DELIVERY
  6. Existing delivery reports are retained
  7. Payment requests are updated with new target amounts
  8. System monitors and auto-closes when conditions are met

Scenario 3: Purchase Order with Partial Cancellation

  1. Standard flow up to FOR_DELIVERY status
  2. Some items are delivered, others are not
  3. User cancels PO for undelivered items only
  4. Cancelled quantities return to canvassing options
  5. PO status remains FOR_DELIVERY for delivered items
  6. System continues monitoring for auto-closure of remaining items

Scenario 4: Purchase Order with Rejection and Incidental Costs

  1. System creates purchase orders after canvass approval
  2. Purchasing Staff reviews and submits for approval
  3. An approver rejects the purchase order with a reason
  4. Purchasing Staff updates the purchase order and resubmits
  5. Approvers approve the purchase order
  6. Status progresses to FOR_SENDING, then FOR_DELIVERY
  7. During delivery, incidental costs are added
  8. PO returns to approval cycle with same approvers
  9. After re-approval, continue with delivery and payment monitoring
  10. System auto-closes when fully delivered and paid

Common Issues and Solutions

Issue 1: Cannot Submit Purchase Order

Cause: Missing required fields or validation errors.

Solution:

  • Check validation error messages
  • Ensure all required fields are filled
  • Verify delivery address is specified

Issue 2: Purchase Order Approval Issues

Cause: Approvers not assigned correctly or missing permissions.

Solution:

  • Check if approvers are assigned correctly
  • Verify approver permissions
  • Ensure approvers are active users

Issue 3: Purchase Order Not Auto-Closing

Cause: Delivery or payment monitoring conditions not met.

Solution:

  • Verify all items have matching delivered quantities
  • Check that payment requests sum equals PO total amount
  • Ensure delivery reports are properly linked to PO
  • Check payment request status and amounts

Issue 4: Incidental Costs Re-approval Issues

Cause: Approver workflow not triggered or incorrect status transition.

Solution:

  • Verify PO has receiving reports, invoices, or payment requests
  • Check that payment requests don't already sum to full PO amount
  • Ensure same approvers are assigned for re-approval
  • Verify notification system is working for approvers

Issue 5: Partial Cancellation Problems

Cause: Delivery status not properly tracked or calculated.

Solution:

  • Verify delivery reports are correctly linked to PO items
  • Check quantity calculations for delivered vs. remaining items
  • Ensure canvassing quantities are properly updated for cancelled items
  • Verify cancellation logic handles mixed delivery scenarios