Mode Gelap
Sales Order
Sales Order adalah pesanan penjualan back-office untuk pelanggan B2B / grosir — misalnya penjualan dalam jumlah besar dengan termin pembayaran, tagihan (invoice), dan NPWP pelanggan. Berbeda dengan Pesanan POS yang langsung lunas di kasir, Sales Order dibuat lebih dulu sebagai draft (belum memotong stok dan belum membuat jurnal), lalu dijalankan bertahap: dikonfirmasi, dikirim, ditagih, dan dilunasi.
Path menu: Transaksi → Sales Order (/sales-orders)
Secara default halaman menampilkan Sales Order dari seluruh outlet yang bisa Anda akses. Gunakan filter Outlet untuk mempersempit ke satu outlet.
Sales Order vs Pesanan POS
Pesanan POS (Orders) dicatat langsung di kasir dan umumnya lunas seketika. Sales Order ditujukan untuk transaksi grosir/korporat yang memerlukan dokumen pesanan, pengiriman terpisah, penerbitan tagihan, dan pencatatan piutang.
Empat Status yang Terpisah
Sebuah Sales Order tidak memiliki satu status tunggal, melainkan empat dimensi status yang berdiri sendiri. Keempatnya ditampilkan sebagai badge di daftar (kolom Status, Kirim, Tagih, Bayar) dan di halaman detail.
1. Status Order (status)
Tahapan utama siklus pesanan.
| Status | Label | Warna | Keterangan |
|---|---|---|---|
draft | Draft | Abu-abu | Pesanan baru dibuat, belum dikonfirmasi. Belum memotong stok / belum jurnal. |
confirmed | Dikonfirmasi | Biru | Pesanan sudah dikonfirmasi dan siap dikirim / ditagih. |
done | Selesai | Hijau | Pesanan telah tuntas. |
cancelled | Dibatalkan | Merah | Pesanan dibatalkan. |
2. Status Kirim (delivery_status)
| Status | Label | Warna |
|---|---|---|
not_delivered | Belum Kirim | Abu-abu |
partial | Kirim Sebagian | Kuning |
delivered | Terkirim | Hijau |
3. Status Tagih (invoice_status)
| Status | Label | Warna |
|---|---|---|
not_invoiced | Belum Ditagih | Abu-abu |
partial | Tagih Sebagian | Kuning |
invoiced | Sudah Ditagih | Biru |
4. Status Bayar (payment_status)
| Status | Label | Warna |
|---|---|---|
unpaid | Belum Lunas | Merah |
waiting_payment | Menunggu | Kuning |
paid | Lunas | Hijau |
Siklus Hidup Sales Order
Alur normal berjalan bertahap. Setiap langkah mengubah dimensi status yang berbeda:
Buat Draft → Konfirmasi → Kirim (potong stok) → Terbitkan Tagihan (piutang/AR) → Catat Pelunasan- Draft — pesanan disimpan. Stok belum dipotong, jurnal belum dibuat.
- Konfirmasi — status berubah menjadi Dikonfirmasi. Setelah ini aksi kirim/tagih tersedia.
- Kirim — memotong stok dari outlet sumber; status Kirim menjadi Terkirim.
- Terbitkan Tagihan — mencatat piutang (Account Receivable) dengan tanggal jatuh tempo; status Tagih menjadi Sudah Ditagih. Stok tidak dipotong pada langkah ini.
- Catat Pelunasan — mencatat pembayaran dari pelanggan; status Bayar menjadi Lunas saat sisa tagihan tertutup.
Kirim dan Tagih bersifat independen
Karena Kirim dan Tagih adalah dimensi terpisah, urutannya fleksibel — Anda bisa menerbitkan tagihan lebih dulu atau mengirim barang lebih dulu, sesuai kesepakatan dengan pelanggan.
Daftar Sales Order
Tabel utama menampilkan seluruh Sales Order dari outlet terpilih. Klik baris mana pun untuk membuka halaman detail.
| Kolom | Keterangan |
|---|---|
| No | Nomor urut baris pada halaman |
| Nomor SO | Nomor pesanan unik yang di-generate otomatis |
| Pelanggan | Nama pelanggan; NPWP ditampilkan di bawahnya bila ada |
| Total | Nilai total pesanan (setelah pajak & diskon) |
| Status | Badge status order (Draft / Dikonfirmasi / Selesai / Dibatalkan) |
| Kirim | Badge status pengiriman |
| Tagih | Badge status penagihan |
| Bayar | Badge status pembayaran |
| Tanggal | Tanggal pesanan dibuat |
Filter & Pencarian
- Outlet — dropdown yang dapat dicari; default menampilkan semua outlet yang bisa Anda akses.
- Status — Draft, Dikonfirmasi, Selesai, atau Dibatalkan.
- Tanggal — tanggal atau rentang tanggal pembuatan.
- Pencarian — kolom cari dengan placeholder "No. SO, Pelanggan, NPWP, No. PO..." untuk mencari berdasarkan nomor SO, nama pelanggan, NPWP, atau nomor PO pelanggan.
Di bagian atas kanan halaman tersedia dua tombol: Piutang / Aging (membuka halaman piutang, lihat bagian Hubungan dengan Piutang) dan Buat Sales Order (memerlukan hak akses tulis).
Membuat Sales Order
Klik Buat Sales Order di halaman daftar. Pesanan akan disimpan sebagai draft (belum potong stok / belum jurnal).
- Pelanggan
- Nama (wajib) — isi manual, atau klik Cari Pelanggan untuk mencari dari riwayat transaksi lampau (gabungan pelanggan B2B ber-NPWP dan B2C). Memilih hasil akan mengisi otomatis Nama, NPWP, Telepon, dan Alamat.
- NPWP (opsional), Telepon, No. PO Pelanggan (nomor Purchase Order dari sisi pelanggan), dan Alamat.
- Detail
- Outlet / Sumber Stok (wajib) — outlet yang stoknya akan dipotong saat pengiriman.
- Jatuh Tempo — tanggal jatuh tempo tagihan (opsional).
- Catatan (opsional).
- Item
- Klik Tambah Produk, cari berdasarkan nama / SKU, lalu pilih. Produk yang sama tidak dapat ditambahkan dua kali.
- Untuk setiap item isi Qty (minimal 1), Harga (default terisi dari harga jual produk dan dapat diubah), dan Disc % (diskon per item dalam persen, 0–100).
- Subtotal per item dihitung otomatis: Harga × Qty × (1 − Disc%).
- Total — di bawah tabel item:
- Subtotal — jumlah seluruh subtotal item.
- PPN / Pajak — nominal pajak (diisi manual).
- Diskon Order — potongan tingkat pesanan (diisi manual).
- Total = Subtotal + PPN − Diskon Order.
- Klik Simpan Draft. Sistem membuat Sales Order dan membuka halaman detailnya.
PPN dan diskon order diisi manual
Nilai PPN/Pajak dan Diskon Order dimasukkan sebagai nominal langsung (bukan persentase). Diskon per item tetap dalam bentuk persen pada baris masing-masing.
Halaman Detail & Aksi
Halaman detail menampilkan header (nomor SO, tanggal dibuat, dan keempat badge status), kartu Pelanggan, kartu Tagihan (Jatuh Tempo, Total, Dibayar, dan Sisa), serta tabel Item.
Tabel item pada detail menampilkan kolom: Produk, Qty, Terkirim, Ditagih, Harga, dan Subtotal, diikuti ringkasan Subtotal, PPN, Diskon, dan Total.
Tombol aksi berubah sesuai status order dan hak akses pengguna:
| Aksi | Muncul saat | Efek |
|---|---|---|
| Konfirmasi | Status Draft | Mengubah status menjadi Dikonfirmasi. |
| Batalkan | Status Draft, atau Dikonfirmasi yang belum dikirim & belum ditagih | Membatalkan SO (mengisi alasan). |
| Kirim (potong stok) | Status Dikonfirmasi, belum Terkirim | Memotong stok dari outlet sumber. |
| Terbitkan Tagihan | Status Dikonfirmasi, belum Ditagih | Mencatat piutang (AR) dengan tanggal jatuh tempo. Stok tidak dipotong di sini. |
| Catat Pelunasan | Status Dikonfirmasi, sudah Ditagih dan belum Lunas | Mencatat pembayaran pelanggan. |
- Konfirmasi, Kirim, Terbitkan Tagihan, dan Catat Pelunasan memerlukan hak approve.
- Batalkan memerlukan hak delete/void.
Terbitkan Tagihan
Membuka dialog Terbitkan Tagihan untuk menetapkan Jatuh Tempo (default mengikuti jatuh tempo pesanan). Dialog menegaskan bahwa aksi ini mencatat piutang (AR) dan stok tidak dipotong di langkah ini.
Catat Pelunasan
Membuka dialog Catat Pelunasan dengan Jumlah (default terisi sisa tagihan / outstanding), Metode (Tunai, Transfer Bank, QRIS, atau Kartu), dan Referensi (opsional). Status Bayar menjadi Lunas ketika total pembayaran menutup sisa tagihan.
Batalkan
Membuka dialog konfirmasi berisi kolom Alasan pembatalan.
Cetak / PDF
Link Cetak / PDF di header detail membuka dokumen cetak Sales Order (/so-print/{id}) di tab baru.
Hubungan dengan Piutang (Receivables)
Sales Order yang sudah diterbitkan tagihannya (invoiced) namun belum lunas tercatat sebagai piutang. Halaman piutang terpisah dapat dibuka lewat tombol Piutang / Aging di halaman daftar (/sales-orders/receivables).
Halaman tersebut menampilkan daftar tagihan yang belum lunas beserta umur piutang (aging) yang dikelompokkan ke dalam bucket: Belum jatuh tempo, 1–30 hari, 31–60 hari, 61–90 hari, dan >90 hari lewat jatuh tempo. Gunakan halaman ini untuk memantau tagihan pelanggan yang jatuh tempo dan melakukan penagihan.
Pelunasan tetap dari detail SO
Pencatatan pembayaran atas piutang dilakukan lewat tombol Catat Pelunasan di halaman detail Sales Order yang bersangkutan.