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¶
- System creates purchase orders after canvass approval
- Purchasing Staff reviews and updates purchase order details
- Purchasing Staff submits the purchase order for approval
- Approvers review and approve the purchase order
- Purchase order status changes to FOR_SENDING
- Purchasing Staff sends the Purchase Order to supplier offline
- Purchasing Staff manually changes status from FOR_SENDING to FOR_DELIVERY using floating banner
- Items are delivered and delivery reports are created
- Payment requests are processed
- System automatically closes PO when fully delivered and paid
Scenario 2: Purchase Order with Incidental Costs¶
- Standard flow up to FOR_DELIVERY status
- Purchasing Staff adds incidental costs (additional fees)
- PO amount is recomputed and status returns to FOR_PO_APPROVAL
- Same approvers re-approve the modified PO
- Status progresses back to FOR_SENDING, then FOR_DELIVERY
- Existing delivery reports are retained
- Payment requests are updated with new target amounts
- System monitors and auto-closes when conditions are met
Scenario 3: Purchase Order with Partial Cancellation¶
- Standard flow up to FOR_DELIVERY status
- Some items are delivered, others are not
- User cancels PO for undelivered items only
- Cancelled quantities return to canvassing options
- PO status remains FOR_DELIVERY for delivered items
- System continues monitoring for auto-closure of remaining items
Scenario 4: Purchase Order with Rejection and Incidental Costs¶
- System creates purchase orders after canvass approval
- Purchasing Staff reviews and submits for approval
- An approver rejects the purchase order with a reason
- Purchasing Staff updates the purchase order and resubmits
- Approvers approve the purchase order
- Status progresses to FOR_SENDING, then FOR_DELIVERY
- During delivery, incidental costs are added
- PO returns to approval cycle with same approvers
- After re-approval, continue with delivery and payment monitoring
- 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