Laporan Penjualan
Deskripsi Modul
Modul Laporan Penjualan menyediakan tujuh jenis laporan analitik untuk menganalisis kinerja penjualan dari berbagai dimensi: nomor SO, customer, kategori barang, tipe konsumen, tipe project, tanggal kirim, dan sales person.
Setiap laporan memiliki filter data, ringkasan (summary), insight, tabel hasil dengan sorting, serta fitur Export Excel dan Export PDF. Navigasi antar jenis laporan dilakukan melalui tab horizontal di bagian atas halaman.
Modul ini terhubung dengan data Sales Order, Delivery Order, dan master data terkait (Customer, Product Category, Project Type, Staff).
Fitur Umum
| Fitur | Deskripsi |
|---|---|
| Tab Navigasi | Beralih antar 7 jenis laporan melalui tombol tab. |
| Pencarian Cepat | Field search spesifik per laporan. |
| Filter Data | Panel filter collapsible dengan rentang tanggal dan dimensi spesifik. |
| Ringkasan (Summary) | Kartu agregat total SO, revenue, net, dan margin. |
| Insight | Panel insight otomatis berdasarkan data laporan. |
| Sorting Kolom | Pengurutan ascending/descending pada kolom tabel. |
| Detail Expandable | Baris detail dapat diperluas untuk melihat item/SO terkait. |
| Export Excel | Mengunduh laporan dalam format Excel (permission export). |
| Export PDF | Mengunduh laporan dalam format PDF (permission export). |
| Paginasi | 20 record per halaman. |
Ringkasan KPI (semua laporan)
| KPI | Deskripsi |
|---|---|
| Total Revenue (SO) | Jumlah nilai penjualan dari subtotal baris (atau harga × qty). |
| Total Net Toya | Jumlah biaya internal (net_price atau HPP produk) × qty. |
| Total Margin | Selisih Total Revenue SO dan Total Net Toya. |
| Total Transaksi | Jumlah transaksi dalam hasil filter; pada laporan Tanggal Kirim juga menampilkan jumlah SO unik. |
Definisi Finansial
- Revenue SO dihitung dari subtotal baris item, atau harga × qty apabila subtotal tidak tersedia.
- Net Toya menggunakan net_price baris, atau HPP produk apabila net_price tidak ada.
- Margin = Revenue SO − Net Toya.
Laporan Per No. SO
Laporan ini menampilkan daftar Sales Order beserta total harga, net Toya, dan margin per SO. Setiap baris dapat diperluas untuk melihat detail item barang.
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Cari nomor SO atau nama customer. |
Nomor SO (sales_order_id) | Tidak | Filter SO spesifik. |
Status SO (sales_order_status_id) | Tidak | Filter berdasarkan status. |
Tanggal Mulai (start_date) | Tidak | Batas awal rentang tanggal SO. |
Tanggal Akhir (end_date) | Tidak | Batas akhir rentang tanggal SO. |
Kolom Tabel
| Kolom | Deskripsi |
|---|---|
| No. SO | Nomor sales order (tautan ke detail). |
| Tanggal SO | Tanggal transaksi. |
| Customer | Nama pelanggan. |
| Total Harga SO | Nilai total sales order. |
| Total Net Toya | Nilai net (HPP). |
| Margin | Selisih total SO dan net. |
| Status | Badge status SO. |
| Detail | Tombol expand item barang. |

Laporan Per Customer
Laporan agregasi penjualan per pelanggan dengan detail daftar SO per customer.
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Pencarian umum. |
Customer (customer_id) | Tidak | Filter customer spesifik. |
| Tanggal Mulai / Akhir | Tidak | Rentang tanggal transaksi. |
Kolom Tabel
Agregasi per customer: nama customer, jumlah SO, total nilai SO, total net, margin. Detail expandable menampilkan daftar SO per customer.

Laporan Per Kategori Barang
Laporan agregasi penjualan berdasarkan kategori produk.
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Pencarian umum. |
Kategori (product_category_id) | Tidak | Filter kategori produk. |
| Tanggal Mulai / Akhir | Tidak | Rentang tanggal. |

Laporan Per Tipe Konsumen
Laporan agregasi penjualan berdasarkan tipe konsumen (customer type).
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Pencarian umum. |
Tipe Konsumen (customer_type_id) | Tidak | Filter tipe konsumen. |
| Tanggal Mulai / Akhir | Tidak | Rentang tanggal. |

Laporan Per Tipe Project
Laporan agregasi penjualan berdasarkan tipe project pada Sales Order.
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Pencarian umum. |
Tipe Project (project_type_id) | Tidak | Filter tipe project. |
| Tanggal Mulai / Akhir | Tidak | Rentang tanggal. |
Kolom Tabel
Tipe project, jumlah SO, total nilai SO, total net, margin.

Laporan Tanggal Kirim
Laporan penjualan berdasarkan tanggal pengiriman (Delivery Order).
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Cari nomor DO, SO, atau customer. |
Tanggal Kirim Mulai (delivery_start_date) | Tidak | Batas awal tanggal pengiriman (bukan tanggal SO). |
Tanggal Kirim Akhir (delivery_end_date) | Tidak | Batas akhir tanggal pengiriman. |
Kolom Tabel
| Kolom | Deskripsi |
|---|---|
| Tanggal kirim | Tanggal jadwal/aktual pengiriman. |
| No. DO | Nomor delivery order. |
| No. SO | Nomor sales order terkait (tautan ke detail). |
| Customer | Nama pelanggan. |
| Total nilai SO | Nilai SO terkait DO. |
| Status pengiriman | Terkirim, Terlambat (belum kirim), atau Dijadwalkan. |

Gambar 6. Laporan berdasarkan tanggal kirim Delivery Order.
Laporan Per Sales
Laporan agregasi penjualan per sales person (staff penjualan).
Filter
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (search) | Tidak | Pencarian umum. |
Sales (staff_id) | Tidak | Filter sales person. |
| Tanggal Mulai / Akhir | Tidak | Rentang tanggal transaksi. |
Kolom Tabel
Sales, jumlah SO, revenue SO, total net, margin. Detail expandable menampilkan daftar SO per sales.

Catatan Penting
- Setiap jenis laporan memiliki permission terpisah:
salesreport.{jenis}.showuntuk akses dansalesreport.{jenis}.exportuntuk export. - Export Excel dan PDF mempertahankan filter yang sedang aktif.
- Margin dihitung sebagai selisih total harga SO dan total net Toya (HPP).
- Nomor SO pada laporan Per No. SO dapat diklik untuk membuka detail SO di tab baru.
- Tab navigasi hanya menampilkan laporan yang diizinkan pada role pengguna.