Bab 5 — Purchase Order (Pembelian)
5.1 Melihat daftar PO
Menu: Operasi → Pembelian → Daftar PO (/admin/purchase-orders)
| Status | Arti |
|---|---|
| Draft | Masih disusun |
| Dikirim (SENT) | Sudah ke vendor, menunggu barang |
| Diterima sebagian (PARTIALLY_RECEIVED) | Sebagian qty sudah masuk stok |
| Diterima (RECEIVED) | Semua qty diterima |
| Dibatalkan | PO batal |
5.2 Membuat PO baru
Draft & autosave (pencatatan bertahap)
Sama seperti SO, form PO mendukung dua lapisan penyimpanan sementara:
| Cara | Apa yang terjadi | Kapan dipakai |
|---|---|---|
| Autosave browser | Form tersimpan otomatis di browser. Jika tab tertutup, buka form lagi → Lanjutkan / Buang | Sedang mengisi, takut kehilangan data |
| Simpan Draft | PO tersimpan di server status Draft. Lanjutkan di detail PO, lalu Kirim ke Vendor | Isi bertahap, ganti vendor, atau tunggu konfirmasi harga |
Autosave hanya di browser yang sama. Simpan Draft menyimpan ke server agar bisa dibuka dari perangkat/user lain yang punya akses.
PO manual (umum)
- Buat PO baru (
/admin/purchase-orders/new). - Pilih Vendor dan Entity (stok masuk EITO atau ALBATROSS). Diskon % baris bisa terisi otomatis dari default diskon vendor.
- Tambah item: SKU, qty, harga beli, diskon baris.
- Tanggal order / expected date / catatan.
- Pilih cara simpan:
- Simpan Draft — tersimpan di server, belum dikirim ke vendor.
- Buat / Kirim (sesuai UI) — lanjut proses operasional.
PO dari Sales Order (pengadaan)
Untuk SO Pending Fulfillment, DRAFT (kekurangan stok), atau Confirmed yang masih short:
- Buka Detail SO → klik Buat PO Pengadaan (atau Buat PO Pengadaan Lanjutan jika sudah ada PO).
- Anda diarahkan ke
/admin/purchase-orders/new?salesOrderId=.... - Form menampilkan banner PO dikaitkan ke SO dan mengisi otomatis:
- Entity sama dengan SO
- Catatan referensi nomor SO
- Item = SKU yang masih kekurangan (qty = sisa demand − stok tersedia − qty di PO aktif)
- Nama produk / SKU dari template SO
- Harga = harga di baris SO (bisa disesuaikan)
- Pilih Vendor, lengkapi tanggal jika perlu.
- Simpan Draft atau lanjutkan proses PO.
PO tersimpan dengan relasi ke SO. PO muncul di panel Purchase Order Terkait di detail SO dan di Board Pengadaan (Bab 4.11).
Multi PO / PO Pengadaan Lanjutan
Satu SO boleh punya lebih dari satu PO pengadaan selama masih ada item/qty yang belum tercakup:
Qty template = sisa demand SO − stok tersedia − qty di PO aktif (bukan CANCELLED)
| Situasi | Tombol di detail SO |
|---|---|
| Belum ada PO, masih short | Buat PO Pengadaan |
| Sudah ada PO, masih ada sisa shortfall | Buat PO Pengadaan Lanjutan |
| Shortfall sudah tercakup PO aktif | Tombol hilang / API template menolak (409) |
Contoh: PO-1 ke Vendor A hanya menutup sebagian qty → terima barang → buat PO Lanjutan ke Vendor B untuk sisa.
Hak akses: tombol Buat PO Pengadaan / Lanjutan memerlukan izin create pada modul purchase-orders (biasanya Operations / Superadmin).
5.3 Kirim PO ke vendor
Dari detail PO (Draft) → Kirim ke Vendor → status SENT.
Edit item PO (tambah / batalkan spare part)
Gunakan ini jika setelah PO dibuat ada item yang ditambah, qty diubah, atau dibatalkan sebelum barang diterima.
Syarat:
| Boleh | Tidak boleh |
|---|---|
| Status Draft atau Dikirim (SENT) | PARTIALLY_RECEIVED / RECEIVED / CANCELLED |
| Belum ada qty diterima | Sudah ada penerimaan barang |
| Belum ada pembayaran ke vendor | Sudah ada pembayaran |
| Role punya akses update Purchase Order | — |
Langkah:
- Buka Detail PO (
/admin/purchase-orders/[id]). - Di kartu Item Purchase Order, klik Edit Item.
- Ubah qty/harga/diskon, hapus baris, atau Tambah Item (cari SKU).
- Klik Simpan Item. Subtotal / PPN / grand total dihitung ulang.
- Riwayat aktivitas PO mencatat Edit Item.
Tips: Edit sebelum klik Terima Barang. Setelah ada penerimaan, item terkunci — buat PO baru atau retur untuk koreksi pasca-terima.
5.4 Terima barang
Dari detail PO (SENT atau PARTIALLY_RECEIVED):
- Pilih entitas penerima & user penerima.
- Isi qty yang diterima (bisa partial per item).
- Terima Barang.
Efek:
- Stok available bertambah.
- Price history + recalculate harga jual SKU (COGS × markup).
- Status PO → PARTIALLY_RECEIVED atau RECEIVED.
5.5 Preview & PDF PO
Dari detail PO: Preview dan unduh PDF untuk dikirim ke vendor.
5.6 Pembayaran ke vendor
Dari detail PO (SENT / RECEIVED) — Catat Pembayaran ke Vendor:
- DP / cicilan / pelunasan, metode, bukti.
- Modul
payments— role Finance / yang diberi izin.
Muncul di Laporan → Pengeluaran Harian.
5.7 Membatalkan PO
Hanya status Draft → Batalkan PO.
5.8 Retur Purchase Order
Menu: Operasi → Pembelian → Retur PO
| Langkah | Keterangan |
|---|---|
| 1. Buat Retur | PO status RECEIVED, pilih item & qty |
| 2. Draft | POR-YYYY-MM-### |
| 3. Konfirmasi | Stok keluar, nilai retur naik, refund vendor opsional |
Tombol Buat Retur dari detail PO yang sudah diterima.
5.9 Kaitan PO dengan Sales Order
| Aspek | Perilaku |
|---|---|
| Kapan terkait | Saat PO dibuat lewat Buat PO Pengadaan / Lanjutan dari detail SO, atau salesOrderId dikirim saat simpan PO |
| Di detail SO | Panel Purchase Order Terkait (bisa banyak PO) + status procurement |
| Di detail PO | Nomor SO sumber (jika dikaitkan) — lacak dari board atau detail SO |
| Status PO → board SO | SENT / PARTIALLY_RECEIVED → kolom PO In Transit; stok cukup → Siap Kirim |
| Multi PO | Diizinkan selama masih ada shortfall; PO CANCELLED tidak dihitung sebagai cover |
| PO tanpa SO | Tetap valid; tidak muncul di board pengadaan per SO |
5.10 Pembatalan Purchase Order
| Role | Perilaku |
|---|---|
| Superadmin | Batalkan langsung (status DRAFT atau SENT tanpa penerimaan barang) |
| Role lain | Ajukan pembatalan → Superadmin setujui di menu Persetujuan SO |
- PO yang sudah ada penerimaan barang atau pembayaran (non-superadmin) tidak dapat dibatalkan.
- Badge Menunggu Persetujuan Batal muncul di detail PO saat permintaan aktif.
- PO terhubung ke SO: setelah penerimaan barang dan stok cukup, kartu hijau Siap Delivery Order + tombol Buat Delivery Order langsung ke halaman DO SO terkait.