Program Transaksi Penjualan Digital
Menghitung subtotal, diskon, dan total pembayaran berdasarkan kategori transaksi pelanggan.
Bobot: 30 PoinFlowchart — Tugas 1
Alur program transaksi penjualan digital
Pseudocode — Tugas 1
Deskripsi algoritma dalam bahasa Indonesia
Source Code MATLAB — tugas1.m
Program siap jalankan di MATLAB / Octave
% ================================================ % TUGAS 1 — Program Transaksi Penjualan Digital % D4 Akuntansi Bisnis Digital % ================================================ clc clear namaPelanggan = input("Nama pelanggan: ", "s"); namaBarang = input("Nama barang: ", "s"); hargaSatuan = input("Harga satuan: "); jumlahBarang = input("Jumlah barang: "); if hargaSatuan < 0 disp("Harga satuan tidak boleh negatif") elseif jumlahBarang < 0 disp("Jumlah barang tidak boleh negatif") else subtotal = hargaSatuan * jumlahBarang; if subtotal < 500000 diskon = 0; kategori = "Regular"; elseif subtotal < 1000000 diskon = 0.05; kategori = "Silver"; elseif subtotal < 2000000 diskon = 0.10; kategori = "Gold"; else diskon = 0.15; kategori = "Platinum"; end nilaidiskon = subtotal * diskon; totalpembayaran = subtotal - nilaidiskon; disp(" ") disp(" ") disp("========================================") disp(" STRUK TRANSAKSI PENJUALAN") disp("========================================") disp("Pelanggan : " + namaPelanggan) disp("Barang : " + namaBarang) disp("Harga Satuan : Rp" + hargaSatuan) disp("Jumlah : " + jumlahBarang) disp("----------------------------------------") disp("SUBTOTAL : Rp" + subtotal) disp("DISKON : " + (diskon * 100) + "%") disp("NILAI DISKON : Rp" + nilaidiskon) disp("----------------------------------------") disp("TOTAL BAYAR : Rp" + totalpembayaran) disp("----------------------------------------") disp("KATEGORI : " + kategori) disp("========================================") end
Data Uji — Tugas 1
Minimal 4 transaksi, semua kategori diskon muncul
| No | Pelanggan | Barang | Harga Satuan | Jumlah | Subtotal | Diskon | Nilai Diskon | Total Bayar | Kategori |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Andi | Buku Tulis | Rp25.000 | 10 | Rp250.000 | 0% | Rp0 | Rp250.000 | Regular |
| 2 | Budi | Mouse Wireless | Rp150.000 | 5 | Rp750.000 | 5% | Rp37.500 | Rp712.500 | Silver |
| 3 | Citra | Keyboard RGB | Rp500.000 | 3 | Rp1.500.000 | 10% | Rp150.000 | Rp1.350.000 | Gold |
| 4 | Dika | Monitor LED | Rp2.500.000 | 1 | Rp2.500.000 | 15% | Rp375.000 | Rp2.125.000 | Platinum |
Rekap Persediaan Barang
Memantau stok akhir setiap barang dan membuat ringkasan status seluruh persediaan toko.
Bobot: 35 PoinFlowchart — Tugas 2
Alur program rekap persediaan barang
Pseudocode — Tugas 2
Deskripsi algoritma dalam bahasa Indonesia
Source Code MATLAB — tugas2.m
Program rekap persediaan barang dengan perulangan while
% ================================================ % TUGAS 2 — Rekap Persediaan Barang % D4 Akuntansi Bisnis Digital % ================================================ clc clear jumlahJenis = input("Jumlah jenis barang: "); if jumlahJenis <= 0 disp("Jumlah jenis barang tidak boleh nol atau negatif") else totalStokAkhir = 0; jumlahHabis = 0; jumlahRestock = 0; jumlahAman = 0; minStok = Inf; minBarang = ""; i = 1; while i <= jumlahJenis disp(" ") disp("--- Barang ke-" + i + " ---") namaBarang = input("Nama barang : ", "s"); stokAwal = input("Stok awal : "); barangMasuk = input("Barang masuk : "); barangTerjual = input("Barang terjual : "); if stokAwal < 0 || barangMasuk < 0 || barangTerjual < 0 disp("Jumlah stok/barang tidak boleh negatif") elseif barangTerjual > (stokAwal + barangMasuk) disp("Barang terjual melebihi stok yang ada (data tidak valid)") else stokAkhir = stokAwal + barangMasuk - barangTerjual; if stokAkhir == 0 status = "Habis"; jumlahHabis = jumlahHabis + 1; elseif stokAkhir <= 10 status = "Segera Restock"; jumlahRestock = jumlahRestock + 1; else status = "Aman"; jumlahAman = jumlahAman + 1; end totalStokAkhir = totalStokAkhir + stokAkhir; disp("----------------------------------------") disp("Barang : " + namaBarang) disp("Stok Awal : " + stokAwal) disp("Masuk : " + barangMasuk) disp("Terjual : " + barangTerjual) disp("----------------------------------------") disp("STOK AKHIR : " + stokAkhir) disp("STATUS : " + status) disp("----------------------------------------") if stokAkhir < minStok minStok = stokAkhir; minBarang = namaBarang; end end i = i + 1; end disp(" ") disp("========================================") disp(" LAPORAN PERSEDIAAN BARANG") disp("========================================") disp("Total Stok Akhir Seluruh : " + totalStokAkhir) disp("Status 'Habis' : " + jumlahHabis) disp("Status 'Segera Restock' : " + jumlahRestock) disp("Status 'Aman' : " + jumlahAman) disp("----------------------------------------") disp("Stok Paling Sedikit : " + minBarang + " (" + minStok + " unit)") disp("========================================") end
Data Uji — Tugas 2
5 jenis barang dengan status Habis, Segera Restock, dan Aman
| No | Nama Barang | Stok Awal | Barang Masuk | Barang Terjual | Stok Akhir | Status |
|---|---|---|---|---|---|---|
| 1 | Flashdisk 32GB | 20 | 10 | 30 | 0 | Habis |
| 2 | Kabel HDMI | 10 | 5 | 10 | 5 | Segera Restock |
| 3 | Mousepad | 15 | 5 | 10 | 10 | Segera Restock |
| 4 | Web Cam HD | 30 | 10 | 15 | 25 | Aman |
| 5 | Headset Gaming | 25 | 15 | 10 | 30 | Aman |
Hasil Rekapitulasi: Total = 70 · Habis = 1 · Restock = 2 · Aman = 2 · Stok Terkecil: Flashdisk 32GB (0 unit)
Analisis Piutang Pelanggan
Menghitung sisa piutang dan mengelompokkan status penagihan berdasarkan umur piutang.
Bobot: 35 PoinFlowchart — Tugas 3
Alur program analisis piutang pelanggan
Pseudocode — Tugas 3
Deskripsi algoritma dalam bahasa Indonesia
Source Code MATLAB — tugas3.m
Program analisis piutang pelanggan dengan perulangan while
% ================================================ % TUGAS 3 — Analisis Piutang Pelanggan % D4 Akuntansi Bisnis Digital % ================================================ clc clear jumlahPelanggan = input("Jumlah pelanggan: "); if jumlahPelanggan <= 0 disp("Jumlah pelanggan tidak boleh nol atau negatif") else totalTagihan = 0; totalPembayaran = 0; totalSisaPiutang = 0; jumlahLunas = 0; jumlahBelumLunas = 0; totalPrioritas = 0; maxSisa = -1; pelangganTerbesar = ""; i = 1; while i <= jumlahPelanggan disp(" ") disp("--- Pelanggan ke-" + i + " ---") namaPelanggan = input("Nama pelanggan : ", "s"); nilaiTagihan = input("Nilai tagihan : "); pembayaran = input("Pembayaran : "); umurPiutang = input("Umur piutang (hari): "); if nilaiTagihan < 0 || pembayaran < 0 || umurPiutang < 0 disp("Nilai tagihan, pembayaran, dan umur piutang tidak boleh negatif") else totalTagihan = totalTagihan + nilaiTagihan; totalPembayaran = totalPembayaran + pembayaran; if pembayaran >= nilaiTagihan sisaPiutang = 0; statusKategori = "Lunas"; jumlahLunas = jumlahLunas + 1; else sisaPiutang = nilaiTagihan - pembayaran; jumlahBelumLunas = jumlahBelumLunas + 1; if umurPiutang <= 30 statusKategori = "Lancar"; elseif umurPiutang <= 60 statusKategori = "Perhatian"; elseif umurPiutang <= 90 statusKategori = "Tertunda"; else statusKategori = "Prioritas Penagihan"; totalPrioritas = totalPrioritas + sisaPiutang; end end totalSisaPiutang = totalSisaPiutang + sisaPiutang; disp("----------------------------------------") disp("Pelanggan : " + namaPelanggan) disp("Tagihan : Rp" + nilaiTagihan) disp("Pembayaran : Rp" + pembayaran) disp("Umur Piutang : " + umurPiutang + " hari") disp("----------------------------------------") disp("SISA PIUTANG : Rp" + sisaPiutang) disp("STATUS : " + statusKategori) disp("----------------------------------------") if sisaPiutang > maxSisa maxSisa = sisaPiutang; pelangganTerbesar = namaPelanggan; end end i = i + 1; end disp(" ") disp("========================================") disp(" REKAPITULASI PIUTANG USAHA") disp("========================================") disp("Total Nilai Tagihan : Rp" + totalTagihan) disp("Total Pembayaran Masuk : Rp" + totalPembayaran) disp("Total Sisa Piutang : Rp" + totalSisaPiutang) disp("----------------------------------------") disp("Pelanggan Lunas : " + jumlahLunas) disp("Pelanggan Belum Lunas : " + jumlahBelumLunas) disp("Total Piutang Prioritas : Rp" + totalPrioritas) disp("----------------------------------------") disp("Piutang Terbesar : " + pelangganTerbesar + " (Rp" + maxSisa + ")") disp("========================================") end
Data Uji — Tugas 3
6 pelanggan mencakup semua kategori umur piutang + Lunas
| No | Nama Pelanggan | Nilai Tagihan | Pembayaran | Umur (Hari) | Sisa Piutang | Status / Kategori |
|---|---|---|---|---|---|---|
| 1 | PT Maju Jaya | Rp5.000.000 | Rp5.000.000 | 15 | Rp0 | Lunas |
| 2 | Toko Berkah | Rp4.000.000 | Rp1.000.000 | 20 | Rp3.000.000 | Lancar |
| 3 | CV Sentosa | Rp6.000.000 | Rp2.000.000 | 45 | Rp4.000.000 | Perhatian |
| 4 | Digital Kreasi | Rp3.500.000 | Rp500.000 | 75 | Rp3.000.000 | Tertunda |
| 5 | Bintang Abadi | Rp8.000.000 | Rp1.000.000 | 120 | Rp7.000.000 | Prioritas Penagihan |
| 6 | Surya Mandiri | Rp2.000.000 | Rp0 | 100 | Rp2.000.000 | Prioritas Penagihan |
Hasil Rekapitulasi: Tagihan Rp28.500.000 · Bayar Rp9.500.000 · Sisa Rp19.000.000 · Lunas 1 · Belum 5 · Terbesar: Bintang Abadi (Rp7.000.000) · Prioritas: Rp9.000.000