Flow Information
Purpose: Request Goods (RO) & Generate Purchase Orders (PO)
User Roles: Outlet Manager, Purchasing, Finance, Auditor
Actors: Head Section, Outlet Manager, Purchase Staff, Finance
Order Structure:
- RO (Request Order): Initial request from outlet.
- PO (Purchase Order): Vendor-specific order derived from RO.
- Statuses: Requested, Approved, On Review, Ordered, Paid, Finished
flowchart TD
subgraph RO_Phase ["Request Order (RO) Process"]
direction TB
A(("1 Head Section
Creates RO")) --> B(["2 Head Section
Submit Request Order (RO)"]) B --> C(["3 Outlet Manager
Review RO"]) C --> C_EDIT(["3a Outlet Manager
Adjust/Reduce Quantity"]) C_EDIT --> D{"4 Outlet Manager
Approve RO?"} D -- No --> E_CANCEL[["5 System
RO Cancelled"]] D -- Yes --> F(["6 System
RO Status: Approved"]) F --> G(["7 Purchase Staff
Receives RO
Set Status: 'On Review'"]) end subgraph PO_Phase ["Sourcing & PO Generation"] direction TB G --> H(["8 Purchase Staff
Contact Vendors &
Check Availability"]) H --> I[["9 Purchase Staff
Generate PO
(One PO per Vendor)"]] I --> J(["10 System
Alert Finance for Payment"]) J --> K(["11 Finance
Process the payment"]) K --> L[["12 System
Set PO Payment: 'Paid'
Set PO Status: 'Ordered'"]] end subgraph Fulfillment_Phase ["Delivery & QC"] direction TB L --> M(["13 Auditor
Receives Goods
(Per PO)"]) M --> N(["14 Auditor
Perform Quality Control (QC)"]) N --> O{"15 Auditor
QC Result Matches PO?"} O -- Yes --> P[["16 System
Mark PO as Finished"]] O -- Partial --> Q(["17 Auditor
Add Notes to PO Record"]) Q --> R(["18 Auditor
Adjust Quantity,
Update PO as Hold
Initiate Return Process"]) R --> W{"19 Purchase Staff
Recreate PO for
Missing Items?"} W -- Yes --> H W -- No --> P O -- No --> S(["20 System
Update PO Status: Rejected
Initiate Return Process"]) end click R "returns_flowchart.php" "Click for detailed return/refund flow" click S "returns_flowchart.php" "Click for detailed return/refund flow" S --> T(["21 Auditor
Add Notes to PO Record"]) T --> U{"22 Purchase Staff
Recreate PO?"} U -- Yes --> H U -- No --> V[["23 System
PO Permanently Closed"]] click I call toggleGeneratePoTooltip() click M "inventory_flowchart.php" "Click for detailed inventory flow" click C call toggleReviewPopover() click L call toggleSetPoStatusTooltip() classDef styleStart fill:#E3F2FD,stroke:#1976D2,stroke-width:1px,color:#1976D2 classDef styleSubmit fill:#FFFFFF,stroke:#808080,stroke-width:1px,color:#6a6a6a classDef styleDecision fill:#FFF3E0,stroke:#FF8C00,stroke-width:1px,color:#FF8C00 classDef stylePayment fill:#E8F5E8,stroke:#4CAF50,stroke-width:1px,color:#4CAF50 classDef styleError fill:#FFEBEE,stroke:#F44336,stroke-width:1px,color:#F44336 classDef styleEnd fill:#c1fabd,stroke:#35c454,stroke-width:1px,color:#0c6d12 classDef styleSystem fill:#e9ecef,stroke:#495057,stroke-width:1px,color:#495057 classDef styleLink fill:#b3e3ff,stroke:#5fb3e3,stroke-width:1px,color:#06293d class A styleStart class P,V styleEnd class B,C,C_EDIT,F,G,H,J,K,M,N,Q,T styleSubmit class I,R,S,L styleLink class D,O,U,W styleDecision class E_CANCEL styleError class C,I,M,R,S,L interactive-node style RO_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5 style PO_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5 style Fulfillment_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
Creates RO")) --> B(["2 Head Section
Submit Request Order (RO)"]) B --> C(["3 Outlet Manager
Review RO"]) C --> C_EDIT(["3a Outlet Manager
Adjust/Reduce Quantity"]) C_EDIT --> D{"4 Outlet Manager
Approve RO?"} D -- No --> E_CANCEL[["5 System
RO Cancelled"]] D -- Yes --> F(["6 System
RO Status: Approved"]) F --> G(["7 Purchase Staff
Receives RO
Set Status: 'On Review'"]) end subgraph PO_Phase ["Sourcing & PO Generation"] direction TB G --> H(["8 Purchase Staff
Contact Vendors &
Check Availability"]) H --> I[["9 Purchase Staff
Generate PO
(One PO per Vendor)"]] I --> J(["10 System
Alert Finance for Payment"]) J --> K(["11 Finance
Process the payment"]) K --> L[["12 System
Set PO Payment: 'Paid'
Set PO Status: 'Ordered'"]] end subgraph Fulfillment_Phase ["Delivery & QC"] direction TB L --> M(["13 Auditor
Receives Goods
(Per PO)"]) M --> N(["14 Auditor
Perform Quality Control (QC)"]) N --> O{"15 Auditor
QC Result Matches PO?"} O -- Yes --> P[["16 System
Mark PO as Finished"]] O -- Partial --> Q(["17 Auditor
Add Notes to PO Record"]) Q --> R(["18 Auditor
Adjust Quantity,
Update PO as Hold
Initiate Return Process"]) R --> W{"19 Purchase Staff
Recreate PO for
Missing Items?"} W -- Yes --> H W -- No --> P O -- No --> S(["20 System
Update PO Status: Rejected
Initiate Return Process"]) end click R "returns_flowchart.php" "Click for detailed return/refund flow" click S "returns_flowchart.php" "Click for detailed return/refund flow" S --> T(["21 Auditor
Add Notes to PO Record"]) T --> U{"22 Purchase Staff
Recreate PO?"} U -- Yes --> H U -- No --> V[["23 System
PO Permanently Closed"]] click I call toggleGeneratePoTooltip() click M "inventory_flowchart.php" "Click for detailed inventory flow" click C call toggleReviewPopover() click L call toggleSetPoStatusTooltip() classDef styleStart fill:#E3F2FD,stroke:#1976D2,stroke-width:1px,color:#1976D2 classDef styleSubmit fill:#FFFFFF,stroke:#808080,stroke-width:1px,color:#6a6a6a classDef styleDecision fill:#FFF3E0,stroke:#FF8C00,stroke-width:1px,color:#FF8C00 classDef stylePayment fill:#E8F5E8,stroke:#4CAF50,stroke-width:1px,color:#4CAF50 classDef styleError fill:#FFEBEE,stroke:#F44336,stroke-width:1px,color:#F44336 classDef styleEnd fill:#c1fabd,stroke:#35c454,stroke-width:1px,color:#0c6d12 classDef styleSystem fill:#e9ecef,stroke:#495057,stroke-width:1px,color:#495057 classDef styleLink fill:#b3e3ff,stroke:#5fb3e3,stroke-width:1px,color:#06293d class A styleStart class P,V styleEnd class B,C,C_EDIT,F,G,H,J,K,M,N,Q,T styleSubmit class I,R,S,L styleLink class D,O,U,W styleDecision class E_CANCEL styleError class C,I,M,R,S,L interactive-node style RO_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5 style PO_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5 style Fulfillment_Phase fill:none,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
Color Legend
Start Process
Submit Actions
Decision Points
Payment Types
Cancel/Error
End Process
Link to other flow
Use Case: Permintaan Bagian Bakery
Skenario: Head Section (Bakery) perlu mengisi ulang stok 8 bahan spesifik.
Item: Tepung (10kg), Keju (12pcs), Matcha (4kg), Apel Fuji (5kg), Telur (10kg), Cleo (10gal), Madu Murni (3btl), Garam (7pck).
Item: Tepung (10kg), Keju (12pcs), Matcha (4kg), Apel Fuji (5kg), Telur (10kg), Cleo (10gal), Madu Murni (3btl), Garam (7pck).
- Aktor: Head Section (Bakery)
- Tindakan: Masuk ke sistem dan membuat satu dokumen RO 1.
- Input: User memilih semua 8 item dari daftar master dan memasukkan jumlah yang diminta.
- Catatan: User tidak perlu memikirkan vendor pada tahap ini. Mereka hanya memilih apa yang mereka butuhkan sesuai item yang disediakan system.
- Pengajuan: RO disubmit untuk mendapat persetujuan Outlet Manager 2.
- Persetujuan: Outlet Manager meninjau kebutuhan barang 3. Jika diperlukan, Manager dapat mengurangi jumlah item 3a sebelum mengklik Approve (Setujui) 4.
- Hasil: Status RO berubah menjadi
Approved6.
- Aktor: Staff Pembelian (Purchase Staff)
- Tindakan: Menerima RO yang telah disetujui 7. Sistem secara otomatis mengelompokkan item berdasarkan vendor yang tertaut (Vendor juga dapat diubah jika barang memiliki lebih dari satu vendor) 9.
- Logika: Satu RO dipecah menjadi beberapa PO (Satu PO per Vendor).
- PO yang Dihasilkan:
No. PO Vendor Item yang Termasuk PO-001 Muliaraya Tepung (10 kg) PO-002 PT Sentralsari Keju (12 pcs), Cleo (10 gal) PO-003 PT Trisna Pangan Matcha (4 kg), Apel Fuji (5 kg) PO-004 CV Rumah Pitiku Telur (10 kg) (Vendor utama dipilih) PO-005 PT Aroma Jaya Madu Murni (3 btl), Garam (7 pck) - Pembayaran: Keuangan (Finance) memproses 5 pembayaran terpisah 11.
- Status: Semua 5 PO diatur ke status
Ordered12.
Skenario: Barang tiba untuk PO-002 (PT Sentralsari) dan PO-003 (PT Trisna Pangan).
Kasus A: Penerimaan Parsial (PO-002)
- Item yang Diperiksa:
- Keju (12 pcs) → Jumlah Sesuai, Kondisi Baik → OK
- Cleo (10 gal) → Hanya 9 galon yang tiba → Parsial
- Tindakan: Auditor menandai PO sebagai Parsial 17. Sistem mencatat 1 galon sebagai "Terhutang" (Backorder) atau membatalkannya tergantung kebijakan 18.
Kasus B: Penolakan Kualitas (PO-003)
- Item yang Diperiksa:
- Matcha (4 kg) → Sesuai → OK
- Apel Fuji (5 kg) → 1 kg busuk/memar → Tolak 1 kg
- Tindakan:
- Auditor menerima 4kg Apel + 4kg Matcha 13.
- Auditor membuat Permintaan Retur untuk 1kg Apel Fuji 20.
- Status PO diperbarui menjadi
Finished (with Returns)20.