BAB III PEMBAHASAN - Bina Sarana Informatika...bergerak dibidang penjualan dan jasa. Travolt dalam...

Post on 25-Nov-2020

6 views 0 download

Transcript of BAB III PEMBAHASAN - Bina Sarana Informatika...bergerak dibidang penjualan dan jasa. Travolt dalam...

19

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Travolt terletak di Jl. Keadilan Raya No.8, Rt02/ Rw03, Abadijaya,

Kec.Sukmajaya, Kota Depok, Jawa Barat 16418 merupakan salah satu perusahaan

bergerak dibidang penjualan dan jasa. Travolt dalam pelayanan selalu memberikan

pelayanan yang terbaik.

3.1.1. Sejarah Perusahaan

CV. Rumah Cetak Tombo adalah usaha bisnis yang berjalan dalam salah satu

perusahaan manufaktur yang bergerak sebagai pencetak pakaian dan sebagai induk

perusahaan dari Travolt. CV. Rumah Cetak Tombo ini berdiri sejak Juni 2015 yang

dipimpin oleh Fajar Achmad Juniardi menempatkan produknya dalam fashion yang

berharga dalam negeri dimana para pelanggannya menyukai desain santai atau

formal fashion .

Sebagai pemilik perusahaan, Fajar Achmad Juniardi mendaftarkan

perusahaan dengan NPWP : 31.199.667.2-412.000. Perusahaan yang sudah berjalan

lebih dari 2 tahun ini telah memberikan pelayanan yang baik dengan terus

berkembangnya dunia industri saat ini, CV.

20

3.1.2. Struktur Organisasi dan Fungsi

Struktur organisasi yang terdapat pada Distro Travolt dapat dilihat pada gambar

berikut :

Gambar III.1

Struktur Organisasi dan Fungsi

Fungsi dan wewenang dari struktur organisasi diatas dapat diuraikan sebagai

berikut :

1. Pemilik

Melakukan pengawasan atas jalannya perkembangan Distro Travolt.

Menerapkan dan mengesahkan kebijakan yang menyangkut Distro Travot.

Melakukan pemasaran melalui media seperti Instagram, Whatssapp, dll.

2. Bagian Keuangan

Membuat laporan penjualan

Memverifikasi Transaksi yang masuk dan keluar.

3. Bagian Gudang

Membuat perencanaan pengadaan barang.

Mengawasi dan mengontrol operasional gudang.

Melaporkan semua barang keluar masuk gudang.

21

Menyiapkan pesanan customer.

4. Admin

Menginput data penjualan tunai dan kredit

Membuat laporan persediaan barang

Menginput data barang

5. Pramuniaga

Memajang barang dengan pengelompokannya.

Melayani pembeli.

3.2. Tinjauan Kasus

Distro Travolt dalam bagian pengolahan data dalam penjualan tunai dan kredit

masih manual seperti dicatat dan bukti tanda tangan, sehingga dalam pelayanan

penjualan masih bisa terdapat salah catat nominal dan membuang lebih banyak

waktu jika ada customer memesan, nota yang disimpan akan hilang atau rusak

sehingga kurang efektif dan efisien.

Maka Distro Travolt membutuhkan program aplikasi yang dapat memberikan

kemudahan yang dimulai dari proses customer membeli, proses transaksi, proses

pelunasan, penyimpanan data, dan pembuatan laporan penjualan.

3.2.1. Proses Bisnis Sistem Berjalan

Sistem berjalan dimulai dari pelanggan datang dan mimilih barang yang ingin

dibeli atau dipesan kepada pramuniaga. Pramuniaga akan melayani barang yang

pesan pelanggan kemudian admin menerima barang yang dipilih customer. Jika tunai

pelanggan akan langsung menghadap admin untuk membayar kemudian admin akan

mencatat transaksi penjualan (nota) d customer menerima bukti transaksi dan barang,

admin membuat rekapan transaksi penjualan tunai dan barang keluar untuk

22

diserahkan kepada bagian keuangan kemudian bagian keuangan memverifikasi

semua transaksi dan laporan stok barang setelah itu bagian keuangan membuat

laporan penjualan dan pemilik toko menerima laporan penjualan dan barang.

Jika Kredit admin mencatat pengajuan kredit, jika barang yang dipesan ada

admin menerima DP dari pelanggan, kemudian admin akan melaporkan pesanan

pelanggan kebagian gudang, kemudian bagian gudang mengecek pesanan pelanggan,

jika stok barang ada bagian gudang akan menyiapkan pesanan pelanggan, jika barang

yang dipesan tidak ada maka pesanan pelanggan batal, kemudian admin

memberitahukan kepada pelanggan melalui via pengiriman atau tidak, jika pelanggan

memilih tidak memakai kurir maka bagian gudang menyerahkan barang yang

dipesan kepada admin dan admin mencatat pembayaran kredit kemudian admin

menyerahkan barang dan bukti transaksi kepada pelanggan, jika memakai kurir

bagian gudang akan memberikan barang ke kurir.

Bagian gudang menerima resi dan melaporkan barang yang keluar kemudian

bagian gudang menyerahkan resi kepada admin kemudian admin melakukan

pencatatan transaksi kredit dan mencatat laporan barang keluar, setelah itu pelanggan

menerima bukti transaksi dan barang, kemudian pelanggan dapat melakukan

pelunasan kredit, admin menerima uang pelunasan dan bukti pembayaran dari

pelanggan kemudian admin membuat bukti pelunasan kredit, bagian keuangan

menerima semua bukti transaksi kemudian bagian keuangan memverifikasi semua

transaksi dan laporan data barang setelah itu bagian keuangan membuat laporan

penjualan dan pemilik toko menerima laporan penjualan dana barang.

23

3.2.2. Activity Diagram

24

Gambar III.2

Activity Diagram Berjalan

25

3.2.3. Dokumen Masukan

Dokumen masukan merupakan proses awal dari kegiatan pengiriman barang

pada Distro Travolt. Adapun bentuk dokumen masukan tersebut adalah sebagai

berikut :

1. Nama Dokumen : Laporan Stok Barang

Fungsi : sebagai bukti transaksi

Sumber : Bagian Gudang

Tujuan : Pemilik toko

Media : Kertas

Jumlah : 1

Frekuesnsi : setiap ada barang masuk dan keluar

Bentuk : Lampiran A-01

2. Nama Dokumen : Laporan Penjualan harian

Fungsi : Sebagai bukti penjualan

Sumber : Bagian keuangan

Tujuan : Pemilik toko

Media : Kertas

Jumlah : 2 lembar

Frekuesnsi : setiap ada transaksi

Bentuk : Lampiran A-02

3.2.4. Dokumen Keluaran

Dokumen keluaran merupakan terdiri dari proses pemesanan barang, pengiriman

dan pembayaran. Adapun bentuk dokumen keluaran tersebut adalah sebagai berikut :

1. Nama Dokumen : Invoice Tunai

26

Fungsi : Sebagai bukti transaksi penjualan

Sumber : Admin

Tujuan : Pelanggan

Media : Kertas

Jumlah : 1 Lembar

Frekuesnsi : Setiap ada penjualan

Bentuk : Lampiran B-01

2. Nama Dokumen : Invoice Kredit

Fungsi : Sebagai bukti transaksi penjualan

Sumber : Admin

Tujuan : Pelanggan

Media : Kertas

Jumlah : 1

Frekuesnsi : Setiap ada penjualan

Bentuk : Lampiran B-02

3. Nama Dokumen : Resi Pengiriman Barang

Fungsi : Sebagai bukti pengiriman barang

Sumber : Bagian Gudang

Tujuan : Admin

Media : Kertas

Jumlah : 1 Lembar

Frekuesnsi : Setiap ada pengiriman barang

Bentuk : Lampiran B-03

4. Nama Dokumen : Bukti Transfer

Fungsi : Sebagai bukti transaksi pembayaran kredit

27

Sumber : Pelanggan

Tujuan : Bagian keuangan

Media : Elektronik

Jumlah : 1

Frekuesnsi : setiap ada pelunasan transaksi

Bentuk : Lampiran B-04

3.2.5. Permasalahan Pokok

Distro Travolt menjalani proses penjualan masih dicatat dengan menggunakan

excel sehingga menimbulkan berbagai masalah, sebagai berikut :

1. Manual Entry, setiap data yang ingin dicatat diketik secara manual sehingga

berisiko salah ketik, pengeditan data yang membutuhkan banyak waktu jika

terjadi perubahan dan terhapusnya data.

2. Tidak ada pemberitahuan berupa jika ada pelanggan yang telat melakukan

pelunasan penjualan kredit.

3. Jika pemilik meminta laporan penjualan dan laporan stok barang untuk

dibutuhkan kapanpun kepada bagian keuangan itu mesti mengumpulkan semua

bukti transaksi dan memverivikasi dahulu sehingga membuang waktu dan

pekerjaan menjadi kurang efisien.

3.2.6. Pemecahan Masalah

Setelah mengetahui masalah yang dihadapi oleh Distro Travolt, maka penulis

bermaksud ingin memberikan saran dengan harapan dapat membantu kelancaran

kegiatan penjualan di Distro Travolt, diantaranya dengan Sistem Informasi

Akuntansi Penjualan Tunai dan Kredit Berbasis Dekstop, maka dapat langsung untuk

28

membuat laporan dengan menggunakan sistem tersebut. Sehingga dapat tersusun rapi

dan menghemat waktu.

Berikut pemecahan masalah yang dibutuhkan:

1. Penyimpanan file output dengan menggunakan box file tidak dibutuhkan lagi

karena data sudah tersiman didatabase dalam segingga memudahkan pencarian

data mengedit, menambah dan menghapus.

2. Sistem dapat memberitahu jika ada pelanggan yang telat melakukan pelunasan

kredit.

3. Pembuatan laporan penjualan dan laporan stok barang menjadi menghemat waktu

karena aplikasi yang dibuat sudah otomatis membuatkan laporan dalam setiap

terjadi transaksi.

3.3. Analisis Kebutuhan Software

3.3.1. Analisis Kebutuhan

Berikut ini spesifikasi kebutuhan dari Aplikasi Sistem Informasi Akuntansi

Penjualan Tunai dan Kredit di Distro Travolt Depok :

A1. Admin dan Bagian Keuangan melakukan login

A2. Admin dapat mengelola data master

A.2.1. Mengelola Customer

A.2.2. Mengelola Barang

A3. Admin dapat mengelola transaksi

A.3.1. Mengelola penjualan tunai dan kredit

A4. Bagian Keuangan mengakses menu laporan

A.2.1. Mengelola master akun

A.2.2. Mengelola laporan jurnal umum, buku besar, dan neraca saldo.

29

3.3.2. Use Case Diagram

Gambar III.3

Use Case Diagram

30

Tabel III.1

Deskripsi Use Case Diagram Bagian Halaman Admin

Use Case narative Menu Utama

Tujuan

Admin dapat melakukan pengolahan data yang ada

di form custsomer, form barang, stok barang, barang

terjual dan form transaksi tunai maupun kredit.

Deskripsi

Sistem ini memungkinkan aktor untuk mengelola

sistem pencatatan penjualan tunai dan kredit dimulai

dari input data sampai terbuatnya laporan.

Skenario Utama

1. Aktor Admin

Kondisi Awal

Admin membukan dan melakukan login pada

aplikasi penjualan tunai dan kredit.

Aksi Aktor Reaksi Sistem

1. Aktor memilih tombol

form customer

Sistem akan menampilkan data customer.dan

penambahan data customer baru

2. Aktor memilih tombol

Stok barang

Sistem akan menampilkan data barang dan

penambahan data barang

3. Aktor memilih tombol

laporan persediaan barang

Sistem akan menampilkan data sisa barang yang

tersedia.

4. Aktor memilih tombol

barang terjual

Sistem akan menampilkan data barang yang terjual.

4. Aktor memilih tombol

form penjualan tunai

Sistem akan menampilkan form penjualan tunai

kemudian akan masuk kedalam laporan barang

terjual.

5. Aktor memilih tombol

form pengajuan kredit

Sistem akan menampilkan form pengajuan kredit

beserta data customer yang mau kredit.

6. Aktor memilih tombol

form pelunasan kredit

Sistem akan menampilkan form pelunasan kredit

beserta dengan data cicilan customer

Kondisi akhir Jika perintah sesuai maka sistem akan menampilkan

seperti yang diinginkan oleh aktor.

31

Tabel III.2

Deskripsi Use Case Diagram Bagian Halaman Bagian Keuangan

Use Case narative Menu Keduta

Tujuan Bagian keuangan dapat melakukan pengolahan

laporan yang ada di menu laporan.

Deskripsi Sistem ini memungkinkan aktor untuk mengelola

laporan penjulan tunai dan kredit melihat laporan

sampai mencetak.

Skenario Kedua

Aktor Bagian Keuangan

Kondisi Awal Bagian keuangan membuka dan melakukan login

pada aplikasi penjualan tunai dan kredit.

Aksi Aktor Reaksi Sistem

1. Aktor memilih tombol

master akun

Sistem akan menampilkan submenu master akun.

2. Aktor memilih tombol

laporan

Sistem akan menampilkan submenu laporan seperti

laporan penjualan tunai, laporan penjualan kredit,

laporan pelunasan kredit, laporan jurnal umum,

laporan buku besar, dan laporan neraca.

3. Kondisi akhir Jika perintah sesuai maka sistem akan menampilkan

seperti yang diinginkan oleh aktor.

32

3.3.3. Activity Diagram

Gambar III.4

Activity Diagram Halaman Menu Utama Admin.

33

Gambar III.5

Activity Diagram Halaman Utama Bagian Keuangan.

34

Gambar III.6

Activity Diagram Customer

35

Gambar III.7

Activity Diagram Barang

36

Gambar III.8

Activity Diagram Penjualan Tunai

37

Gambar III.9

Activity Diagram Pengajuan kredit

38

Gambar III. 10

Activity Diagram Pelunasan Kredit

39

Gambar III.11

Activity Diagram Master Akun

40

Gambar III.12

Activity Diagram Menu Laporan

41

Gambar III.13

Activity Diagram Laporan Barang Terjual

42

Gambar III.14

Activity Diagram Laporan Stok Barang

43

3.4. Desain

3.4.1. Entity Relationship Diagram (ERD)

Gambar III.15

Entity Relationship Diagram (ERD)

44

3.4.2. Logical Record Structure (LRS)

Gambar III.16

Logical Record Structure (LRS)

3.4.3. Spesifikasi File

1. Spesifikasi File User Login

Nama Database : dbtravolt

45

Nama File : userlogin

Tipe File : Master Data

Akses File : Random

Panjang Record : 125

Field Key : kodeUser

Tabel III.3

Spesifikasi File Tabel User Login

2. Spesifikasi File Data Customer

Nama Database : dbtravolt

Nama File : customer

Tipe File : Master Data

Akses File : Admin

Panjang Record : 255

Field Key : idCustomer

Tabel III.4

Spesifikasi File Tabel Customer

3. Spesifikasi File Data Barang

Nama Database : dbtravolt

Nama File : barang

Tipe File : Master Data

46

Akses File : Admin

Panjang Record : 192

Field Key : kodeBarang

Tabel III.5

Spesifikasi File Tabel Barang

4. Spesifikasi File Data Transaksi Tunai

Nama Database : dbtravolt

Nama File : transaksitunai

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 272

Field Key : nomorTransaksiTunai

Tabel III.6

Spesifikasi File Tabel Transaksi Tunai

5. Spesifikasi File Data Transaksi Tunai Detail

Nama Database : dbtravolt

Nama File : transaksitunaidetail

47

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 62

Field Key : -

Tabel III.7

Spesifikasi File Tabel Transaksi Tunai Detail

6. Spesifikasi File Data Transaksi Kredit

Nama Database : dbtravolt

Nama File : transaksikredit

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 329

Field Key : nomorTransaksiKredit

Tabel III.8

Spesifikasi File Tabel Transaksi Kredit

48

7. Spesifikasi File Data Transaksi Kredit Detail

Nama Database : dbtravolt

Nama File : transaksikreditdetail

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 62

Field Key : -

Tabel III.9

Spesifikasi File Tabel Transaksi Kredit Detail

8. Spesifikasi File Data Pelunasan Kredit

Nama Database : dbtravolt

Nama File : pelunasankredit

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 81

Field Key : nomorPelunasanKredit

Tabel III.10

Spesifikasi File Tabel Pelunasan Kredit

49

9. Spesifikasi File Data Jurnal Umum

Nama Database : dbtravolt

Nama File : jurnalumum

Tipe File : Laporan

Akses File : Bagian Keuangan

Panjang Record : 60

Field Key : nomorBuktiTransaksi

Tabel III.11

Spesifikasi File Tabel Jurnal Umum

10. Spesifikasi File Data Jurnal Umum Detail

Nama Database : dbtravolt

Nama File : jurnalumumdetail

Tipe File : Laporan

Akses File : Bagian Keuangan

Panjang Record : 62

Field Key : -

Tabel III.12

Spesifikasi File Tabel Jurnal Umum Detail

11. Spesifikasi File Data Master Akun

Nama Database : dbtravolt

Nama File : masterakun

Tipe File : Master Data

50

Akses File : Bagian Keuangan

Panjang Record : 92

Field Key : kodeAkun

Tabel III.13

Spesifikasi File Tabel Master Akun

12. Spesifikasi File Data Keranjang Belanja

Nama Database : dbtravolt

Nama File : keranjangbelanja

Tipe File : Transaksi

Akses File : Admin

Panjang Record : 93

Field Key : kodeBarang

Tabel III.14

Spesifikasi File Tabel Keranjang Belanja

13. Spesifikasi File Data Pengiriman

Nama Database : dbtravolt

Nama File : pengiriman

Tipe File : Master Data

Akses File : Admin

Panjang Record : 121

51

Field Key : idPengiriman

Tabel III.15

Spesifikasi File Tabel Pengiriman

3.4.4. Sequence Diagram

Gambar III.17

Sequence Diagram

52

3.4.5. Deployment Diagram

Gambar III.18

Deployment Diagram

53

3.4.6. User Interface

Gambar III.19

User Interface Login

Gambar III.20

User Interface Menu Utama Admin

54

Gambar III.21

User Interface Menu Utama Bagian Keuangan

Gambar III.22

User Interface Form Customer

55

Gambar III.23

User Interface Form Barang

Gambar III.24

User Interface Form Transaksi Tunai

56

Gambar III.25

User Interface Form Transaksi Tunai

Gambar III.26

User Interface Form Transaksi Pengajuan Kredit

57

Gambar III.27

User Interface Form Transaksi Pengajuan Kredit

Gambar III.28

User Interface Form Transaksi Pelunasan Kredit

58

Gambar III.29

Bukti Transaksi Pelunasan Kredit

Gambar III.30

Laporan Stok Barang

59

Gambar III.31

Laporan Barang Terjual

60

Gambar III.32

Laporan Jurnal Umum

61

Gambar III.33

Laporan Buku Besar

62

63

Gambar III.34

Laporan Neraca Saldo

64

Gambar III.35

Laporan Penjualan Tunai

Gambar III.36

Laporan Pengajuan Kredit

65

Gambar III.37

Laporan Pelunasan Kredit

3.5. Implementasi

Implementasi dalam Sistem Informasi Akuntansi Penjualan Tunai dan Kredit

pada Distro Travolt Kota Depok ini tentunya memerlukan beberapa spesifikasi

komputer agar sistem yang telah dibuat mampu berjalan dengan baik. Spesifikasi

komputer yang mendukung dalam aplikasi berbasis dekstop ini sebagai berikut :

3.5.1. Code Generation

package travolt_app;

import java.sql.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.awt.event.KeyEvent;

66

import java.util.HashMap;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

/**

*

* @author User

*/

public class formTransaksiTunai extends javax.swing.JFrame {

/**

* Creates new form formTransaksiTunai

*/

filter f = new filter();

koneksi kon = new koneksi();

private Object[][] dataSementara = null;

private String[] labelSementara = {"Kode Barang", "Nama Barang",

"Harga", "Jumlah Barang", "Sub Total"};

public Date date = new Date();

public SimpleDateFormat noFormat = new SimpleDateFormat("dd-MM-

yyyy");

public SimpleDateFormat noformatTransaksi = new

SimpleDateFormat("yyMMdd");

67

public String kodeUser;

public String kodeBarang;

public String namaBarang;

public String stok;

public String hargaBarang;

public String subTotal;

public String idPengiriman;

public String kota;

public String kecamatan;

public String hargaOngkir;

public String metodePembayaran;

public int totalPenjualan;

public formTransaksiTunai() {

initComponents();

kon.setKoneksi();

setTanggal();

hapusTabelKeranjangBelanja();

lTotal.setText(Integer.toString(0));

}

68

void setTanggal() {

java.util.Date tanggalSekarang = new java.util.Date();

java.text.SimpleDateFormat a = new

java.text.SimpleDateFormat("yyyy-MM-dd");

tfTanggal.setText(a.format(tanggalSekarang));

}

public String nomorTransaksiOtomatis() {

String urutan = null;

try {

kon.rs = kon.st.executeQuery("SELECT

RIGHT(nomorTransaksiTunai,3)+1 FROM transaksitunai AS

nomorTransaksiTunai ORDER BY nomorTransaksiTunai DESC");

if (kon.rs.next()) {

urutan = kon.rs.getString(1);

while (urutan.length() < 3) {

urutan = "0" + urutan;

}

urutan = "TN-" + noformatTransaksi.format(date) + urutan;

} else {

urutan = "TN-" + noformatTransaksi.format(date) + "001";

}

tfNomorTransaksi.setText(urutan);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

69

}

return urutan;

}

private void tampilTabelKeranjangBelanja() {

try {

String sql = "SELECT * FROM keranjangbelanja ORDER BY

kodeBarang";

kon.rs = kon.st.executeQuery(sql);

ResultSetMetaData m = kon.rs.getMetaData();

int kolom = m.getColumnCount();

int baris = 0;

while (kon.rs.next()) {

baris = kon.rs.getRow();

}

dataSementara = new Object[baris][kolom];

int x = 0;

kon.rs.beforeFirst();

while (kon.rs.next()) {

dataSementara[x][0] = kon.rs.getString("kodeBarang");

dataSementara[x][1] = kon.rs.getString("nama");

dataSementara[x][2] = kon.rs.getString("harga");

dataSementara[x][3] = kon.rs.getString("jumlah");

dataSementara[x][4] = kon.rs.getString("subTotal");

70

x++;

}

jTable1.setModel(new DefaultTableModel(dataSementara,

labelSementara));

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void simpanKeranjangBelanja() {

try {

String sql = "INSERT INTO keranjangbelanja VALUES('"

+ kodeBarang + "','"

+ namaBarang + "','"

+ hargaBarang + "','"

+ tfJumlah.getText() + "','"

+ subTotal + "')";

kon.st.executeUpdate(sql);

tampilTabelKeranjangBelanja();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

71

}

private void hapusIsiKeranjangBelanja() {

int row = jTable1.getSelectedRow();

int subTotal2;

int total = Integer.parseInt(lTotal.getText());

subTotal2 = Integer.parseInt((String) jTable1.getValueAt(row, 4));

total = total - subTotal2;

lTotal.setText(Integer.toString(total));

try {

String sql = "DELETE FROM keranjangbelanja WHERE

kodeBarang = '" + (String) jTable1.getValueAt(row, 0) + "'";

kon.st.executeUpdate(sql);

tampilTabelKeranjangBelanja();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void simpanTransaksi() {

try {

String sql = "INSERT INTO transaksitunai VALUES('"

+ tfNomorTransaksi.getText() + "','"

+ tfTanggal.getText() + "','"

72

+ lKodeUser.getText() + "','"

+ idPengiriman + "','"

+ tfAlamat.getText() + "','"

+ tfBiayaPengiriman.getText() + "','"

+ lTotal.getText() + "','"

+ metodePembayaran + "')";

kon.st.executeUpdate(sql);

simpanTransaksiDetail();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan Transaksi

Tunai : " + e);

}

}

private void simpanTransaksiDetail() {

try {

String detail = "INSERT transaksitunaidetail SELECT '" +

tfNomorTransaksi.getText() + "', "

+ "kodeBarang,jumlah,subTotal FROM keranjangbelanja";

kon.st.executeUpdate(detail);

simpanJurnalUmum();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan Transaksi

Tunai Detail : " + e);

}

73

}

private void simpanJurnalUmum() {

jurnal ju = new jurnal();

try {

//Simpan Jurnal Umum

ju.setNomorBuktiTransaksi(tfNomorTransaksi.getText());

ju.setTanggal(tfTanggal.getText());

ju.setKeterangan("Penjualan Tunai");

ju.simpanJurnalUmum();

try {

if (jRadioButton1.isSelected()) {

//Simpan Kas

ju.setKodeAkun("1-1100");

ju.setDebit(lTotal.getText());

ju.setKredit("0");

ju.simpanJurnalDetail();

updateSaldoKas();

} else if (jRadioButton2.isSelected()) {

//Simpan Bank

ju.setKodeAkun("1-1200");

ju.setDebit(lTotal.getText());

ju.setKredit("0");

ju.simpanJurnalDetail();

74

updateSaldoBank();

}

try {

//Simpan Biaya Angkut Penjualan

if (idPengiriman != "0") {

ju.setKodeAkun("4-2000");

ju.setDebit("0");

ju.setKredit(tfBiayaPengiriman.getText());

ju.simpanJurnalDetail();

updateSaldoBiayaAngkut();

}

try {

//Simpan Penjualan

int total, biayaPengiriman;

total = Integer.parseInt(lTotal.getText());

biayaPengiriman =

Integer.parseInt(tfBiayaPengiriman.getText());

totalPenjualan = total - biayaPengiriman;

ju.setKodeAkun("4-1000");

ju.setDebit("0");

ju.setKredit(Integer.toString(totalPenjualan));

ju.simpanJurnalDetail();

75

updateSaldoPenjualan();

//End of Jurnal~~~~~~~

JOptionPane.showMessageDialog(this, "Data Berhasil

Disimpan", "Informasi", JOptionPane.INFORMATION_MESSAGE);

updateStokBarang();

cetakStruk();

hapusTabelKeranjangBelanja();

tampilTabelKeranjangBelanja();

tfBayar.setEnabled(false);

namaBarang = null;

hargaBarang = null;

tfNama.setText("");

tfHarga.setText("");

tfJumlah.setText("");

idPengiriman = null;

kota = null;

kecamatan = null;

hargaOngkir = null;

tfAlamat.setText("");

lTotal.setText(Integer.toString(0));

//tfBiayaPengiriman.setText("0");

76

tfBayar.setText("");

tfKembali.setText("");

tfBayar.setEnabled(true);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan

Penjualan: " + e);

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan Biaya

Angkut Penjualan : " + e);

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan Kas/Bank :

" + e);

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error Simpan Jurnal Umum

: " + e);

}

}

77

private void updateSaldoKas() {

try {

String masterakun = "UPDATE masterakun set debit = debit + '" +

lTotal.getText() + "' WHERE kodeAkun = '1-1100' ";

kon.st.executeUpdate(masterakun);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void updateSaldoBank() {

try {

String masterakun = "UPDATE masterakun set debit = debit + '" +

lTotal.getText() + "' WHERE kodeAkun = '1-1200' ";

kon.st.executeUpdate(masterakun);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void updateSaldoBiayaAngkut() {

try {

String masterakun = "UPDATE masterakun set kredit = kredit + '" +

tfBiayaPengiriman.getText() + "' WHERE kodeAkun = '4-2000' ";

78

kon.st.executeUpdate(masterakun);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void updateSaldoPenjualan() {

try {

String masterakun = "UPDATE masterakun set kredit = kredit + '" +

totalPenjualan + "' WHERE kodeAkun = '4-1000' ";

kon.st.executeUpdate(masterakun);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void updateStokBarang() {

try {

String detail = "UPDATE `barang` t1 INNER JOIN

`keranjangbelanja` t2 ON (t2.kodeBarang=t1.kodeBarang) SET t1.stok = t1.stok -

t2.jumlah";

kon.st.executeUpdate(detail);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

79

}

private void hapusTabelKeranjangBelanja() {

try {

String sql = "DELETE FROM keranjangbelanja";

kon.st.executeUpdate(sql);

tampilTabelKeranjangBelanja();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

}

}

private void cetakStruk() {

try {

String file = "src/travolt_app/strukTunai.jasper";

HashMap parameter = new HashMap();

parameter.put("nomorTransaksiTunai",

tfNomorTransaksi.getText());

parameter.put("bayar", Integer.parseInt(tfBayar.getText()));

parameter.put("kembali", Integer.parseInt(tfKembali.getText()));

JasperPrint print = JasperFillManager.fillReport(file, parameter,

kon.setKoneksi());

JasperViewer.viewReport(print, false);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, e);

80

}

}

private void hitungTotal() {

int total, biayaPengiriman;

total = Integer.parseInt(lTotal.getText());

biayaPengiriman = Integer.parseInt(tfBiayaPengiriman.getText());

total = total + biayaPengiriman;

lTotal.setText(Integer.toString(total));

}

private void btBarangActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_btBarangActionPerformed

boolean closeable = true;

dataBarang dataBarang = new dataBarang(null, closeable);

dataBarang.formTransaksiTunai = this;

dataBarang.setVisible(true);

dataBarang.setResizable(true);

}//GEN-LAST:event_btBarangActionPerformed

private void btBatalActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_btBatalActionPerformed

hapusTabelKeranjangBelanja();

dispose();

}//GEN-LAST:event_btBatalActionPerformed

81

private void formWindowActivated(java.awt.event.WindowEvent evt)

{//GEN-FIRST:event_formWindowActivated

nomorTransaksiOtomatis();

lKodeUser.setText(kodeUser);

tfNama.setText(namaBarang);

tfHarga.setText(hargaBarang);

tampilTabelKeranjangBelanja();

tfKota.setText(kota);

tfKecamatan.setText(kecamatan);

if (idPengiriman != null) {

tfBiayaPengiriman.setText(hargaOngkir);

} else {

tfBiayaPengiriman.setText("0");

}

//tfBayar.setEnabled(false);

}//GEN-LAST:event_formWindowActivated

private void tfJumlahActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_tfJumlahActionPerformed

try {

int harga, jumlah, total;

harga = Integer.parseInt(tfHarga.getText());

jumlah = Integer.parseInt(tfJumlah.getText());

82

int stokBarangSaatIni;

String sql = "SELECT * FROM barang WHERE kodeBarang = '" +

kodeBarang + "' ";

kon.rs = kon.st.executeQuery(sql);

if (kon.rs.next()) {

stokBarangSaatIni = kon.rs.getInt("stok");

if (jumlah > stokBarangSaatIni) {

JOptionPane.showMessageDialog(null, "Stok Barang Tidak

Cukup");

} else {

total = harga * jumlah;

subTotal = Integer.toString(total);

simpanKeranjangBelanja();

tampilTabelKeranjangBelanja();

int ttl = 0;

for (int a = 0; a < jTable1.getRowCount(); a++) {

int sub = Integer.parseInt((String) jTable1.getValueAt(a, 4));

ttl += sub;

}

lTotal.setText(Integer.toString(ttl));

tfJumlah.setText("");

83

}

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Error : " + e);

}

/*namaBarang = null;

hargaBarang = null;

tfNama.setText("");

tfHarga.setText("");

*/

}//GEN-LAST:event_tfJumlahActionPerformed

private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-

FIRST:event_jTable1KeyPressed

if (evt.getKeyCode() == KeyEvent.VK_BACK_SPACE) {

hapusIsiKeranjangBelanja();

}

}//GEN-LAST:event_jTable1KeyPressed

private void btSimpanActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_btSimpanActionPerformed

//Cek Metode Pembayaran

if (jRadioButton1.isSelected()) {

metodePembayaran = "Cash";

84

} else if (jRadioButton2.isSelected()) {

metodePembayaran = "Bank";

}

//Cek ID Pengiriman

if (idPengiriman == null) {

idPengiriman = "0";

}

//Validasi

if (namaBarang == null) {

JOptionPane.showMessageDialog(null, "Silahkan Pilih Barang");

} else if (tfKembali.getText().equals("")) {

JOptionPane.showMessageDialog(null, "Silahkan Isi Uang Bayar");

} else {

simpanTransaksi();

}

}//GEN-LAST:event_btSimpanActionPerformed

private void tfBayarActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_tfBayarActionPerformed

int total, bayar, kembali;

total = Integer.parseInt(lTotal.getText());

bayar = Integer.parseInt(tfBayar.getText());

if (bayar < total) {

85

JOptionPane.showMessageDialog(null, "Silahkan isi uang bayar

sesuai Total Harga");

} else {

kembali = bayar - total;

tfKembali.setText(Integer.toString(kembali));

tfBayar.setEnabled(false);

}

}//GEN-LAST:event_tfBayarActionPerformed

private void btKotaActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_btKotaActionPerformed

boolean closeable = true;

formPengiriman formPengiriman = new formPengiriman(null,

closeable);

formPengiriman.formTransaksiTunai = this;

formPengiriman.setVisible(true);

formPengiriman.setResizable(true);

}//GEN-LAST:event_btKotaActionPerformed

private void jTable1MouseClicked(java.awt.event.MouseEvent evt)

{//GEN-FIRST:event_jTable1MouseClicked

// TODO add your handling code here:

}//GEN-LAST:event_jTable1MouseClicked

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_jButton1ActionPerformed

86

hapusTabelKeranjangBelanja();

lTotal.setText(Integer.toString(0));

}//GEN-LAST:event_jButton1ActionPerformed

private void

tfBiayaPengirimanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-

FIRST:event_tfBiayaPengirimanActionPerformed

int total, biayaPengiriman;

total = Integer.parseInt(lTotal.getText());

biayaPengiriman = Integer.parseInt(tfBiayaPengiriman.getText());

total = total + biayaPengiriman;

lTotal.setText(Integer.toString(total));

tfBayar.setEnabled(true);

tfBayar.requestFocus();

}//GEN-LAST:event_tfBiayaPengirimanActionPerformed

private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent

evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed

// TODO add your handling code here:

}//GEN-LAST:event_jRadioButton1ActionPerformed

private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent

evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed

// TODO add your handling code here:

}//GEN-LAST:event_jRadioButton2ActionPerformed

private void tfJumlahKeyTyped(java.awt.event.KeyEvent evt) {//GEN-

FIRST:event_tfJumlahKeyTyped

f.angka(evt);

87

}//GEN-LAST:event_tfJumlahKeyTyped

private void tfBayarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-

FIRST:event_tfBayarKeyTyped

f.angka(evt);

}//GEN-LAST:event_tfBayarKeyTyped

3.5.2. Blackbox Testing

Tabel III.16

Hasil Pengujian Black Box Testing Form Login

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Kode User

dan Password

tidak sesuai

dengan

database

Kode User : K-

02 (benar)

Password:

qwerty (salah)

Sistem

menampilkan

pesan "Login

Gagal"

kemudian

kembali ke

halaman

login.

Sesuai

Harapan Valid

2

Kode User

dan Password

sesuai dengan

database

Kode User : K-

01 (benar)

Password: a

(benar)

Sistem

menampilkan

pesan "Login

Berhasil"

kemudian

sistem

menampilkan

menu utama

sesuai dengan

hak akses.

Sesuai

Harapan Valid

88

Tabel III.17

Hasil Pengujian Black Box Testing Form Customer

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Mengosongkan

data lalu

menekan

tombol simpan

Nama

Customer:

(kosong)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Data

tidak boleh

kosong"

Sesuai

Harapan Valid

2

Mengisi nama

customer

menggunakan

angka

Nama

Customer:

12345

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

angka"

Sesuai

Harapan Valid

3

Mengisi nomor

HP dan nomor

KTP

menggunakan

huruf

Nomor KTP:

abc

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

huruf"

Sesuai

Harapan Valid

4

Mengisi semua

data dengan

lengkap dan

benar

Field: (Terisi

Semua)

Sistem

menampilkan

pesan "Data

Berhasil

Disimpan"

Sesuai

Harapan Valid

89

Tabel III.18

Hasil Pengujian Black Box Testing Form Akun

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Mengosongkan

data lalu

menekan

tombol simpan

Nomor Akun:

(kosong)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Data

tidak boleh

kosong"

Sesuai

Harapan Valid

2

Mengisi nomor

akun atau

saldo akun

menggunakan

huruf

Nomor Akun:

abcd

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

huruf"

Sesuai

Harapan Valid

3

Mengisi nomor

nama akun

menggunakan

angka

Nama Akun:

123

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

angka"

Sesuai

Harapan Valid

4

Mengisi semua

data dengan

lengkap dan

benar

Field: (Terisi

Semua)

Sistem

menampilkan

pesan "Data

Berhasil

Disimpan"

Sesuai

Harapan Valid

90

Tabel III.19

Hasil Pengujian Black Box Testing Form Pengajuan Kredit

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Mengosongkan

data lalu

menekan

tombol simpan

Nama Barang:

(kosong)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Data

tidak boleh

kosong"

Sesuai

Harapan Valid

2

Mengisi uang

bayar

menggunakan

huruf

Uang Bayar:

abcd

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

huruf"

Sesuai

Harapan Valid

3

Mengisi

jumlah barang

yang dibeli

oleh customer

lebih besar dari

stok barang

Jumlah beli:

100 (Stok 20)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Stok

barang tidak

cukup"

Sesuai

Harapan Valid

4

Mengisi

jumlah barang

yang dibeli

oleh customer

kurang dari 1

lusin barang

yang sama

Jumlah beli:

10

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan

"Minimal

Pembelian 12

Barang yang

Sama"

Sesuai

Harapan Valid

5

Mengisi uang

bayar lebih

sedikti dari DP

Uang Bayar:

800.000 (DP:

1.000.000)

Sistem

menolak

proses

transaksi

Sesuai

Harapan Valid

91

kemudian

menampilkan

pesan

"Silahkan isi

uang bayar

sesuai DP"

6

Mengisi semua

data dengan

lengkap dan

benar

Field: (Terisi

Semua)

Sistem

menampilkan

pesan "Data

Berhasil

Disimpan"

Sesuai

Harapan Valid

Tabel III.20

Hasil Pengujian Black Box Testing Form Penjualan Tunai

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Mengosongkan

data lalu

menekan

tombol simpan

Nama Barang:

(kosong)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Data

tidak boleh

kosong"

Sesuai

Harapan Valid

2

Mengisi uang

bayar

menggunakan

huruf

Uang Bayar:

abcd

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

huruf"

Sesuai

Harapan Valid

3

Mengisi

jumlah barang

yang dibeli

oleh customer

lebih besar dari

stok barang

Jumlah beli: 5

(Stok 2)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Stok

barang tidak

cukup"

Sesuai

Harapan Valid

4 Mengisi uang

bayar lebih

Uang Bayar:

50.000 (Total:

Sistem

menolak

Sesuai

Harapan Valid

92

sedikti dari

Total

100.000) proses

transaksi

kemudian

menampilkan

pesan

"Silahkan isi

uang bayar

sesuai total

harga"

5

Mengisi semua

data dengan

lengkap dan

benar

Field: (Terisi

Semua)

Sistem

menampilkan

pesan "Data

Berhasil

Disimpan"

Sesuai

Harapan Valid

Tabel III.21

Hasil Pengujian Black Box Testing Form Pelunasan Kredit

No. Skenario

Pengujian Test Case

Hasil yang

Diharapkan

Hasil

Pengujian Kesimpulan

1

Mengosongkan

data lalu

menekan

tombol simpan

Nama Barang:

(kosong)

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Data

tidak boleh

kosong"

Sesuai

Harapan Valid

2

Mengisi stok

dan harga

barang

menggunakan

huruf

Harga barang:

abc

Sistem

menolak

proses

transaksi

kemudian

menampilkan

pesan "Error,

tidak bisa

diinput

menggunakan

huruf"

Sesuai

Harapan Valid

3

Mengisi semua

data dengan

lengkap dan

benar

Field: (Terisi

Semua)

Sistem

menampilkan

pesan "Data

Berhasil

Disimpan"

Sesuai

Harapan Valid

93

3.5.3. Spesifikasi Hardware dan Software

Spesifikasi perangkat keras dan perangkat lunak yang diusulkan penulis sebagai

berikut :

Tabel III.22

Spesifikasi Hardware dan Software

Kebutuhan Keterangan

Sistem Windows 7

Processor Intel(R) Core(TM) i3

RAM 2 GB

Monitor 14"

Software

Java jdk1.8.0, XAMPP, Web

Browser