Deskripsi Modul
Modul Purchase Order (PO) mengelola pesanan pembelian ke supplier yang dibuat dari baris Permintaan Pembelian (PP) yang telah disetujui. Modul ini mencakup pelacakan nilai pengadaan, penerimaan barang (outstanding qty), tagihan, penerimaan material, uang muka, serta alur persetujuan multi-tahap.
PO terhubung dengan modul Permintaan Pembelian, Supplier, Tagihan (Bill), Penerimaan Material, dan Kas Keluar (uang muka).
Fitur Modul
| Fitur | Deskripsi |
|---|
| Daftar & Pencarian | Tabel PO dengan pencarian nomor dan filter lanjutan. |
| Tambah PO | Form pembuatan PO dari baris PP approved dengan outstanding qty. |
| Edit PO | Pengubahan data PO (hanya status Draft atau Declined). |
| Lihat Detail | Informasi PO, item, finansial, tagihan, dan penerimaan material. |
| Setujui (Approve) | Persetujuan PO dan pengurangan outstanding qty PP. |
| Tolak (Decline) | Penolakan PO dengan alasan wajib; mengembalikan qty PP. |
| Batalkan (Cancel) | Pembatalan PO dengan alasan wajib. |
| Proses PO | Mengubah status ke On Progress; memicu proses bisnis terkait. |
| Selesaikan (Complete) | Penyelesaian PO setelah seluruh barang diterima. |
| Cetak PDF | Dokumen PO format PDF. |
| Generate Ulang Tagihan | Regenerasi tagihan Barang Khusus (kondisional). |
| Pilih Supplier | Modal pencarian supplier. |
| Pilih Item PP | Modal pemilihan baris PP untuk PO. |
Penjelasan Field — Filter Daftar
| Field | Wajib | Deskripsi |
|---|
Pencarian (search) | Tidak | Pencarian berdasarkan nomor PO. |
Supplier (supplier_id) | Tidak | Filter berdasarkan supplier. |
Status (purchase_order_status_id) | Tidak | Filter status PO. |
Tipe Pengiriman (shipping_type_id) | Tidak | Segera atau Waktu Tertentu. |
Tanggal Mulai (start_date) | Tidak | Batas awal tanggal transaksi. |
Tanggal Akhir (end_date) | Tidak | Batas akhir tanggal transaksi. |

| Field | Wajib | Deskripsi |
|---|
Nama Supplier (supplier_id) | Ya | Dipilih via modal; mengisi telepon, PIC, TOP otomatis. |
Nomor Telepon (supplier_phone) | Tidak | Dari data supplier (read-only). |
Nama PIC (supplier_pic) | Tidak | Dari data supplier. |
Alamat Pengiriman (shipping_address) | Ya | Alamat tujuan pengiriman. |
Tipe Barang (item_type) | Ya | Material atau Barang Khusus. |
Tanggal Transaksi (transaction_date) | Ya | Default hari ini. |
Term of Payment (term_of_payment) | Tidak | Syarat pembayaran. |
Waktu Pengiriman (shipping_type_id) | Ya | Segera atau Waktu Tertentu. |
Tanggal Kirim (delivery_date) | Conditional | Wajib tampil jika pengiriman = Waktu Tertentu. |
Penjelasan Field — Baris Item
| Field | Wajib | Deskripsi |
|---|
Referensi PP (purchase_requisition_detail_id[]) | Ya | Baris PP sumber (hidden). |
Qty (qty_val[]) | Ya | Maksimum = outstanding qty PP. |
Harga (price_val[]) | Ya | Harga per unit; default dari harga material. |
Keterangan (description[]) | Tidak | Catatan per baris. |
Catatan (note) | Tidak | Catatan header PO. |
Penjelasan Field — Total & Uang Muka
| Field | Wajib | Deskripsi |
|---|
Biaya Pengiriman (shipping_price_val) | Tidak | Biaya pengiriman. |
Diskon (discount_val) | Tidak | Nilai diskon. |
PPN 11% (use_ppn, ppn_val) | Tidak | Checkbox; 11% dari (subtotal + shipping − diskon). |
| Grand Total | — | Dihitung otomatis. |
Uang Muka (use_down_payment) | Tidak | Checkbox aktifkan uang muka. |
Akun Uang Muka (purchase_down_payment_id) | Conditional | Wajib jika uang muka aktif (mode persentase). |
Tipe DP (down_payment_type) | Conditional | Persentase (1) atau Nominal (2). |
Persentase DP (down_payment_percent_val) | Conditional | 0–100 jika tipe persentase. |
Nominal DP (total_down_payment_val) | Conditional | Maksimum = grand total. |

Penjelasan Field — Modal Selesaikan PO
| Field | Wajib | Deskripsi |
|---|
Tanggal Penyerahan (complete_handover_date) | Ya | Tanggal serah terima. |
Nomor Dokumen (complete_number_reference) | Tidak | Referensi dokumen serah terima. |
Upload Dokumen (complete_attachment) | Tidak | File lampiran. |
Catatan (complete_note) | Tidak | Catatan penyelesaian. |
Status & Alur Persetujuan
| Status | Aksi Tersedia |
|---|
| Draft | Edit, Approve, Decline, Cancel |
| Declined | Edit |
| Cancelled | — |
| Approved | Process, Decline, Cancel, Print |
| On Progress | Complete (jika os_qty = 0), Cancel, Print |
| Done | Print, Generate Ulang Tagihan |

Catatan Penting
- Nomor PO dihasilkan otomatis (format
PCSH.BR/PO/...).
- Minimal satu baris PP wajib ada; tipe barang harus sesuai tipe PP.
- Material:
os_qty = qty; Barang Khusus: os_qty = 0.
- Approve mengurangi outstanding qty PP dan dapat memperbarui harga material.
- Decline/Cancel mengembalikan qty PP ke kondisi semula.
- Process memicu pembuatan tagihan Barang Khusus otomatis dan draft Kas Keluar uang muka.
- Complete memerlukan seluruh baris
os_qty = 0.
- Grand total = subtotal + PPN + shipping − diskon.
- Mengubah tipe barang saat create akan menghapus seluruh baris (konfirmasi SweetAlert).