Skip to main content

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

Purchase Order

Purchase Order Purchase Order (PO) adalah modul untuk memesan bahan baku dari supplier secara terstruktur. Setiap PO melewati workflow approval, bisa diterima secara parsial (sebagian), dan terintegrasi langsung dengan Supplier Management dan Stock Management. Sistem ini memastikan setiap pembelian tercatat, terkontrol, dan bisa dipertanggungjawabkan.

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 di base44/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 di base44/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

  1. Draft — PO masih dalam tahap penyusunan. User bisa menambah, mengubah, atau menghapus item. Belum ada notifikasi ke supplier. Total dihitung otomatis tapi belum final.
  2. 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.
  3. Confirmed — Supplier telah mengkonfirmasi pesanan. Tahap ini menandakan supplier siap mengirim barang sesuai PO. User mulai bisa melakukan receiving.
  4. Received — Barang sudah diterima di gudang. Jika semua item diterima lengkap, received_status berubah menjadi fully_received. Jika sebagian, tetap partially_received dan user bisa menerima sisa di kemudian hari. Setiap penerimaan memicu pembuatan record StockMovement bertipe in.
  5. 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.
  6. 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_name disimpan langsung di entitas terkait untuk menghindari join berulang saat query. Ini trade-off antara konsistensi data dan performa baca.
  • Idempotency: Setiap StockMovement memiliki idempotency_key untuk mencegah duplikasi jika ada retry pada proses penerimaan barang.
  • Row-Level Security (RLS): Semua entitas menggunakan RLS berdasarkan company_id untuk memastikan setiap perusahaan hanya melihat datanya sendiri.
  • Traceability Lot: Field lot_id dan lot_number di StockMovement memungkinkan pelacakan batch dari supplier hingga ke produk jadi — penting untuk standar HACCP dan recall produk.
  • FIFO/FEFO: Strategi alokasi (fifo atau fefo) dicatat di setiap StockMovement keluar untuk audit kepatuhan terhadap prosedur pengeluaran stok.