title: “Purchase Order” description: “Purchase order dengan approval workflow, partial receiving, supplier integration, dan tracking end-to-end.”
Purchase Order

Arsitektur Purchase Order
Status PO — Lifecycle Lengkap
Field PO — Detail Lengkap
Header PO
Line Items
Workflow Approval
Penerimaan Barang (Receiving)
Partial Receiving
Sistem mendukung penerimaan parsial — kamu bisa menerima sebagian barang terlebih dahulu jika belum semua item tersedia:Proses Penerimaan
Field Penerimaan
Perbandingan Ordered vs Received
Riwayat & Filter
Integrasi dengan Modul Lain
Cetak & Kirim PO
Tips
- Gunakan data stok minimum dari Stock Management sebagai acuan quantity pemesanan — jangan memesan berdasarkan perkiraan.
- Dokumentasikan setiap penerimaan dengan foto jika ada barang yang rusak atau tidak sesuai, supaya mudah diklaim ke supplier.
- Evaluasi supplier secara berkala berdasarkan ketepatan waktu pengiriman dan kualitas barang yang tercatat di riwayat PO.
- Manfaatkan partial receiving — jangan menunggu semua barang datang jika sebagian sudah bisa digunakan untuk produksi.
Entity Relationship Diagram (ERD)
Diagram berikut menggambarkan relasi antar entitas utama yang terlibat dalam alur Purchase Order — mulai dari Supplier sebagai sumber bahan baku, Purchase Order sebagai dokumen pemesanan, StockMovement sebagai pencatatan pergerakan barang, hingga CompanyPOSInventory sebagai audit trail stok di level POS.Penjelasan Relasi
Entity Schema Lengkap
Schema: PurchaseOrder
Berikut adalah seluruh field yang tersimpan di entitas PurchaseOrder, sesuai definisi dibase44/entities/PurchaseOrder.jsonc.
Required fields:
company_id, supplier_id, po_date, items
Schema: Supplier
Berikut adalah seluruh field yang tersimpan di entitas Supplier, sesuai definisi dibase44/entities/Supplier.jsonc.
Required fields:
company_id, company_name
State Machine — Siklus Hidup Purchase Order
Diagram berikut menunjukkan seluruh transisi status yang valid untuk sebuah Purchase Order, dari pembuatan hingga penutupan. Setiap panah mewakili satu aksi yang bisa dilakukan oleh user atau sistem.Tabel Transisi Status
Penjelasan Detail Lifecycle
- Draft — PO masih dalam tahap penyusunan. User bisa menambah, mengubah, atau menghapus item. Belum ada notifikasi ke supplier. Total dihitung otomatis tapi belum final.
- Sent — PO sudah dikirim ke supplier (via email, cetak PDF, atau WhatsApp). Data PO dikunci — tidak bisa diubah lagi. Supplier diharapkan memberikan konfirmasi penerimaan pesanan.
- Confirmed — Supplier telah mengkonfirmasi pesanan. Tahap ini menandakan supplier siap mengirim barang sesuai PO. User mulai bisa melakukan receiving.
-
Received — Barang sudah diterima di gudang. Jika semua item diterima lengkap,
received_statusberubah menjadifully_received. Jika sebagian, tetappartially_receiveddan user bisa menerima sisa di kemudian hari. Setiap penerimaan memicu pembuatan recordStockMovementbertipein. - Invoiced — Invoice dari supplier sudah dicatat dan diverifikasi. Nilai invoice dicocokkan dengan total PO dan barang yang benar-benar diterima. Tahap ini memicu pencatatan hutang di modul Keuangan.
- Cancelled — PO dibatalkan, bisa karena supplier menolak, barang tidak tersedia, atau keputusan internal. PO yang sudah dibatalkan tidak bisa di-reopen.
Sequence Diagram — Alur Lengkap PO
1. Pembuatan PO (Creation)
2. Approval & Pengiriman ke Supplier
3. Penerimaan Barang (Receiving)
4. Stock Update & Audit Trail
Evaluasi & Klasifikasi Supplier
Sistem SNISHOP menyediakan mekanisme evaluasi supplier berbasis skor validasi dan klasifikasi tipe supplier. Kedua aspek ini membantu tim procurement membuat keputusan pembelian yang lebih baik.Skor Validasi Supplier (validation_score)
Skor validasi dihitung otomatis berdasarkan kelengkapan data supplier. Skor ini membantu mengidentifikasi supplier mana yang datanya masih perlu dilengkapi sebelum bisa diproses secara penuh.
Interpretasi Skor
Klasifikasi Tipe Supplier (supplier_type)
Tipe supplier menentukan aturan penerimaan dan dokumen yang diperlukan saat barang tiba di gudang.
Matriks Evaluasi Supplier Berkala
Selain skor validasi, evaluasi berkala dilakukan berdasarkan kinerja nyata supplier yang tercatat di riwayat PO.Schema: StockMovement (Detail Lengkap)
Entitas StockMovement adalah tulang punggung audit trail stok. Setiap kali stok berubah — baik karena pembelian, penjualan, produksi, transfer, atau adjustment — satu record StockMovement dibuat.
Required fields:
company_id, inventory_id, movement_type, quantity
Tipe Pergerakan Stok (movement_type)
Schema: CompanyPOSInventory (Detail Lengkap)
Entitas ini berfungsi sebagai audit trail stok di level POS (Point of Sale). Setiap perubahan stok tercatat di sini agar sistem POS selalu memiliki data stok real-time.
Required fields:
company_id, product_id, type, quantity
Ringkasan Alur Data End-to-End
Diagram berikut merangkum bagaimana data mengalir dari pembuatan PO hingga stok terupdate di sistem POS:Catatan Implementasi
- Denormalisasi: Field seperti
supplier_name,product_name,location_namedisimpan langsung di entitas terkait untuk menghindari join berulang saat query. Ini trade-off antara konsistensi data dan performa baca. - Idempotency: Setiap StockMovement memiliki
idempotency_keyuntuk mencegah duplikasi jika ada retry pada proses penerimaan barang. - Row-Level Security (RLS): Semua entitas menggunakan RLS berdasarkan
company_iduntuk memastikan setiap perusahaan hanya melihat datanya sendiri. - Traceability Lot: Field
lot_iddanlot_numberdi StockMovement memungkinkan pelacakan batch dari supplier hingga ke produk jadi — penting untuk standar HACCP dan recall produk. - FIFO/FEFO: Strategi alokasi (
fifoataufefo) dicatat di setiap StockMovement keluar untuk audit kepatuhan terhadap prosedur pengeluaran stok.
