Skip to main content

Versi 1

FieldIsi
Dokumen IDVBS-LAP-018
DeskripsiKumpulan laporan penjualan per dimensi: per invoice, rinci per barang, per customer, per barang, per jenis barang, per jenis customer, per cabang, per user, per sales, tunai versus kredit, penerimaan kontan per metode bayar, bulanan dan pajak UMKM, penjualan aset rinci, serta laporan custom pivot
Nomor Revisi1
Tanggal2026-10-04
KeteranganDokumentasi baseline dari dokumentasi fitur demo dan kode FE

1. Ringkasan​

a. In scope​

  • User membuka daftar Laporan Penjualan dan hanya melihat laporan yang diizinkan perannya.
  • Laporan yang dicakup: penjualan per invoice, penjualan rinci, penjualan per customer, penjualan per barang, penjualan per jenis barang, penjualan per jenis customer, penjualan per cabang, penjualan kontan per user, penjualan per sales, penjualan tunai versus kredit, penerimaan atas penjualan kontan per metode bayar, penjualan bulanan dan pajak UMKM, penjualan aset rinci, dan laporan custom penjualan (pivot).
  • User mengisi periode dan mode penjualan: hanya kasir, hanya grosir kontan, semua penjualan kontan, atau semua penjualan.
  • User memfilter sesuai laporan: cabang, customer, user, sales, cluster, jenis customer, jenis barang, barang, aset, status tagihan, dan jatuh tempo.
  • User melihat total ringkas (sebelum PPN, lunas, belum lunas) dan membuka invoice penjualan asal.
  • User melihat rincian metode pembayaran per invoice.
  • User menghitung PPh final UMKM 0,5% per bulan dengan mode pajak pribadi atau badan usaha.
  • User menyusun laporan pivot dengan baris, kolom, dan nilai yang dipilih, lalu menyimpan susunan sebagai template.
  • User mengekspor laporan ke Excel sesuai hak akses.

b. Catatan​

c. Kesimpulan​

  • [FE] -
  • [BE] -

2. Functional Requirement​

KodeDeskripsi
FR-01Hub /brand/:id/laporan-penjualan menampilkan kartu laporan sesuai izin user
FR-02Penjualan per invoice (/daftar-penjualan) menampilkan daftar invoice tercetak beserta customer, user, jatuh tempo, status tagihan, total, dan PPN untuk brand PKP
FR-03User dapat melihat rincian metode pembayaran sebuah invoice dari pembayaran kontan dan pelunasan piutang
FR-04Penjualan rinci (/penjualan-rinci) menampilkan baris barang per invoice: barang, jenis, satuan, kuantitas, harga jual, diskon, subtotal
FR-05Laporan per dimensi menampilkan agregat penjualan per customer (/penjualan-perpelanggan), per user (/penjualan-peruser), per jenis customer (/penjualan-perjeniscus), per cabang (/penjualan-pergudang), per sales (/penjualan-persales), tunai versus kredit (/penjualan-tunai-vs-kredit), dan kontan per metode bayar (/penjualan-kontan-metodebayar)
FR-06Penjualan per barang (/penjualan-perbarang) dan per jenis barang (/penjualan-perjenisbarang) menampilkan kuantitas, total, persentase, dan persentase kumulatif
FR-07Penjualan bulanan dan pajak UMKM (/penjualan-bulanan-pajakumkm) menampilkan omzet per bulan dalam satu tahun beserta PPh final 0,5%
FR-08Penjualan aset rinci (/penjualan-aset-rinci) menampilkan baris aset terjual per invoice
FR-09Laporan custom penjualan (/laporan-penjualan-pivot) menyusun pivot dari baris, kolom, dan nilai terpilih serta menyimpan template ke konfigurasi brand
FR-10User dengan izin Excel dapat mengekspor laporan yang sedang tampil ke file Excel

3. Use Case List​

KodeDeskripsi
UC-01Membuka daftar laporan penjualan
UC-02Melihat penjualan per invoice
UC-03Melihat rincian metode pembayaran invoice
UC-04Melihat penjualan rinci per barang
UC-05Melihat penjualan per dimensi
UC-06Melihat penjualan per barang dan jenis barang
UC-07Melihat penjualan bulanan dan pajak UMKM
UC-08Melihat penjualan aset rinci
UC-09Menyusun laporan pivot penjualan dan menyimpan template
UC-10Mengekspor laporan penjualan ke Excel

4. Use Case Scenario​

UC-01 : Membuka daftar laporan penjualan​

AktorUser dengan akses laporan penjualan
DeskripsiUser memilih laporan penjualan yang ingin dibuka
PrekondisiUser sudah login dan brand aktif
Alur utama1. User membuka menu Laporan lalu tab Penjualan.
2. Sistem menampilkan kartu laporan yang diizinkan.
3. User memilih salah satu kartu.
4. Sistem membuka halaman laporan dalam kondisi kosong dengan pesan "Lengkapi filter untuk menampilkan data".
Alur negatif- Jika user tidak memiliki izin laporan tertentu, kartunya tidak ditampilkan.
Bisnis rule- Izin per kartu: #lap-penjualan-per-invoice, #lap-penjualan-rinci, #lap-penjualan-customer, #lap-penjualan-per-user, #lap-penjualan-jenis-customer, #lap-penjualan-per-barang, #lap-penjualan-jenis-barang, #lap-penjualan-sales, #lap-tunai-vs-kredit, #lap-penjualan-per-gudang, #lap-kontan-vs-metpen, #lap-bulanan-vs-pajak-umkm, dan izin laporan custom penjualan.
- Penjualan aset rinci tidak memiliki kartu di hub dan dibuka langsung lewat alamat halaman.
- Tombol kembali di setiap laporan mengarah ke hub laporan penjualan.
PostkondisiHalaman laporan terpilih terbuka
TriggerUser membuka tab Penjualan pada menu Laporan
Kode FRFR-01

UC-02 : Melihat penjualan per invoice​

AktorUser penjualan / akuntansi
DeskripsiUser melihat daftar invoice penjualan dalam periode beserta status tagihannya
PrekondisiUser memiliki izin #lap-penjualan-per-invoice
Alur utama1. User mengisi periode, cabang, dan mode penjualan.
2. User dapat menambah filter customer, user, cluster, status tagihan, dan jatuh tempo.
3. User menekan tombol tampilkan.
4. Sistem menampilkan invoice: tanggal, nomor invoice, customer, user, jatuh tempo, status tagihan, dan total.
5. Sistem menampilkan kartu total sebelum PPN, total lunas, dan total belum lunas.
6. User dapat mengklik nomor invoice untuk membuka invoice di tab baru.
Alur negatif- Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong".
- Jika mode penjualan kosong, muncul alert "Mode Penjualan harus diisi!".
- Jika data kosong atau gagal dimuat, muncul notifikasi "Data yang anda filter tidak ditemukan silahkan ganti filter".
Bisnis rule- Hanya invoice tercetak yang diambil.
- Mode hanya kasir: invoice kasir dengan tempo 0. Mode hanya grosir kontan: invoice non kasir dengan tempo 0. Mode semua kontan: tempo 0. Mode semua penjualan: tanpa batasan.
- Filter user dipetakan ke user pembuat invoice.
- Jatuh tempo = tanggal invoice + tempo hari.
- Kolom total sebelum PPN dan PPN hanya tampil bila brand berstatus Pengusaha Kena Pajak.
- Total belum lunas memakai sisa piutang, bukan total invoice.
PostkondisiDaftar invoice dan total ringkas tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-02

UC-03 : Melihat rincian metode pembayaran invoice​

AktorUser penjualan / akuntansi
DeskripsiUser melihat komposisi metode pembayaran yang melunasi sebuah invoice
PrekondisiLaporan per invoice, per customer, per user, atau per sales sudah tampil
Alur utama1. User mengklik nilai total pada baris invoice.
2. Sistem membuka popup metode pembayaran.
3. Sistem menggabungkan pembayaran kontan saat penjualan dan pembayaran pelunasan piutang.
4. Popup menampilkan nama metode pembayaran dan total nominalnya.
Alur negatif- Jika invoice belum dibayar, popup tidak menampilkan baris.
- Jika salah satu sumber gagal dimuat, data dari sumber lain tetap ditampilkan.
Bisnis rule- Pembayaran piutang yang dihitung hanya dari invoice bayar piutang yang sudah tercetak.
- Nominal dikelompokkan per metode pembayaran.
PostkondisiKomposisi metode pembayaran invoice tampil
TriggerUser mengklik total invoice
Kode FRFR-03

UC-04 : Melihat penjualan rinci per barang​

AktorUser penjualan / akuntansi
DeskripsiUser melihat setiap baris barang yang terjual pada invoice dalam periode
PrekondisiUser memiliki izin #lap-penjualan-rinci
Alur utama1. User mengisi periode, cabang, dan mode penjualan.
2. User dapat menambah filter customer, cluster, jenis barang, barang, dan status tagihan.
3. User menekan tombol tampilkan.
4. Sistem menampilkan baris barang per invoice: nama barang, jenis barang, satuan, kuantitas, harga jual, diskon 1, diskon 2, dan subtotal.
Alur negatif- Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong".
- Jika data kosong, muncul notifikasi data tidak ditemukan.
Bisnis rule- Jika hasil lebih dari 5.000 baris, tampilan tidak memakai paginasi lokal.
- Nama SKU, satuan, dan customer dilengkapi dari master.
PostkondisiRincian barang terjual tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-04

UC-05 : Melihat penjualan per dimensi​

AktorUser penjualan / akuntansi
DeskripsiUser melihat agregat penjualan menurut customer, user kasir, jenis customer, cabang, sales, tunai versus kredit, atau metode bayar kontan
PrekondisiUser memiliki izin laporan dimensi terkait
Alur utama1. User membuka laporan dimensi yang diinginkan.
2. User mengisi periode, mode penjualan, dan pilihan dimensi (customer, user, jenis customer, cabang, atau sales).
3. User menekan tombol tampilkan.
4. Sistem menampilkan agregat per dimensi: jumlah invoice, invoice belum terbayar, invoice belum diproses, total belum dibayar, total lunas, dan total semua penjualan sesuai laporan.
5. User dapat membuka rincian invoice per baris dimensi.
Alur negatif- Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong".
- Jika data kosong atau gagal dimuat, muncul notifikasi "Data yang anda filter tidak ditemukan silahkan ganti filter".
Bisnis rule- Per customer dan per sales ikut mengambil invoice yang belum tercetak agar kolom invoice belum diproses dapat dihitung.
- Per user dikelompokkan berdasarkan user kasir.
- Per cabang dan tunai versus kredit membedakan penjualan tunai (tempo 0) dan tempo atau kredit (tempo lebih dari 0).
- Kontan per metode bayar dikelompokkan per user kasir dan tanggal, lalu dipecah per metode pembayaran.
PostkondisiAgregat penjualan per dimensi tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-05

UC-06 : Melihat penjualan per barang dan jenis barang​

AktorUser penjualan / akuntansi
DeskripsiUser melihat kontribusi tiap barang atau jenis barang terhadap total penjualan
PrekondisiUser memiliki izin #lap-penjualan-per-barang
Alur utama1. User membuka penjualan per barang atau per jenis barang.
2. User mengisi periode, cabang, mode penjualan, dan filter jenis barang bila perlu.
3. User menekan tombol tampilkan.
4. Sistem menampilkan kuantitas, total, persentase, dan persentase kumulatif.
5. Pada penjualan per barang, user dapat membuka popup rincian invoice per SKU.
Alur negatif- Jika data kosong, muncul notifikasi data tidak ditemukan.
Bisnis rule- Penyebutan ganda penjualan per barang pada demo merujuk ke satu halaman yang sama.
- Persentase kumulatif dihitung berurutan dari barang dengan kontribusi terbesar.
PostkondisiKontribusi barang atau jenis barang tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-06

UC-07 : Melihat penjualan bulanan dan pajak UMKM​

AktorUser akuntansi / pajak
DeskripsiUser melihat omzet bulanan setahun dan estimasi PPh final UMKM
PrekondisiUser memiliki izin #lap-bulanan-vs-pajak-umkm
Alur utama1. User memilih tahun, cabang, dan mode pajak (pribadi atau badan usaha).
2. User menekan tombol tampilkan.
3. Sistem menampilkan omzet per bulan (total penjualan dikurangi PPN) dan PPh per bulan.
4. Sistem menampilkan total omzet ditambah PPh.
Alur negatif- Jika data tahun tersebut kosong, muncul notifikasi data tidak ditemukan.
Bisnis rule- Periode selalu satu tahun penuh.
- Tarif PPh final 0,5%.
- Mode badan usaha: seluruh omzet bulanan dikenai PPh.
- Mode pribadi: PPh hanya atas omzet kumulatif tahun berjalan di atas Rp500.000.000, dihitung dari selisihnya pada bulan saat batas terlampaui dan penuh pada bulan berikutnya.
PostkondisiOmzet bulanan dan PPh tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-07

UC-08 : Melihat penjualan aset rinci​

AktorUser akuntansi / aset
DeskripsiUser melihat aset yang terjual per invoice penjualan aset
PrekondisiUser memiliki izin #lap-penjualan-aset-rinci
Alur utama1. User membuka halaman penjualan aset rinci.
2. User mengisi periode dan cabang, lalu filter customer, aset, dan cluster bila perlu.
3. User menekan tombol tampilkan.
4. Sistem menampilkan per cabang dan customer per tanggal: nama aset, satuan, kuantitas, subtotal, diskon 1, dan diskon 2.
Alur negatif- Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong".
- Jika data kosong, muncul notifikasi data tidak ditemukan.
Bisnis rule- Mode penjualan tidak dipakai pada laporan ini.
- Filter aset diterapkan pada baris aset, bukan pada invoice.
PostkondisiRincian penjualan aset tampil
TriggerUser menekan tombol tampilkan
Kode FRFR-08

UC-09 : Menyusun laporan pivot penjualan dan menyimpan template​

AktorUser dengan izin laporan custom penjualan
DeskripsiUser menyusun laporan penjualan bebas berdasarkan baris, kolom, dan nilai yang dipilih
PrekondisiUser membuka laporan custom penjualan
Alur utama1. User memilih periode, nilai yang dihitung (mis. total penjualan, sisa piutang, rata-rata), kolom, dan baris.
2. User menekan tombol tampilkan.
3. Sistem menampilkan tabel pivot dan user dapat mengurutkan baris atau kolom.
4. User menekan simpan template lalu mengisi nama template.
5. Sistem menyimpan susunan ke konfigurasi brand dan template muncul di daftar laporan tersimpan.
6. User dapat memilih template tersimpan untuk langsung memuat susunan yang sama.
Alur negatif- Jika periode, nilai, baris, atau kolom kosong, muncul notifikasi "Oops Silahkan cek kembali form anda!".
- Jika nama template kosong, muncul alert "Nama Template Harus Diisi".
- Jika simpan gagal, muncul alert pesan error dari server.
Bisnis rule- Maksimal 4 baris pivot.
- Baris atau kolom tahun, kuartal, dan bulan diproses sebagai periode, bukan sebagai kolom pengelompokan.
- Template penjualan disimpan pada daftar laporan penjualan di konfigurasi brand.
- Mengubah susunan setelah laporan tampil mengosongkan hasil sampai ditampilkan ulang.
PostkondisiPivot tampil dan template tersimpan
TriggerUser menekan tampilkan atau simpan template
Kode FRFR-09

UC-10 : Mengekspor laporan penjualan ke Excel​

AktorUser dengan izin Excel laporan terkait
DeskripsiUser mengunduh laporan penjualan yang sedang tampil ke Excel
PrekondisiLaporan sudah tampil dan user memiliki izin excel pada laporan tersebut
Alur utama1. User menekan tombol export Excel.
2. Sistem menyusun baris dari data tabel yang tampil.
3. Browser mengunduh file Excel, mis. "Laporan Penjualan per Invoice.xlsx".
Alur negatif- Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong".
- Jika data belum ada, muncul notifikasi "Data tidak ditemukan".
Bisnis rule- Kolom PPN dan total sebelum PPN hanya ikut diekspor bila brand PKP.
- Status tagihan diekspor sebagai "Lunas" atau "Belum Dibayar".
- Ekspor dibuat di browser tanpa memanggil API baru.
PostkondisiFile Excel terunduh
TriggerUser menekan tombol export Excel
Kode FRFR-10

5. Data Flow Diagram​

DFD-01 — Alur data laporan penjualan​

6. Sequence Diagram​

SD-01 — UC-01 : Membuka daftar laporan penjualan​

SD-02 — UC-02 : Melihat penjualan per invoice​

SD-03 — UC-03 : Melihat rincian metode pembayaran invoice​

SD-04 — UC-04 : Melihat penjualan rinci per barang​

SD-05 — UC-05 : Melihat penjualan per dimensi​

SD-06 — UC-06 : Melihat penjualan per barang dan jenis barang​

SD-07 — UC-07 : Melihat penjualan bulanan dan pajak UMKM​

SD-08 — UC-08 : Melihat penjualan aset rinci​

SD-09 — UC-09 : Menyusun laporan pivot penjualan dan menyimpan template​

SD-10 — UC-10 : Mengekspor laporan penjualan ke Excel​

7. Table Schema​

8. API Schema​

EndpointStatusPerubahan
POST /laporan-penjualan/sales-reportexisting-
POST /laporan-penjualan/detailed-sales-reportexisting-
GET /laporan-penjualan/laporan-metode-pembayaranexisting-
POST /laporan-penjualan/penjualan-aset-reportexisting-
POST /financial-report/pembayaran-piutang-reportexisting-
GET /metode-pembayaranexisting-
GET /customerexisting-
GET /gudangexisting-
GET /clusterexisting-
GET /userexisting-
GET /karyawanexisting-
GET /personexisting-
GET /satuanexisting-
POST /sku/get-bulk-skuexisting-
GET /brand/all-usersexisting-
PUT /brand/config/:idexisting-
GET /brand/:brand_idexisting-