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
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).

  • 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 Approved 6.

  • 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 Ordered 12.

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.