Panduan pengguna

Bab 5 — Purchase Order (Pembelian)

5.1 Melihat daftar PO

Menu: Operasi → Pembelian → Daftar PO (/admin/purchase-orders)

StatusArti
DraftMasih disusun
Dikirim (SENT)Sudah ke vendor, menunggu barang
Diterima sebagian (PARTIALLY_RECEIVED)Sebagian qty sudah masuk stok
Diterima (RECEIVED)Semua qty diterima
DibatalkanPO batal

5.2 Membuat PO baru

Draft & autosave (pencatatan bertahap)

Sama seperti SO, form PO mendukung dua lapisan penyimpanan sementara:

CaraApa yang terjadiKapan dipakai
Autosave browserForm tersimpan otomatis di browser. Jika tab tertutup, buka form lagi → Lanjutkan / BuangSedang mengisi, takut kehilangan data
Simpan DraftPO tersimpan di server status Draft. Lanjutkan di detail PO, lalu Kirim ke VendorIsi 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)

  1. Buat PO baru (/admin/purchase-orders/new).
  2. Pilih Vendor dan Entity (stok masuk EITO atau ALBATROSS). Diskon % baris bisa terisi otomatis dari default diskon vendor.
  3. Tambah item: SKU, qty, harga beli, diskon baris.
  4. Tanggal order / expected date / catatan.
  5. 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:

  1. Buka Detail SO → klik Buat PO Pengadaan (atau Buat PO Pengadaan Lanjutan jika sudah ada PO).
  2. Anda diarahkan ke /admin/purchase-orders/new?salesOrderId=....
  3. 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)
  4. Pilih Vendor, lengkapi tanggal jika perlu.
  5. 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)
SituasiTombol di detail SO
Belum ada PO, masih shortBuat PO Pengadaan
Sudah ada PO, masih ada sisa shortfallBuat PO Pengadaan Lanjutan
Shortfall sudah tercakup PO aktifTombol 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:

BolehTidak boleh
Status Draft atau Dikirim (SENT)PARTIALLY_RECEIVED / RECEIVED / CANCELLED
Belum ada qty diterimaSudah ada penerimaan barang
Belum ada pembayaran ke vendorSudah ada pembayaran
Role punya akses update Purchase Order—

Langkah:

  1. Buka Detail PO (/admin/purchase-orders/[id]).
  2. Di kartu Item Purchase Order, klik Edit Item.
  3. Ubah qty/harga/diskon, hapus baris, atau Tambah Item (cari SKU).
  4. Klik Simpan Item. Subtotal / PPN / grand total dihitung ulang.
  5. 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):

  1. Pilih entitas penerima & user penerima.
  2. Isi qty yang diterima (bisa partial per item).
  3. 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

LangkahKeterangan
1. Buat ReturPO status RECEIVED, pilih item & qty
2. DraftPOR-YYYY-MM-###
3. KonfirmasiStok keluar, nilai retur naik, refund vendor opsional

Tombol Buat Retur dari detail PO yang sudah diterima.

5.9 Kaitan PO dengan Sales Order

AspekPerilaku
Kapan terkaitSaat PO dibuat lewat Buat PO Pengadaan / Lanjutan dari detail SO, atau salesOrderId dikirim saat simpan PO
Di detail SOPanel Purchase Order Terkait (bisa banyak PO) + status procurement
Di detail PONomor SO sumber (jika dikaitkan) — lacak dari board atau detail SO
Status PO → board SOSENT / PARTIALLY_RECEIVED → kolom PO In Transit; stok cukup → Siap Kirim
Multi PODiizinkan selama masih ada shortfall; PO CANCELLED tidak dihitung sebagai cover
PO tanpa SOTetap valid; tidak muncul di board pengadaan per SO

5.10 Pembatalan Purchase Order

RolePerilaku
SuperadminBatalkan langsung (status DRAFT atau SENT tanpa penerimaan barang)
Role lainAjukan 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.