BAB III PEMBAHASAN - repository.bsi.ac.id...pekerjaan untuk semua bagian. 34 c. MengACC gaji...

82
31 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Tinjauan perusahaan ini berisi tentang sejarah perusahaan, visi misi, struktur organisasi serta fungsi dari masing-masing bagian yang ada dalam perusahaan tersebut. Selain itu juga akan membahas mengenai permasalahan yang terjadi dan sistem organisasi yang berjalan. 3.1.1. Sejarah Perusahaan PT. Fakta Jabar Mediatama lahir sebagai perusahan media yang pada mulanya menyajikan media cetak dan online sebagai bisnis utama. Dalam kurun waktu kurang dari satu tahun telah melahirkan media cetak lokal di beberapa daerah di Jawa Barat, seperti : Fakta Bekasi, Fakta Purwakarta, Fakta Subang, Fakta Garut, Fakta Tasik, Fakta Ciamis, Fakta Banjar dan Fakta Bandung. Telah menempatkan Fakta Jabar Mediatama sebagai salah satu jaringan media cetak terbesar di Jawa Barat. Pertumbuhan bisnis yang kian pesat diwilayah karawang, Bekasi, Bandung dan sekitarnya, serta kepercayaan publik yang semakin menguat kepada perusahaan kami, menuntut PT. Fakta Jabar Mediatama yang lahir sejak 26 November 2012 Fakta Jabar telah memperluas usahanya yakni dalam bidang jasa konsultan, event organizer (EO), advertising serta beberapa bidang lainnya. Dengan demikian, dengan hadirnya PT. Fakta Jabar Mediatama dapat menjadi One Stop Service yang terpercaya untuk dapat melayani berbagai kebutuhan pelaku usaha, pemerintah maupun elemen lainnya.

Transcript of BAB III PEMBAHASAN - repository.bsi.ac.id...pekerjaan untuk semua bagian. 34 c. MengACC gaji...

31

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Tinjauan perusahaan ini berisi tentang sejarah perusahaan, visi misi, struktur

organisasi serta fungsi dari masing-masing bagian yang ada dalam perusahaan tersebut.

Selain itu juga akan membahas mengenai permasalahan yang terjadi dan sistem

organisasi yang berjalan.

3.1.1. Sejarah Perusahaan

PT. Fakta Jabar Mediatama lahir sebagai perusahan media yang pada mulanya

menyajikan media cetak dan online sebagai bisnis utama. Dalam kurun waktu kurang

dari satu tahun telah melahirkan media cetak lokal di beberapa daerah di Jawa Barat,

seperti : Fakta Bekasi, Fakta Purwakarta, Fakta Subang, Fakta Garut, Fakta Tasik, Fakta

Ciamis, Fakta Banjar dan Fakta Bandung. Telah menempatkan Fakta Jabar Mediatama

sebagai salah satu jaringan media cetak terbesar di Jawa Barat.

Pertumbuhan bisnis yang kian pesat diwilayah karawang, Bekasi, Bandung dan

sekitarnya, serta kepercayaan publik yang semakin menguat kepada perusahaan kami,

menuntut PT. Fakta Jabar Mediatama yang lahir sejak 26 November 2012 Fakta Jabar

telah memperluas usahanya yakni dalam bidang jasa konsultan, event organizer (EO),

advertising serta beberapa bidang lainnya.

Dengan demikian, dengan hadirnya PT. Fakta Jabar Mediatama dapat menjadi One Stop

Service yang terpercaya untuk dapat melayani berbagai kebutuhan pelaku usaha,

pemerintah maupun elemen lainnya.

32

Visi :

PT. Fakta Jabar Mediatama menjadi perusahaan media, adversiting, event

organizer dan konsultan yang terpercaya, progresif dan terkuat di Jawa Barat.

Misi :

Menyajikan pelayanan terpadu untuk event organizer, adversiting, promosi

produk, media cetak dan penyajian informasi publik lainnya. Membangun sinergitas

produktif anatara masyarakat, pemerintah dan instansi bisnis.

3.1.2. Struktur Organisasi Perusahaan dan Fungsi

A. Struktur Organisasi

Sumber: PT. Fakta Jabar Mediatama

Gambar III.1

Struktur Organisasi

33

B. Fungsi dan Jabatan dari Struktur Organisasi

Untuk lebih jelasnya tugas, wewenang, serta tanggung jawab maupun fungsinya

diuraikan sebagai berikut :

1. CEO

Bertugas memimpin perusahaan dengan menerbitkan kebijakan-kebijakan

perusahaan, menetapkan, mengawasi, juga bertugas menyetujui anggaran tahunan

perusahaan.

2. Pimpinan Redaksi

a. Menentukan layak tidaknya suatu berita, foto, dan desain untuk sebuah

penerbitan.

b. Mengadakan koordinasi dengan bagian lain seperti Pemimpin Perusahaan untuk

mensinergikan jalannya roda perusahaan.

c. Menjalin lobi-lobi dengan nara sumber penting di pemerintahan, dunia usaha,

dan berbagai instansi.

d. Bertanggung jawab terhadap pihak lain, yang karena merasa dirugikan atas

pemberitaan yang telah dimuat, sehingga pihak lain melakukan somasi, tuntutan

hukum, atau menggugat ke pengadilan. Sesuai aturan, tanggung jawab oleh

Pemimpin Redaksi bila dilimpahkan kepada pihak lain yang dianggap melakukan

kesalahan tersebut.

3. Personalia

a. Menjadi penghubung antara karyawan dengan perusahaan .

b. Menjaga strutur kerja dengan memperbaharui persyaratan kerja dan deskripsi

pekerjaan untuk semua bagian.

34

c. MengACC gaji karyawan.

4. Redaktur

a. Bertanggung jawab terhadap mekanisme kerja redaksi sehari-hari.

b. Memimpin rapat perencanaan, rapat cecking, dan rapat terakhir sidang redaksi.

c. Membuat perencanaan isi untuk setiap penerbitan.

d. Bertanggung jawab terhadap isi redaksi penerbitan dan foto.

e. Mengkoordinasi kerja para redaktur atau penanggungjawab rubrik/desk.

f. Mengkoordinasikan alur perjalanan naskah dari para redaktur ke bagian setting

atau lay out.

g. Mengkoordinator alur perjalanan naskah dari bagian setting atau lay out ke

percetakan

h. Mewakili Pemred dalam berbagai acara baik ditugaskan atau acara mendadak.

5. Koor Liputan

a. Memantau dan mengagendakan jadwal berbagai acara: seminar, press

conference, acara DPR dll.

b. Membuat mekanisme kerja komunikasi antara redaktur dan reporter.

c. Memberikan lembar penugasan kepada reporter/wartawan dan fotografer.

d. Mengadministrasikan tugas-tugas yang diberikan kepada setiap reporter.

e. Memantau tugas-tugas harian para wartawan/reporter.

f. Melakukan komunikasi setiap saat kepada para redaktur, reporter/wartawan, dan

fotografer.

g. Memberikan penilaian kepada reporter/wartawan secara kuantitas maupun

kualitas.

35

h. Mengarahkan dan membina reporter dalam mencari berita dan mengejar sumber

berita.

6. Reporter

a. Mencari dan mewawancarai sumber berita yang ditugaskan redaktur atau atasan.

b. Menulis hasil wawancara, investasi, laporan kepada redaktur atau atasannya.

c. Memberikan usulan berita kepada redaktur atau atasannya terhadap suatu

informasi yang dianggap penting untuk diterbitkan.

d. Membina dan menjalin lobi dengan sumber-sumber penting di berbagai instansi.

e. Menghadiri acara press conferensi yang ditunjuk redaktur, atasannya, atau atas

inisiatif sendiri.

7. Keuangan

a. Mencatat pengeluaran dan pemasukan perusahaan .

b. Mencatat absendi pegawai.

c. Melaporkan gaji karyawan keapda personalia.

3.2. Tinjaun Kasus

3.2.1. Proses Bisnis Sistem Berjalan

Proses bisnis sistem berjalan pendapatan jasa pada PT Fakta Jabar Mediatama

adalah sebagai berikut :

1. Prosedur Pengajuan jasa

Pada PT. Fakta Jabar Mediatama memiliki 3 jenis jasa yaitu, jasa pembuatan iklan

(adversiting), jasa EO (Event Organizer), dan jasa consultan. Dari semua jasa

tersebut permintaan pengajuan jasa dapat dilakukan dengan cara Customer

menghubungi PIC masing-masing jasa atau customer dapat langsung datang ke

36

kantor untuk mengajukan pembuatan jasa, lalu PIC akan menawarkan berbagai

macam jenis jasa beserta dengan harganya. Jika sudah sepakat maka customer dapat

mengisi formulir permintaan jasa dan melakukan pembayaran uang muka.

Kemudian PIC akan memproses permintaan pengajuan jasa sesuai dengan formulir

permintaan jasa. Lalu PIC akan memvalidasi bukti penyelesaian jasa kepada bagian

keuangan untuk dibuatkan invoice, dan kwitansi nota kosong yang sudah di stempel

tiga rangkap warna kuning, biru dan putih.

2. Prosedur Pembayaran

Bagian PIC akan membawa bukti penyelesaian jasa dan data invoice yang telah

dibuatkan oleh bagian keuangan kepada customer, lalu customer melakukan

pelunasan kepada PIC dan menandatangani nota yang diberikan. Kemudian PIC

akan membuatkan nota sebanyak 3 rangkap yaitu warna putih untuk diberikan

kepada customer, warna biru untuk PIC dan warna kuning untuk diarsipkan oleh

bagian keuangan. Setelah itu PIC akan menyetorkan uang yang telah diterima dan

memberikan nota berwarna kuning kepada bagian keuangan. Dan bagian keuangan

akan mengarsipkan nota dan melakukan perekapan pembayaran dalam Microsoft

Excel.

3. Prosedur Pembuatan Laporan

Bagian keuangan membuat laporan pendapatan jasa berdasarkan nota pendapatan

yang telah direkap setiap hari dan akan diarsipkan setiap bulan untuk dijadikan

laporan keuangan dan diberikan kepada CEO.

37

3.2.2. Aktivity Diagram

1. Activity Diagram Prosedur Pengajuan Jasa

Gambar III.2.

Activity Diagram Prosedur Pengajuan Jasa

38

2. Activity Diagram Prosedur Pembayaran

Gambar III.3.

Activity Diagram Prosedur Pembayaran

39

3. Activity Diagram Prosedur Pembuatan Laporan

Gambar III.4.

Activity Diagram Prosedur Pembuatan Laporan

3.2.3. Dokumen Masukan

Dokumen masukan adalah sebagai bentuk dokumen masukan yang akan diolah

dalam suatu proses agar dpat menghasilkan keluaran yang diinginkan. Adapun dokumen

masukan tersebut :

1. FPJ

Nama Dokumen : Formulir Permintaan Jasa

40

Fungsi : Data Permintaan Jasa

Sumber : Customer

Tujuan : PIC

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap customer melakukan permintaan

Bentuk : Lampiran A-1

2. Nota R2

Nama Dokumen : Nota Rangkap 2

Fungsi : Bukti Pembayaran Jasa

Sumber : Customer

Tujuan : Bagian Keuangan

Media : Kertas

Jumlah : Satu Rangkap

Frekuensi : Setiap terjadi pembayaran

Bentuk : Lampiran A-2

3. Rekapan Pendapatan jasa

Nama Dokumen : Rekapan Pendapatan Jasa

Fungsi : Rekapan Pembayaran

Sumber : Nota

Tujuan : Pembuatan Laporan Bulanan

Media : Ms.Excel

Jumlah : Satu File

41

Frekuensi : Setiap ada Nota

Bentuk : Lampiran A-3

3.2.4. Dokumen Keluaran

Dokumen keluaran adalah segala bentuk dokumen dari hasil proses pengolahan

dokumen masukan yang terjadi pada suatu sistem. Adapun dokumen keluaran tersebut

adalah :

1. BPJ

Nama Dokumen : Bukti Penyelesaian Jasa

Fungsi : Bukti jasa telah dikerjakan

Sumber : PIC

Tujuan : Customer

Media : Kertas

Jumlah : Satu lembar

Frekuensi : Setiap jasa telah dikerjakan

Bentuk : Lampiran B-1

2. Data Invoice

Nama Dokumen : Invoice

Fungsi : Informasi jumlah penagihan

Sumber : Bagian Keuangan

Tujuan : Customer

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap melakukan penagihan

42

Bentuk : Lampiran B-2

3. Nota R1

Nama Dokumen : Nota Rangkap 1

Fungsi : Bukti Pembayaran Jasa

Sumber : Bagian Keuangan

Tujuan : Customer

Media : Kertas

Jumlah : Satu Rangkap

Frekuensi : Setiap terjadi pembayaran

Bentuk : Lampiran B-3

4. Laporan

Nama Dokumen : Laporan

Fungsi : Catatan Laporan Pendapatan jasa

Sumber : Bagian Keuangan

Tujuan : CEO

Media : Kertas

Jumlah : 1 File

Frekuensi : 1 Bulan Sekali

Bentuk : Lampiran B-4

3.2.5. Permasalahan Pokok

Setelah penulis mempelajari dan mengamati bagaimana sistem pengelolaan

keuangan yang terdapat pada PT. Fakta Jabar Mediatama, ternyata sistem tersebut

memiliki beberapa masalah yang dihadapi, diantaranya :

43

1. Sistem pengolahan data pendapatan jasa pada PT Fakta Jabar Mediatama saat ini

masih dilakukan dengan semi komputerisasi menggunakan Microsoft Excel, dan data

pendapatan jasa-jasa masih tergabung menjadi satu dalam satu worksheet.

2. Sistem pengolahan data pendapatan jasa pada PT Fakta Jabar Mediatama dirasa

masih kurang maksimal karena masih sederhana dengan Microsoft Excel, data belum

terdatabase dan belum terintegrasi, dimana proses penginputan tidak terjadi setiap

hari, hal ini dapat menyebabkan proses pendataan menjadi lama dan pengolahan data

tidak akurat.

3. Membutuhkan tempat untuk pengarsipan data, memungkinkan adanya kerusakan

hingga kehilangan data, arsip harus disusun rapi secara manual agar pada saat ada

permintaan data laporan dapat diperiksa dengan cepat.

4. Dalam proses pencatatan pendapatan, menggunakan komputer kantor yang belum

menggunakan password sehingga memungkinkan data pendapatan dapat dilihat oleh

siapa saja.

3.2.6. Pemecahan Masalah

Atas permasalahan - permasalahan yang dibahas pada sub-bab sebelumnya,

maka dari itu penulis mengusulkan beberapa alternatif dalam mengatasi masalah,

alternatif masalah yang penulis ajukan adalah :

1. Membuat sebuah rancangan sistem pendapatan masing-masing jasa pun dipisah

dengan begitu akan mempermudah bagian keuangan membuat rekapan jasa sesuai

dengan jenis jasa tersebut.

2. Dengan menggunakan sistem yang terkomputerisasi, sehingga penyimpanan data

penjualan dapat dilihat dari file penjualan sehingga akan lebih akurat dan efisien,

44

dapat dilihat dari file dan tidak perlu mencari arsip karena akan membutuhkan waktu

yang cukup lama dan dalam penghitungan pendapatan atas pendapatan sehingga

dapat mempercepat dalam pembuatan laporan. Baik laporan pendapatan keseluruhan

maupun pendapatan sesuai jenis jasa masing-masing.

3. Dengan adanya sistem dapat membuat data hanya dapat diakses oleh admin dan CEO

sehingga tidak dapat semua orang dapat mengakses.

3.3. Analisa Kebutuhan Software

3.3.1. Analisa Kebutuhan

A. Bagian Keuangan

A.1. Bagian Keuangan Berhak Login

A.2. Bagian Keuangan Berhak Mengelola Data Pelanggan

A.3. Bagian Keuangan Berhak Mengelola Data Iklan

A.4. Bagian Keuangan Berhak Mengelola Data Even Organizer

A.5. Bagian Keuangan Berhak Mengelola Data Konsultan

A.6. Bagian Keuangan Berhak Mengelola Transaksi

A.7. Bagian Keuangan Berhak Mengelola Laporan

B. CEO

B.1. CEO Berhak Login

B.2. CEO Berhak Mengakses Laporan

45

3.3.2. Use Case Diagram

A. Use Case Diagram Bagian Keuangan

Gambar III.5.

Use Case Diagram Log Bag Keuangan

Tabel III.1.

Deskripsi Use Case Diagram Bag Keuangan

Use Case Narrative Bendahara

Tujuan Mengelola data Pelanggan, Mengelola jenis Jasa ( Iklan,

Event Organizer, Consultan) Mengelola Transaksi

mengelola Laporan Junal dan Mengelola Laporan

Pendapatan

Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

utama yang di dalamnya ada pelanggan, jenis jasa,

transaksi dan Laporan

46

Skenario Utama

Aktor Bagian Keuangan

Kondisi Awal Aktor membuka aplikasi pendapatan.

Aksi Aktor Reaksi Sistem

1. Aktor Memilih Login Sistem akan menampilkan menu utama setelah aktor

memasukkan username, dan password.

2. Aktor Memilih Data

Pelanggan

Sistem akan menampilkan form data Pelanggan.

3. Aktor Memilih Data Jenis

Jasa

Sistem akan menampilkan form data iklan

4. Aktor Memilih Data Jenis

Jasa

Sistem akan menampilkan form data Even Organizer

5. Aktor Memilih Data Jenis

Jasa

Sistem akan menampilkan form data Konsultan

6. Aktor Memilih Data

Transaksi

Sistem akan menampilkan form data transaksi

7. Aktor Memilih Data

Laporan Jurnal

Sistem akan menampilkan form Laporan Jurnal

8. Aktor Memilih Data

Laporan Pendapatan

Sistem akan menampilkan form Laporan Pendapatan

9. Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan sesuai

permintaan.

47

B. Use Case Diagram CEO

Gambar III.6.

Use Case Diagram CEO

Tabel III.2.

Deskripsi Use Case Diagram Login CEO

Use Case Narrative Kepala Sekolah

Tujuan Mengelola Data Admin, Melihat Laporan Jurnal dan

Melihat Laporan Pendapatan

Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

utama yang di dalamnya laporan.

Skenario Utama

Aktor CEO

Kondisi Awal Aktor membuka aplikasi pendapatan.

Aksi Aktor Reaksi Sistem

1. Aktor Memilih Login Sistem akan menampilkan menu utama setelah aktor

memasukkan username, dan password.

2. Aktor Memilih Admin Sistem akan menampilkan Form Admin

3. Aktor Memilih Laporan

Pendapatan

Sistem akan menampilkan laporan Pendapatan

48

4. Aktor Memilih Laporan

Jurnal

Sistem akan menampilkan laporan jurnal.

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan

sesuai permintaan.

3.3.3. Activity Diagram

A. Activity Diagram Bagian Keuangan

A.1. Activity Diagram Bag keuangan Login

Gambar III.7.

Activity Diagram Login Bag Keuangan

49

A.2. Activity Diagram Mengelola Data Pelanggan

Gambar III.8.

Activity Diagram Mengelola Data Pelanggan

50

A.2. Activity Diagram Mengelola Jenis Jasa

Gambar III.9.

Activity Diagram Mengelola Jenis Jasa

51

A.6. Activity Diagram Mengelola Transaksi

Gambar III.10.

Activity Diagram Mengelola Transaksi

52

A.7. Activity Diagram Mengelola Laporan Pendapatan

Gambar III.11.

Activity Diagram Mengelola Laporan Pendapatan

53

A.8. Activity Diagram Mengelola Laporan Jurnal

Gambar III.12.

Activity Diagram Mengelola Laporan Jurnal

54

B. Activity Diagram CEO

B.1. Activity Diagram CEO Login

Gambar III.13.

Activity Diagram Login CEO

55

B.1. Activity Diagram CEO Mengelola Data Admin

Gambar III.14.

Activity Diagram Mengelola Data Admin

56

B.2. Activity Diagram CEO Mengakses Laporan Jurnal

Gambar III.15.

Activity Diagram Mengakses Laporan Jurnal

57

B.2. Activity Diagram CEO Mengakses Laporan Pendapatan

Gambar III.16.

Activity Diagram Mengakses Laporan Pendapatan

58

3.4. Desain

3.4.1. Entity Relationship Diagram (ERD)

Gambar III.17.

Entity Relationship Diagram

59

3.4.2. Logical Record Structure (LRS)

Gambar III.18.

Logical Record Structure

3.4.3. Spesifikasi File

Dalam program ini menggunakan database dengan nama fakta_jabar dan

didalamnya terdapat tabel-tabel sebagai entitas. Table-tabel tersebut sebagai berikut:

a. Spesifikasi File Tabel Admin

Nama Database : admin

Nama File : Data Admin

Tipe File : Master Data

60

Akses File : Random

Panjang Record : 55 Karakter

Field Key : kode_adm

Tabel III.3.

Spesifikasi File Tabel Admin

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Admin kode_adm Varchar 5 Primary Key

2. Nama Admin nm_adm Varchar 10

3. Nomor hp Admin nohp_adm Varchar 12

4. Jabatan Jabatan Varchar 8

5. Sandi Admin sandi_adm Varchar 10

2. Hak Akses hak_akses Varchar 10

b. Spesifikasi File Tabel Data Pelanggan

Nama Database : pelanggan

Nama File : Data Pelanggan

Tipe File : Master Data

Akses File : Random

Panjang Record : 44 Karakter

Field Key : kode_plg

Tabel III.4.

Spesifikasi File Tabel Data Pelanggan

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Pelanggan kode_plg Char 7 Primary Key

2. Nama Pelanggan nm_plg Char 15

3. Nam Perusahaan nm_perusahaan Varchar 20

61

4. Alamat Pelanggan alamat_plg Text

5. No Tlp notlp_plg Varchar 12

c. Spesifikasi File Tabel Jenis Jasa

Nama Database : jasa

Nama File : Jenis Jasa

Tipe File : Master Data

Akses File : Random

Panjang Record : 41 Karakter

Field Key : kode_jasa

Tabel III.5.

Spesifikasi File Tabel Jenis

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Jasa kode_jasa Char 6 Primary Key

2. Nama Jasa nm_jasa Varchar 35

3. Harga hrg_jasa Double

d. Spesifikasi File Tabel Transaksi

Nama Database : transaksi

Nama File : Transaksi

Tipe File : Master Data

Akses File : Random

Panjang Record :159 Karakter

Field Key : kode_trans

62

Tabel III.6.

Spesifikasi File Tabel Transaksi

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Transaksi kode_trans Char 12 Primary Key

2. Tanggal Transaksi tgl_trans Date

3. Kode Admin kode_adm Varchar 15 Foreign Key

4. Kode Pelanggan kode_plg Char 7 Foreign Key

5. Cara Bayar gran_total Double 30

6. Nomor Bukti no_bukti Varchar 20

7. Nama Bank nm_bank Varchar 20

8. Nomor Rekening no_rekening Varchar 20

9. Nama Pemilik

Rekening

Nm_pemilik_

rekening

Varchar 35

10. Total grand_total Double

e. Spesifikasi File Tabel Detail Transaksi

Nama Database : detail transaksi

Nama File : Detail Transaksi

Tipe File : Transaksi

Akses File : Random

Panjang Record : 18 Karakter

Field Key : -

Tabel III.7.

Spesifikasi File Tabel Detail Transaksi

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Transaksi kode_trans Char 12 Foreign Key

2. Kode Jasa kode_jasa Char 6 Foreign Key

3. Harga Jasa hrg_jasa Double

63

f. Spesifikasi File Tabel Jurnal

Nama Database : jurnal

Nama File : Data Jurnal

Tipe File : Laporan

Akses File : Random

Panjang Record : 18 Karakter

Field Key : kode_jur

Tabel III.8.

Spesifikasi File Tabel Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Jurnal kode_jurnal Char 8 Primary Key

2. Tanggal Jurnal tgl_jurnl Date

3. Nomor Referensi no_reff Char 5 Foreign Key

4. Keterangan keterangan Text

5. Kode Admin kode_adm Varchar 5 Foreign Key

g. Spesifikasi File Tabel Detail Jurnal

Nama Database : Det_jur

Nama File : Transaksi

Tipe File : Master Data

Akses File : Random

Panjang Record : 33 Karakter

Field Key : -

64

Tabel III.9.

Spesifikasi File Tabel Detail Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Jurnal kode_jurnal Char 8 Foreign Key

2. Kode Akun kode_akun Char 5

3. Nama Akun nama_akun Char 20

4. Debet Debet Double

5. Kredit Kredit Doubel

3.4.4. Sequance Diagram

Gambar III.19.

Sequance Diagram

65

3.4.5. Deployment Diagram

Gambar III.20.

Deployment Diagram

3.4.6. User Interface

A. Halaman Form Login

Gambar III.21.

User Interface form Login

66

B. Halaman Form Menu Utama

Gambar III.22.

User Interface Form Menu Utama

C. Halaman Form Transaksi

Gambar III.23.

User Interface Form Transaksi

67

D. Halaman Form Pelanggan

Gambar III.24.

User Interface Form Pelanggan

E. Halaman Form Data Jasa

Gambar III.25.

User Interface Form Data Jasa

68

F. Halaman Form Data Admin

Gambar III.26.

User Interface Form Data Admin

G. Halaman Form Laporan Jurnal Umum

Gambar III.27.

User Interface Form Lap Jurnal Umum

69

H. Halaman Form Laporan Pendapatan Jasa

Gambar III.28.

User Interface Form Lap Pendapatan Jasa

3.5. Implementasi

3.5.1. Code Generation

package forms;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Toolkit;

import java.util.List;

import java.util.ListIterator;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

import model.Pelanggan;

import faktajabar.FaktaJabar;

70

import java.awt.CardLayout;

import java.awt.event.KeyEvent;

import java.io.InputStream;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import java.text.SimpleDateFormat;

import java.util.HashMap;

import javax.swing.JDialog;

import javax.swing.JFrame;

import model.DetailJurnal;

import model.DetailTransaksi;

import model.Jasa;

import model.Jurnal;

import model.Transaksi;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.util.JRLoader;

import net.sf.jasperreports.view.JasperViewer;

public class FormTransaksi extends javax.swing.JFrame {

String KodeTransaksi = "";

String Status = "";

NumberFormat number = new DecimalFormat("#00");

71

Transaksi transaksi = new Transaksi();

DetailTransaksi detail = new DetailTransaksi();

Jasa jasa = new Jasa();

Pelanggan pelanggan = new Pelanggan();

Jurnal jurnal = new Jurnal();

DetailJurnal detail_jurnal = new DetailJurnal();

double total = 0;

DefaultTableModel modelTransaksi = null, modelDetail = null;

Dimension d;

int x, y;

public FormTransaksi() {

initComponents();

Toolkit tk = Toolkit.getDefaultToolkit();

d = tk.getScreenSize();

x = (int) ((d.getWidth() - getSize().width) / 2);

y = (int) ((d.getHeight() - getSize().height) / 2);

setLocation(x, y);

modelTransaksi = (DefaultTableModel) tblpelanggan.getModel();

modelDetail = (DefaultTableModel) tbldetail.getModel();

tblpelanggan.getTableHeader().setFont(new Font("BellGothic BT", 1, 16));

tblpelanggan.setRowHeight(30);

tbldetail.getTableHeader().setFont(new Font("BellGothic BT", 1, 16));

tbldetail.setRowHeight(30);

72

daftarTransaksi();

aktif();

tabs.setSelectedIndex(1);}

@SuppressWarnings("unchecked")

private void initComponents() {

tabs = new javax.swing.JTabbedPane();

jPanel1 = new javax.swing.JPanel();

tnm_pelanggan = new javax.swing.JTextField();

lbidpengguna = new javax.swing.JLabel();

lbnamapengguna = new javax.swing.JLabel();

tkode_plg = new javax.swing.JTextField();

tkode_trans = new javax.swing.JTextField();

lbnamapengguna1 = new javax.swing.JLabel();

ttgl_trans = new javax.swing.JTextField();

lbnamapengguna2 = new javax.swing.JLabel();

lbnamapengguna7 = new javax.swing.JLabel();

lbidpengguna1 = new javax.swing.JLabel();

tkode_jasa = new javax.swing.JTextField();

tnm_jasa = new javax.swing.JTextField();

lbidpengguna2 = new javax.swing.JLabel();

thrg_jasa = new javax.swing.JTextField();

lbidpengguna3 = new javax.swing.JLabel();

jScrollPane3 = new javax.swing.JScrollPane();

73

tbldetail = new javax.swing.JTable();

lbidpengguna4 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

lbidpengguna5 = new javax.swing.JLabel();

lbnamapengguna3 = new javax.swing.JLabel();

lbnamapengguna4 = new javax.swing.JLabel();

tno_bukti = new javax.swing.JTextField();

tnm_bank = new javax.swing.JTextField();

lbnamapengguna5 = new javax.swing.JLabel();

tno_rekening = new javax.swing.JTextField();

lbnamapengguna6 = new javax.swing.JLabel();

lbnamapengguna8 = new javax.swing.JLabel();

tnama_pemilik = new javax.swing.JTextField();

tcara_bayar = new javax.swing.JComboBox<>();

btcari_pelanggan = new javax.swing.JButton();

btcari_jasa = new javax.swing.JButton();

lbnamapengguna9 = new javax.swing.JLabel();

ttotal = new javax.swing.JTextField();

jPanel2 = new javax.swing.JPanel();

jScrollPane1 = new javax.swing.JScrollPane();

tblpelanggan = new javax.swing.JTable();

tcari = new javax.swing.JTextField();

btcari = new javax.swing.JButton();

74

btcetak = new javax.swing.JButton();

jPanel3 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

jToolBar1 = new javax.swing.JToolBar();

bttambah = new javax.swing.JButton();

btsimpan = new javax.swing.JButton();

btbatal = new javax.swing.JButton();

bttutup = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_

CLOSE);

tabs.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tnm_pelanggan.setEditable(false);

tnm_pelanggan.setBackground(new java.awt.Color(255, 255, 255));

tnm_pelanggan.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

tnm_pelanggan.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tnm_pelangganActionPerformed(evt); }});

lbidpengguna.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbidpengguna.setText("Kode Pelanggan");

lbnamapengguna.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

lbnamapengguna.setText("Nama Pelanggan");

75

tkode_plg.setEditable(false);

tkode_plg.setBackground(new java.awt.Color(255, 255, 255));

tkode_plg.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tkode_trans.setEditable(false);

tkode_trans.setBackground(new java.awt.Color(255, 255, 255));

tkode_trans.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tkode_trans.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tkode_transActionPerformed(evt);

} });

lbnamapengguna1.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna1.setText("Kode Transaksi");

ttgl_trans.setEditable(false);

ttgl_trans.setBackground(new java.awt.Color(255, 255, 255));

ttgl_trans.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

public void actionPerformed(java.awt.event.ActionEvent evt) {

ttgl_transActionPerformed(evt);

}});

lbnamapengguna2.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna2.setText("Tanggal Transaksi");

lbnamapengguna7.setFont

76

(new java.awt.Font("BellGothic BT", 1, 24)); // NOI18N

lbnamapengguna7.setText("Jasa ");

lbidpengguna1.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbidpengguna1.setText("Kode Jasa");

tkode_jasa.setEditable(false);

tkode_jasa.setBackground(new java.awt.Color(255, 255, 255));

tkode_jasa.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tnm_jasa.setEditable(false);

tnm_jasa.setBackground(new java.awt.Color(255, 255, 255));

tnm_jasa.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

lbidpengguna2.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

lbidpengguna2.setText("Nama Jasa");

thrg_jasa.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

thrg_jasa.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

thrg_jasaKeyPressed(evt);} });

lbidpengguna3.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbidpengguna3.setText("Harga Jasa");

jScrollPane3.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tbldetail.setFont(new java.awt.Font("BellGothic BT", 0, 15)); // NOI18N

tbldetail.setModel(new javax.swing.table.DefaultTableModel(

77

new Object [][] {

{null, null, null},{null, null, null},{null, null, null},{null, null, null} },

new String [] {

"Kode Jasa", "Nama Jasa", "Harga Jasa" } ) {

boolean[] canEdit = new boolean [] {

false, false, false };

public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex]; });

tbldetail.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

tbldetailKeyPressed(evt); }

public void keyReleased(java.awt.event.KeyEvent evt) {

tbldetailKeyReleased(evt);} });

jScrollPane3.setViewportView(tbldetail);

lbidpengguna4.setFont(new java.awt.Font("BellGothic BT", 1, 18)); // NOI18N

lbidpengguna4.setText("[ Delete ] Untuk Menghapus")

lbidpengguna5.setFont(new java.awt.Font("BellGothic BT", 1, 18)); // NOI18N

lbidpengguna5.setText("Tekan [ Enter ] kolom harga untuk menambahkan jasa");

lbnamapengguna3.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna3.setText("Cara Bayar")

lbnamapengguna4.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

78

lbnamapengguna4.setText("No Bukti");

tno_bukti.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tno_bukti.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tno_buktiActionPerformed(evt); } });

tnm_bank.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tnm_bank.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tnm_bankActionPerformed(evt);} });

lbnamapengguna5.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna5.setText("Nama Bank");

tno_rekening.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tno_rekening.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tno_rekeningActionPerformed(evt);} });

lbnamapengguna6.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna6.setText("No Rekening");

lbnamapengguna8.setFont(new java.awt.Font("BellGothic BT", 0, 16)); //

NOI18N

lbnamapengguna8.setText("Nama Pemilik");

tnama_pemilik.setFont(new java.awt.Font("BellGothic BT",0,16)); // NOI18N

79

tnama_pemilik.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tnama_pemilikActionPerformed(evt);}});

tcara_bayar.setFont(new java.awt.Font("BellGothic BT", 0, 15)); // NOI18N

tcara_bayar.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]

{ "Cash", "Transfer Bank" }));

tcara_bayar.addItemListener(new java.awt.event.ItemListener() {

tcara_bayarItemStateChanged(evt); } })

btcari_pelanggan.setFont(new java.awt.Font("BellGothic BT", 0, 15)); // NOI18N

btcari_pelanggan.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/cari.png"))); // NOI18N

btcari_pelanggan.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { } });

btcari_jasa.setFont(new java.awt.Font("BellGothic BT", 0, 15)); // NOI18N

btcari_jasa.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/cari.png"))); // NOI18N

btcari_jasa.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btcari_jasaActionPerformed(evt);}});

lbnamapengguna9.setFont(new java.awt.Font("BellGothic BT", 0, 18)); //

NOI18N

lbnamapengguna9.setText("Total");

ttotal.setEditable(false);

80

ttotal.setBackground(new java.awt.Color(255, 255, 255));

ttotal.setFont(new java.awt.Font("BellGothic BT", 1, 18)); // NOI18N

ttotal.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

ttotalActionPerformed(evt);}});

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(lbidpengguna)

.addComponent(lbnamapengguna)

.addComponent(lbnamapengguna2)

.addComponent(lbnamapengguna1)

.addComponent(lbidpengguna1)

81

.addComponent(lbidpengguna2)

.addComponent(lbidpengguna3))

.addGap(32, 32, 32)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(tkode_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,129,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(btcari_jasa))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(tkode_plg, javax.swing.GroupLayout.PREFERRED_SIZE,129,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(btcari_pelanggan))

.addComponent(ttgl_trans, javax.swing.GroupLayout.PREFERRED_SIZE,237,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tkode_trans, javax.swing.GroupLayout.PREFERRED_SIZE,186,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tnm_pelanggan,

javax.swing.GroupLayout.PREFERRED_SIZE,266,

javax.swing.GroupLayout.PREFERRED_SIZE)

82

.addComponent(tnm_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,301,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(thrg_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,213,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(lbnamapengguna7)

.addGap(18, 18, 18)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE,383,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(lbidpengguna5))

.addGap(28, 28, 28)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(lbnamapengguna3)

.addComponent(lbnamapengguna5)

.addComponent(lbnamapengguna6)

.addComponent(lbnamapengguna4)

83

.addComponent(lbnamapengguna8)

.addComponent(lbnamapengguna9))

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(tnm_bank, javax.swing.GroupLayout.PREFERRED_SIZE,186,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tcara_bayar, javax.swing.GroupLayout.PREFERRED_SIZE,116,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tno_bukti, javax.swing.GroupLayout.PREFERRED_SIZE,237,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tnama_pemilik,

javax.swing.GroupLayout.PREFERRED_SIZE,219,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(tno_rekening,

javax.swing.GroupLayout.PREFERRED_SIZE,186,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(ttotal, javax.swing.GroupLayout.PREFERRED_SIZE,219,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addComponent(lbidpengguna4))

.addGap(0, 0, Short.MAX_VALUE))

.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 537,

Short.MAX_VALUE))

84

.addContainerGap()));

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.BASELINE)

.addComponent(tkode_trans, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna1,

javax.swing.GroupLayout.PREFERRED_SIZE,30,javax.swing.GroupLayout.PRE

FERRED_SIZE).addComponent(lbnamapengguna3,

javax.swing.GroupLayout.PREFERRED_SIZE,30,javax.swing.GroupLayout.PRE

FERRED_SIZE)

.addComponent(tcara_bayar, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(tno_bukti, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna4,javax.swing.GroupLayout.PREFERRED_SIZE

,30, javax.swing.GroupLayout.PREFERRED_SIZE))

85

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(tnm_bank, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna5,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(tno_rekening, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna6,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(8, 8, 8)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(lbnamapengguna8,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

86

.addComponent(tnama_pemilik,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(8, 8, 8)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(lbnamapengguna9,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(ttotal, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE,10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna7,javax.swing.GroupLayout.PREFERRED_SIZE

,30, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

87

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(tkode_jasa,javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbidpengguna1,javax.swing.GroupLayout.PREFERRED_SIZE,30

, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(btcari_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(tnm_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

addComponent(lbidpengguna2,javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addComponent(thrg_jasa, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbidpengguna3,javax.swing.GroupLayout.PREFERRED_SIZE,30

, javax.swing.GroupLayout.PREFERRED_SIZE))

88

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(lbidpengguna5,javax.swing.GroupLayout.PREFERRED_SIZE,30

, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

addComponent(lbidpengguna4,javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE,125,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(29, 29, 29)).addGroup(jPanel1Layout.createSequentialGroup()

.addGap(47, 47, 47)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.BASELINE)

.addComponent(ttgl_trans, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna2,javax.swing.GroupLayout.PREFERRED_SIZE

,30, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.BASELINE)

89

.addComponent(tkode_plg, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbidpengguna, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(btcari_pelanggan,javax.swing.GroupLayout.PREFERRED_SIZE,

30, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.BASELINE)

.addComponent(tnm_pelanggan,javax.swing.GroupLayout.PREFERRED_SIZE,3

0, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(lbnamapengguna,

javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(288, 288, 288)));

tabs.addTab("Input", jPanel1);

tblpelanggan.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

tblpelanggan.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null, null, null, null},{null, null, null, null, null},

{null, null, null, null, null},{null, null, null, null, null} },

new String [] {

90

"Kode Transaksi", "Tanggal Transaksi", "Kode Pelanggan", "Nama Pelanggan",

"Total Transaksi" }

) {boolean[] canEdit = new boolean [] {true, false, false, false, false };

public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex]; }});

tblpelanggan.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

tblpelangganMouseClicked(evt);}});

jScrollPane1.setViewportView(tblpelanggan);

tcari.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

btcari.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

btcari.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/cari.png"))); // NOI18N

btcari.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btcariActionPerformed(evt);}});

javax.swing.ImageIcon(getClass().getResource("/images/cetak.png"))); // NOI18N

btcetak.setText("Cetak");

btcetak.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btcetakActionPerformed(evt);}});

javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

91

jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup().addGap(11, 11, 11)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1017,

Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel2Layout.createSequentialGroup()

.addContainerGap()

.addComponent(tcari, javax.swing.GroupLayout.PREFERRED_SIZE,301,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(btcari)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btcetak)))

.addContainerGap()) );

jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup

(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()

92

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignme

nt.CENTER)

.addComponent(btcari, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

addComponent(tcari, javax.swing.GroupLayout.PREFERRED_SIZE,30,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(btcetak))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,314,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap())

);

tabs.addTab("Data", jPanel2);

jPanel3.setBackground(new java.awt.Color(0, 126, 195));

jLabel1.setFont(new java.awt.Font("BellGothic BT", 1, 36)); // NOI18N

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

jLabel1.setText("Form Transaksi");

javax.swing.GroupLayout jPanel3Layout = new

javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

93

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel3Layout.createSequentialGroup().addContainerGap()

.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addContainerGap()));

jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel3Layout.createSequentialGroup().addContainerGap()

.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE,51,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

jToolBar1.setRollover(true);

bttambah.setFont(new java.awt.Font("BellGothic BT", 0, 16));

bttambah.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/tambah.png")));

bttambah.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

bttambahActionPerformed(evt);

} });

jToolBar1.add(bttambah);

94

btsimpan.setFont(new java.awt.Font("BellGothic BT", 0, 16));

btsimpan.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/simpan.png")));

btsimpan.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btsimpanActionPerformed(evt);

}});

jToolBar1.add(btsimpan);

btbatal.setFont(new java.awt.Font("Andalus", 0, 16)); // NOI18N

btbatal.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/batal.png"))); // NOI18N

btbatal.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btbatalActionPerformed(evt);

}});

jToolBar1.add(btbatal);

bttutup.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N

javax.swing.ImageIcon(getClass().getResource("/images/tutup.png")));

bttutup.setText("Tutup");

bttutup.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

bttutupActionPerformed(evt);

} });

95

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup().addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING).addComponent(tabs)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addGap(0, 0, Short.MAX_VALUE) .addComponent(bttutup)))

.addContainerGap()) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

96

.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE,49,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE,471,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

addComponent(bttutup, javax.swing.GroupLayout.PREFERRED_SIZE,43,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(16, Short.MAX_VALUE)) );

pack(); }

private void aktif() {

bttambah.setEnabled("".equals(this.Status));

btbatal.setEnabled(!"".equals(this.Status));

btsimpan.setEnabled(!"".equals(this.Status));

btcetak.setEnabled("".equals(this.Status) &&

!"".equalsIgnoreCase(this.KodeTransaksi));

tno_bukti.setEditable(!tcara_bayar.getSelectedItem().toString().equals("Cash"));

tno_rekening.setEditable(!tcara_bayar.getSelectedItem().toString().equals("Cash")

);

tnm_bank.setEditable(!tcara_bayar.getSelectedItem().toString().equals("Cash"));

tnama_pemilik.setEditable(!tcara_bayar.getSelectedItem().toString().equals("Cash

"));

tabs.setEnabledAt(0, !"".equals(this.Status));

97

tabs.setEnabledAt(1, "".equals(this.Status));}

private void bersihForm() {

tkode_plg.setText("");

tnm_pelanggan.setText("");

tkode_trans.setText("");

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

ttgl_trans.setText(sdf.format(new java.util.Date()));

tno_bukti.setText("");

tnm_bank.setText("");

tno_rekening.setText("");

tnama_pemilik.setText("");

ttotal.setText("");

tkode_jasa.setText("");

tnm_jasa.setText("");

thrg_jasa.setText(""); }

private void bersihJasa() {

tkode_jasa.setText("");

tnm_jasa.setText("");

thrg_jasa.setText("");}

private void cariPelanggan() {

pelanggan = pelanggan.cariKodePelanggan(tkode_plg.getText());

if (pelanggan.getNama_plg() != null) {

tkode_plg.setText(pelanggan.getKode_plg());

98

tnm_pelanggan.setText(pelanggan.getNama_plg());

} else {

tkode_plg.setText("");

tnm_pelanggan.setText("");}}

private void cariJasa() {

jasa = jasa.cariKodeJasa(tkode_jasa.getText());

if (jasa.getNm_jasa() != null) {

tnm_jasa.setText(jasa.getNm_jasa());

thrg_jasa.setText(number.format(jasa.getHrg_jasa()));

thrg_jasa.requestFocus();

} else {

tkode_jasa.setText("");

tnm_jasa.setText("");

thrg_jasa.setText("");} }

private void setData() {

transaksi.setKode_trans(tkode_trans.getText());

transaksi.setKode_plg(tkode_plg.getText());

transaksi.setTgl_trans(new java.sql.Date(new java.util.Date().getTime()));

transaksi.setKode_adm(FaktaJabar.kode_admin);

transaksi.setCara_bayar(tcara_bayar.getSelectedItem().toString());

transaksi.setNo_bukti(tno_bukti.getText());

transaksi.setNm_bank(tnm_bank.getText());

transaksi.setNo_rekening(tno_rekening.getText());

99

transaksi.setNm_pemilik(tnama_pemilik.getText());

transaksi.setGrand_total(total);}

private void daftarTransaksi() {

List<Transaksi> lp = transaksi.daftarTransaksi();

ListIterator<Transaksi> lip = lp.listIterator();

modelTransaksi.setRowCount(0);

tblpelanggan.repaint();

while (lip.hasNext()) {

transaksi = lip.next();

pelanggan = pelanggan.cariKodePelanggan(transaksi.getKode_plg());

Object[] data = {

transaksi.getKode_trans(),

transaksi.getTgl_trans(),

transaksi.getKode_plg(),

pelanggan.getNama_plg(),

transaksi.getGrand_total()};

modelTransaksi.addRow(data);} }

private void daftarTransaksi(String Nama) {

List<Transaksi> lp = transaksi.cariTransaksiByNama(Nama);

ListIterator<Transaksi> lip = lp.listIterator();

modelTransaksi.setRowCount(0);

tblpelanggan.repaint();

while (lip.hasNext()) {

100

transaksi = lip.next();

pelanggan = pelanggan.cariKodePelanggan(transaksi.getKode_plg());

Object[] data = {

transaksi.getKode_trans(),

transaksi.getTgl_trans(),

transaksi.getKode_plg(),

pelanggan.getNama_plg(),

transaksi.getGrand_total()};

modelTransaksi.addRow(data); }}

private void hitungTotal() {

total = 0;

for (int i = 0; i <= modelDetail.getRowCount() - 1; i++) {

total += (double) modelDetail.getValueAt(i, 2);} }

private void tambahItemJasa() {

for (int i = 0; i <= modelDetail.getRowCount() - 1; i++) {

String kode = modelDetail.getValueAt(i, 0).toString();

if (kode.equalsIgnoreCase(tkode_jasa.getText())) {

modelDetail.removeRow(i);

break; } }

Object[] data = {

tkode_jasa.getText(),

tnm_jasa.getText(),

Double.parseDouble(thrg_jasa.getText()) };

101

modelDetail.addRow(data);

tbldetail.revalidate(); }

private void tnm_pelangganActionPerformed(java.awt.event.ActionEvent evt) {}

private void bttambahActionPerformed(java.awt.event.ActionEvent evt) {

this.Status = "Tambah";

this.KodeTransaksi = "";

bersihForm();

modelDetail.setRowCount(0);

tkode_trans.setText(transaksi.kodeTransaksiAuto());

aktif();

tabs.setSelectedIndex(0);}

private void btbatalActionPerformed(java.awt.event.ActionEvent evt) {

this.Status = "";

this.KodeTransaksi = "";

bersihForm();

daftarTransaksi();

aktif();

tabs.setSelectedIndex(1);}

private void bttutupActionPerformed(java.awt.event.ActionEvent evt) {

dispose();}

private void tblpelangganMouseClicked(java.awt.event.MouseEvent evt) {

int row = tblpelanggan.getSelectedRow();

this.KodeTransaksi = (String) modelTransaksi.getValueAt(row, 0);

102

aktif();}

private void btsimpanActionPerformed(java.awt.event.ActionEvent evt) {

if ("".equals(tkode_plg.getText())

|| "".equals(tnm_pelanggan.getText())

|| "".equals(tkode_trans.getText())

|| "".equals(tno_bukti.getText())

|| "".equals(tno_rekening.getText())

|| "".equals(tnm_bank.getText())

|| "".equals(tnama_pemilik.getText())

|| "".equals(ttgl_trans.getText())) {

JOptionPane.showMessageDialog(rootPane, "Mohon isi data dulu", "info",

JOptionPane.ERROR_MESSAGE);

return;}

if (modelDetail.getRowCount() == 0) {

JOptionPane.showMessageDialog(rootPane, "Maaf, Anda belum memilih

1 jasa pun", "info", JOptionPane.ERROR_MESSAGE);

return;}

setData();

if ("Tambah".equals(Status)) {

if (transaksi.tambahTransaksi() > 0) {

for (int i = 0; i <= modelDetail.getRowCount() - 1; i++) {

String kode = modelDetail.getValueAt(i, 0).toString();

double harga = (double) modelDetail.getValueAt(i, 2);

103

detail.setKode_trans(tkode_trans.getText());

detail.setKode_jasa(kode);

detail.setHrg_jasa(harga);

detail.tambahDetailTransaksi();}

//Jurnal

String KodeJurnal = jurnal.kodeJurnalAuto();

jurnal.setKode_jurnal(KodeJurnal);

jurnal.setTgl_jurnal(new java.sql.Date(new java.util.Date().getTime()));

jurnal.setNo_reff(tkode_trans.getText());

jurnal.setKeterangan("Pembayaran atas transaksi kode : " +

tkode_trans.getText());

jurnal.setKode_adm(FaktaJabar.kode_admin);

jurnal.tambahJurnal();

detail_jurnal.setKode_jurnal(KodeJurnal);

if ("Cash".equalsIgnoreCase(tcara_bayar.getSelectedItem().toString())) {

detail_jurnal.setKode_akun("10001");

detail_jurnal.setNama_akun("Kas");

} else {

detail_jurnal.setKode_akun("10002");

detail_jurnal.setNama_akun("Kas Di Bank");}

detail_jurnal.setDebet(total);

detail_jurnal.setKredit(0.0);

detail_jurnal.tambahDetailJurnal();

104

detail_jurnal.setKode_akun("40001");

detail_jurnal.setNama_akun("Pendapatan Jasa");

detail_jurnal.setDebet(0.0);

detail_jurnal.setKredit(total);

detail_jurnal.tambahDetailJurnal();

//JOptionPane.showMessageDialog(rootPane, "Data berhasil disimpan", "info",

JOptionPane.INFORMATION_MESSAGE);

} else {

JOptionPane.showMessageDialog(rootPane, "Data gagal disimpan\n" +

pelanggan.getPesanError(), "info", JOptionPane.ERROR_MESSAGE);} }

this.KodeTransaksi = "";

this.Status = "";

daftarTransaksi();

bersihForm();

aktif();

tabs.setSelectedIndex(1);}

private void btcariActionPerformed(java.awt.event.ActionEvent evt) {

this.KodeTransaksi = "";

if ("".equals(tcari.getText())) {

daftarTransaksi();

} else {

daftarTransaksi(tcari.getText()); }

aktif();}

105

private void tkode_transActionPerformed(java.awt.event.ActionEvent evt) {}

private void ttgl_transActionPerformed(java.awt.event.ActionEvent evt) {}

private void tbldetailKeyReleased(java.awt.event.KeyEvent evt) {}

private void tbldetailKeyPressed(java.awt.event.KeyEvent evt) {

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

int row = tbldetail.getSelectedRow();

modelDetail.removeRow(row);

hitungTotal();

ttotal.setText(number.format(total));} }

private void thrg_jasaKeyPressed(java.awt.event.KeyEvent evt) {

if (tnm_jasa.getText().equals("")) {

JOptionPane.showMessageDialog(rootPane, "Pilih jasa dahulu!", "Error",

JOptionPane.ERROR_MESSAGE);

return;}

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

if (!FaktaJabar.validasi(thrg_jasa.getText(), "^[0-9]{2,10}$")) {

JOptionPane.showMessageDialog(rootPane, "Harga jasa hanya boleh berupa

angka!", "Error", JOptionPane.ERROR_MESSAGE);

return; }

tambahItemJasa();

bersihJasa();

hitungTotal();

ttotal.setText(number.format(total));

106

tkode_jasa.requestFocus();} }

private void tno_buktiActionPerformed(java.awt.event.ActionEvent evt) {}

private void tnm_bankActionPerformed(java.awt.event.ActionEvent evt) { }

private void tno_rekeningActionPerformed(java.awt.event.ActionEvent evt) {}

privatevoid btcari_pelangganActionPerformed(java.awt.event.ActionEvent evt) {

tkode_plg.setText(new FormCariPelanggan(this, true).cariPelanggan());

cariPelanggan();}

private void btcari_jasaActionPerformed(java.awt.event.ActionEvent evt) {

tkode_jasa.setText(new FormCariJasa(this, true).cariJasa());

cariJasa();}

private void tcara_bayarItemStateChanged(java.awt.event.ItemEvent evt) {

try {

if ("Cash".equalsIgnoreCase(tcara_bayar.getSelectedItem().toString())) {

tno_bukti.setText("-");

tno_rekening.setText("-");

tnm_bank.setText("-");

tnama_pemilik.setText("-");

} else {

tno_bukti.setText("");

tno_rekening.setText("");

tnm_bank.setText("");

tnama_pemilik.setText("");

}aktif();

107

} catch (Exception ex) {} }

private void tnama_pemilikActionPerformed(java.awt.event.ActionEvent evt) {}

private void ttotalActionPerformed(java.awt.event.ActionEvent evt) {}

private void btcetakActionPerformed(java.awt.event.ActionEvent evt) {

try {

transaksi = transaksi.cariKodeTransaksi(this.KodeTransaksi);

String terbilang = FaktaJabar.konversiAngkaKeTeks(transaksi.getGrand_total()) +

" Rupiah";

InputStream file =

ClassLoader.getSystemResourceAsStream("laporan/Kwitansi.jasper");

HashMap parameter = new HashMap();

parameter.put("KodeTransaksi", this.KodeTransaksi);

parameter.put("Terbilang", terbilang);

JasperReport jr = (JasperReport) JRLoader.loadObject(file);

JasperPrint jrp = JasperFillManager.fillReport(jr, parameter, new

Jurnal().getkoneksi());

JasperViewer viewer = new JasperViewer(jrp);

JFrame view = new JFrame("Kwitansi");

view.setContentPane(viewer.getContentPane());

view.setLayout(new CardLayout());

view.setSize(this.getSize());

view.setLocation(x, y);

view.setVisible(true);

108

this.KodeTransaksi = "";

} catch (Exception ex) {

//JOptionPane.showMessageDialog(rootPane,

ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);}}

public static void main(String args[]) {

try {for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Metal".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break; }}

} catch (ClassNotFoundException | InstantiationException | }

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new FormTransaksi().setVisible(true); }});}

private javax.swing.JButton btbatal;

private javax.swing.JButton btcari;

private javax.swing.JButton btcari_jasa;

private javax.swing.JButton btcari_pelanggan;

private javax.swing.JButton btcetak;

private javax.swing.JButton btsimpan;

private javax.swing.JButton bttambah;

private javax.swing.JButton bttutup;

private javax.swing.JLabel jLabel1;

private javax.swing.JPanel jPanel1;

109

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel3;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane3;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JToolBar jToolBar1;

private javax.swing.JLabel lbidpengguna;

private javax.swing.JLabel lbidpengguna1;

private javax.swing.JLabel lbidpengguna2;

private javax.swing.JLabel lbidpengguna3;

private javax.swing.JLabel lbidpengguna4;

private javax.swing.JLabel lbidpengguna5;

private javax.swing.JLabel lbnamapengguna;

private javax.swing.JLabel lbnamapengguna1;

private javax.swing.JLabel lbnamapengguna2;

private javax.swing.JLabel lbnamapengguna3;

private javax.swing.JLabel lbnamapengguna4;

private javax.swing.JLabel lbnamapengguna5;

private javax.swing.JLabel lbnamapengguna6;

private javax.swing.JLabel lbnamapengguna7;

private javax.swing.JLabel lbnamapengguna8;

private javax.swing.JLabel lbnamapengguna9;

private javax.swing.JTabbedPane tabs;

110

private javax.swing.JTable tbldetail;

private javax.swing.JTable tblpelanggan;

private javax.swing.JComboBox<String> tcara_bayar;

private javax.swing.JTextField tcari;

private javax.swing.JTextField thrg_jasa;

private javax.swing.JTextField tkode_jasa;

private javax.swing.JTextField tkode_plg;

private javax.swing.JTextField tkode_trans;

private javax.swing.JTextField tnama_pemilik;

private javax.swing.JTextField tnm_bank;

private javax.swing.JTextField tnm_jasa;

private javax.swing.JTextField tnm_pelanggan;

private javax.swing.JTextField tno_bukti;

private javax.swing.JTextField tno_rekening;

private javax.swing.JTextField ttgl_trans;

private javax.swing.JTextField ttotal;

}

111

3.5.2. Blackbox Testing

A. Form Login

Tabel III.10.

Blackbox Testing Form Login

Kelas Uji Skenario Uji Hasil yang diharapkan Kesimpulan

Login Benar Masuk username dan

password benar.

Masuk kedalam sistem,

login berhasil. Sesuai

Login Salah Masuk username dan

password salah.

Tidak masuk kedalam

sistem, login salah. Sesuai

Logout Memilih logout. Keluar dari sistem. Sesuai

Data

Pelanggan

Memilih menu data

pelanggan, kemudian

dapat menambahkan,

menyimpan, mencari,

mengedit menghapus

dan tutup

Menampilkan Form data

pelanggan kemudian

dapat menambahkan,

menyimpan, mencari,

mengedit menghapus dan

tutup

Sesuai

Data Jenis Memilih menu data

jenis, kemudian dapat

menambahkan,

menyimpan, mencari,

mengedit menghapus

dan tutup

Menampilkan Form data jenis kemudian dapat

menambahkan, menyimpan, mencari,

mengedit menghapus dan tutup

Sesuai

Data

Transaksi

Memilih menu data transaksi, kemudian dapat menambah,

menyimpan, mencetak dan tutup

Menampilkan form menu

data transaksi, kemudian

dapat menambah,

menyimpan mencetak

dan tutup

Sesuai

Data

Admin

Memilih menu data jenis, kemudian dapat

menambahkan, menyimpan, mencari, mengedit menghapus

dan tutup

Menampilkan Form data

jenis kemudian dapat

menambahkan,

menyimpan, mencari,

mengedit menghapus

dan tutup

Sesuai

Cetak Laporan Jurnal

Memilih menu laporan jurnal, kemudian pilih tanggal periode

jurnal, melihat dan mencetak laporan

Menampilkan menu

laporan jurnal, kemudian

pilih tanggal periode

jurnal, melihat dan

mencetak laporan

Sesuai

112

Cetak

Laporan

Pendapatan

Memilih menu laporan pendapatan,

kemudian pilih tanggal periode

jurnal, melihat dan mencetak laporan

Menampilkan menu laporan pendapatan,

kemudian pilih tanggal periode jurnal, melihat dan mencetak laporan

Sesuai

3.5.3. Spesifikasi Hardware dan Software

Tabel III.11.

Spesifikasi Hardware dan Software

Kebutuhan Keterangan

Sistem Windows 7 Ultimate 64-bit

Processor Intel (R) Cor (TM) i3 CPU M350 @ 2.27 GHz

RAM 3072 MB

Harddisk 2141 MB

Monitor 12” Generic PnP Monitor

Keyboard Asus

Printer HP 2130

Mouse Asus

Software

Kebutuhan menjalankan aplikasi secara lokal:

Bahasa Script Programming : Java 8.2

Web Server : Apache 3.2

DBMS : MySQL