Flow Information
Purpose: To fully stock the warehouse
User Roles: HQ Purchasing, HQ Admin
Actors: HQ Purchasing, Warehouse Keeper
Payment Types: COD, CBD, Contrabon
flowchart TD
A(("1 System
Return Process Initiated
From QC Failure or Partial Receipt")) --> B(["2 Purchase Staff
Purchase Staff Notified"]) B --> C(["3 Purchase Staff
Contact Vendor for Return/Refund"]) C --> D{"4 Vendor
Vendor Agrees?"} D -- No --> D_NO(["5 Purchase Staff
Purchase Staff Escalates Issue"]) D_NO --> D_DISPUTE[["6 System
Dispute Resolution Process"]] D -- Yes --> E{"7 Vendor
Return or Replacement?"} E -- Replacement --> F_REPLACE(["8 Vendor
Vendor Ships Replacement Goods"]) F_REPLACE --> G_REPLACE(["9 Auditor
New Goods Received by Auditor"]) G_REPLACE --> H_REPLACE(["10 Auditor
Restart QC Process"]) E -- Return --> F_REFUND(["11 Purchase Staff
Purchase Staff Arranges Goods Return"]) F_REFUND --> G_REFUND(["12 Vendor
Vendor Confirms Receipt of Returned Goods"]) G_REFUND --> H_REFUND{"13 Vendor
Refund Type?"} H_REFUND -- Full Cash --> I_FULL(["14 Purchase Staff
Request Full Refund from Vendor"]) I_FULL --> J_FULL(["15 Finance
Finance Receives Full Refund"]) J_FULL --> K_FULL(["16 Finance
Update Payment Status: Refunded"]) K_FULL --> L_FULL[["17 System
Return Process Complete"]] H_REFUND -- Partial Cash --> I_PARTIAL(["18 Purchase Staff
Request Partial Refund from Vendor"]) I_PARTIAL --> J_PARTIAL(["19 Finance
Finance Receives Partial Refund"]) J_PARTIAL --> K_PARTIAL(["20 Finance
Update Payment Status: Partially Refunded"]) K_PARTIAL --> L_PARTIAL[["21 System
Return Process Complete"]] H_REFUND -- Deposit --> I_DEPOSIT(["22 Purchase
Upload Vendor acknowledge"]) I_DEPOSIT --> J_DEPOSIT(["23 Purchase Staff
Purchase Staff Records Deposit for Next Order"]) J_DEPOSIT --> K_DEPOSIT(["24 Finance
Update Payment Status: Deposit"]) K_DEPOSIT --> L_DEPOSIT[["25 System
Return Process Complete"]] 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 class A styleStart class B,C,D_NO,F_REPLACE,G_REPLACE,H_REPLACE,F_REFUND,G_REFUND,I_FULL,J_FULL,K_FULL,I_PARTIAL,J_PARTIAL,K_PARTIAL,I_DEPOSIT,J_DEPOSIT,K_DEPOSIT styleSubmit class D,E,H_REFUND,D_DISPUTE styleDecision class L_FULL,L_PARTIAL,L_DEPOSIT styleEnd click I_DEPOSIT call toggleDepositPopover() class I_DEPOSIT interactive-node
Return Process Initiated
From QC Failure or Partial Receipt")) --> B(["2 Purchase Staff
Purchase Staff Notified"]) B --> C(["3 Purchase Staff
Contact Vendor for Return/Refund"]) C --> D{"4 Vendor
Vendor Agrees?"} D -- No --> D_NO(["5 Purchase Staff
Purchase Staff Escalates Issue"]) D_NO --> D_DISPUTE[["6 System
Dispute Resolution Process"]] D -- Yes --> E{"7 Vendor
Return or Replacement?"} E -- Replacement --> F_REPLACE(["8 Vendor
Vendor Ships Replacement Goods"]) F_REPLACE --> G_REPLACE(["9 Auditor
New Goods Received by Auditor"]) G_REPLACE --> H_REPLACE(["10 Auditor
Restart QC Process"]) E -- Return --> F_REFUND(["11 Purchase Staff
Purchase Staff Arranges Goods Return"]) F_REFUND --> G_REFUND(["12 Vendor
Vendor Confirms Receipt of Returned Goods"]) G_REFUND --> H_REFUND{"13 Vendor
Refund Type?"} H_REFUND -- Full Cash --> I_FULL(["14 Purchase Staff
Request Full Refund from Vendor"]) I_FULL --> J_FULL(["15 Finance
Finance Receives Full Refund"]) J_FULL --> K_FULL(["16 Finance
Update Payment Status: Refunded"]) K_FULL --> L_FULL[["17 System
Return Process Complete"]] H_REFUND -- Partial Cash --> I_PARTIAL(["18 Purchase Staff
Request Partial Refund from Vendor"]) I_PARTIAL --> J_PARTIAL(["19 Finance
Finance Receives Partial Refund"]) J_PARTIAL --> K_PARTIAL(["20 Finance
Update Payment Status: Partially Refunded"]) K_PARTIAL --> L_PARTIAL[["21 System
Return Process Complete"]] H_REFUND -- Deposit --> I_DEPOSIT(["22 Purchase
Upload Vendor acknowledge"]) I_DEPOSIT --> J_DEPOSIT(["23 Purchase Staff
Purchase Staff Records Deposit for Next Order"]) J_DEPOSIT --> K_DEPOSIT(["24 Finance
Update Payment Status: Deposit"]) K_DEPOSIT --> L_DEPOSIT[["25 System
Return Process Complete"]] 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 class A styleStart class B,C,D_NO,F_REPLACE,G_REPLACE,H_REPLACE,F_REFUND,G_REFUND,I_FULL,J_FULL,K_FULL,I_PARTIAL,J_PARTIAL,K_PARTIAL,I_DEPOSIT,J_DEPOSIT,K_DEPOSIT styleSubmit class D,E,H_REFUND,D_DISPUTE styleDecision class L_FULL,L_PARTIAL,L_DEPOSIT styleEnd click I_DEPOSIT call toggleDepositPopover() class I_DEPOSIT interactive-node
Color Legend
Start Process
Submit Actions
Decision Points
Payment Types
Cancel/Error
End Process
Link to other flow
Use Case: Pengembalian Barang (Return & Refund)
Skenario: Proses tindak lanjut setelah QC menolak barang atau penerimaan parsial dari PO-002 (PT Sentralsari) dan PO-003 (PT Trisna Pangan).
- Pemicu: Sistem mendeteksi hasil QC "Rejected" atau "Partial" 1.
- Aktor: Staff Pembelian (Purchase Staff).
- Tindakan:
- Staff menghubungi vendor terkait (PT Trisna Pangan untuk Matcha yg rusak) 3.
- Staff menegosiasikan solusi: Tukar Barang (Replacement) atau Kembali Uang (Refund).
Kasus A: Pengembalian Dana (Full Cash Refund)
- Vendor: PT Trisna Pangan setuju mengembalikan uang untuk 4kg Matcha yang rusak.
- Proses:
- Vendor transfer dana ke rekening perusahaan 14.
- Finance memverifikasi penerimaan dana 15.
- Status PO diupdate menjadi "Refunded" 16.
Kasus B: Deposit (Vendor Balance)
- Vendor: PT Aroma Jaya (Skenario Tambahan) menolak refund tunai, tapi setuju menjadikannya deposit.
- Proses:
- Staff Pembelian mengupload bukti persetujuan vendor (Chat/Email) sebagai "Vendor Acknowledge" 22.
- Sistem mencatat nilai tersebut sebagai Deposit untuk pembelian berikutnya 23.
- Finance memvalidasi status menjadi "Deposit" 24.