Bab Iv
Bab Iv
A. Sistem Aplikasi Point of Sale (POS) Program Point of Sale merupakan program yang khusus dirancang untuk
mempermudah transaksi penjualan (biasanya secara retail) yang dibutuhkan oleh pengusaha pertokoan yang menggunakan sistem kasir tercatat. Pada umumnya program Point of Sale (POS) ini terdiri dari 2 modul, yaitu modul administrasi daan modul kasir. Modul kasir digunakan hanya untuk transaksi penjualan, sedangkan modul administrasi digunakan untuk memanajemen data yang ada pada program tersebut dan dapat melakukan transaksi serta dapat membuat laporan dari transaksi yang dilakukan.
B. Tahap-tahap Pembuatan Sistem Aplikasi Point of Sale (POS) Pembuatan sistem aplikasi Point of Sale (POS) ini dikerjakan selama 1 (satu) bulan di PT Zahir Intenasional dan perancangan ini berdasarkan model Waterfall. Adapun tahap-tahap dalam perancangan sistem aplikasi Point of Sale (POS) ini antara lain sebagai berikut :
38
B.1. Penentuan Rekayasa Sistem a. Penentuan Requirement Requirement dari program ini adalah sebagai berikut : Tabel 2. Requirement program
NO
1
Kebutuhan
a. Software berbasis website yang mendukung aplikasi Point of Sale (POS) untuk transaksi penjualan secara online dan offline. b. Dapat diakses dengan local server, clientserver, maupun internet. c. Bersifat dinamis. Mendukung javascript. d. Database yang digunakan adalah MySql. e. Mendukung berbagai versi browser. Tetapi lebih fokus ke Mozilla Firefox. f. Mendukung multi currency dan pengkonversiaanya ke dalam rupiah. g. Mudah digunakan. h. Mendukung fasilitas predicted input, hanya dengan mengetik huruf-huruf awal, maka akan langsung tampil data suatu barang secara lengkap. i. Memiliki fasilitas update maupun upgrade ke versi selanjutnya. j. Struk pembelian dapat langsung di print. VERSI 1 : Januari 2012 a. Hanya mendukung 1 currency value (rupiah). b. Menu yang disediakan : menu login, menu account, menu transaksi, menu report, dan menu logout. c. Mendukung fasilitas predicted, tetapi hanya untuk nama barang. d. Terdapat form utama untuk menghubungkan ke form-form lainnya. e. Hanya dapat di akses melalui local server.
Keterangan
b. Penentuan Roadmap Roadmap pada program ini adalah sebagai berikut : 1. Login form : user name dan password 2. User management : id user, nama user, password, nama lengkap user. 39
3. Master data : stock produk, data transaksi, report. 4. Penjualan : id barang, nama barang, kategori, satuan, dan jumlah stok barang . 5. Stock kontrol. 6. Report : laporan penjualan, stock barang dan laporan pemasukan barang. 7. Tampilan form utama untuk menghubungkan ke form-form lainnya. 8. Hanya mendukung 1 currency value (rupiah). 9. Mendukung fasilitas predicted, tetapi hanya untuk nama barang. 10. Struk pembelian dapat langsung di print. Tabel 3. Roadmap Pembuatan Program NO DESKRIPSI I 1 2 3 4 5 6 7 8 Perancangan Program Membuat menu Login Membuat menu Account Membuat menu Barang Membuat menu Transaksi Membuat menu Report Membuat menu Logout Testing II MINGGU III IV V
40
c. Perancangan Diagram Alir (Flowchart) Perancangan diagram alir (flowchart) ini dimaksudkan untuk memudahkan dalam implementasi coding). Diagram alir (flowchart) yang dibuat mencakup keseluruhan sistem dari program. Berikut ini diagram alir (flowchart) dari program yang dibuat : Flowchart untuk login
START
LOGIN SUKSES?
TIDAK
Y A
TAMPILKAN MENU
MENU
END
Gambar 4. Flowchart untuk login Penjelasan flowchart : Untuk masuk ke program ini, sebelumnya user harus login terlebih dahulu dengan mengisikan nama user dan password. Nama user dan password yang diisikan oleh
41
user akan dicocokkan dengan database, apabila nama user dan password yang dimasukkan user terdapat pada database maka program akan masuk ke menu utama atau menu Home. Menu yang dapat digunakan akan berbeda beda berdasarkan akses user. Tetapi apabila nama user dan password yang dimasukkan oleh user tidak terdapat pada database, maka tidak akan dapat masuk ke program dan program akan meminta user mengisikan kembali nama user dan password.
SETTING
UPDATE KE DATABASE
MAIN MENU
Gambar 5. Flowchart untuk konfigurasi Penjelasan flowchart : Konfigurasi ini digunakan untuk mengatur profil toko/perusahaan. Masukan dari konfigurasi ini akan disimpan ke dalam database.
42
MENU
INPUT: MENU
MESSAGE ERROR
YA
TRANSAKSI PENJUALAN
DATA BARANG
USER=ADMIN
AKUN
SETTING
REPORT
TRANSA KSI
REPORT
LOGOUT
LOGIN FORM
Gambar 6. Flowchart untuk menu Penjelasan flowchart : Setelah user berhasil login, maka akan tampil menu utama atau menu Home. Menu yang dapat digunakan akan berbeda beda berdasarkan akses user. Apabila user sebagai kasir, maka user hanya dapat menggunakan menu Home, menu Transaksi, dan menu Logout. Sedangkan apabila user sebagai admin, maka user
43
dapat menggunakan semua menu yang ada di program ini. Admin juaga dapat memanajemen data data yang ada di program ini.
USER MAN
DAFTAR USER
Y TAMBAH USER
EDIT USER
Penjelasan flowchart : Program ini dapat melakukan manajemen user, sehingga data data user dapat diubah, dihapus, dan ditambah. Semua perubahan pada menu Account ini akan diupdate ke database.
44
LIST BARANG
MAIN MENU
Penjelasan flowchart : Program ini juga dapat melakukan manajemen data data barang yang terdapat pada toko tersebut. Data data barang ini dapat dihapus, diedit, dan ditambah. Semua perubahan pada data barang ini akan di-update ke database.
45
INPUT BARANG
BARANG ADA? Y
JUMLAHSTOK
Y TAMBAH BARANG?
INPUT: PEMBAYARAN
ERROR
FAKTUR PENJUALAN
MAIN MENU
Gambar 9. Flowchart untuk menu Transaksi Penjelasan flowchart : Untuk melakukan transaksi penjualan, terlebih dahulu cari barang yang akan dijual dengan memasukkan kode barang tersebut. Apabila user tidak dapat
46
mengingat kode kode barang, maka nama barang tersebut dapat dicari dengan memasukkan nama barang pada kolom pencarian barang. Setelah barang didapat, langkah selanjutnya adalah mengisikan jumlah barang yang akan dijual. Tetapi apabila jumlah stok yang ingin dijual melebihi stok barang maka barang tersebut tidak akan muncul di form transaksi penjualan. Barang yang sudah dipilih dapat dihapus dan dapat ditambah. Setelah selesai memasukkan barang yang akan dijual, maka program ini akan menghitung total harga yang harus dibayar. Uang yang dibayar tidak dapat kurang dari total harga yang harus dibayar. Setelah selesai melakukan transaksi, maka akan secara otomatis mencetak struk dan data transaksi ini akan dimasukkan ke dalam database.
PILIHAN
Y STOK BARANG
MAIN MENU
Penjelasan flowchart : Semua transaksi yang telah dilakukan dapat dilihat di menu Report. Pada menu ini terdapat 3 (tiga) buah report, yaitu report penjualan, report pemasukan, dan report stok barang. Untuk report penjualan dan report pemasukkan barang dapat dilihat berdasarkan tanggal transaksi.
d. Perancangan E R Diagram (Entity Relationship Diagram) E R Diagram digunakan untuk mengembangkan inisial dari desain basis data. E R Diagram menyediakan konsep yang bermanfaat yang dapat mengubah deskripsi informal dari apa yang diinginkan oleh pembuat menjadi hal yang lebih detail, presisi, dan deskripsi detail tersebut dapat diimplementasikan ke dalam DBMS. Berikut ini E R Diagram yang telah dibuat:
satuan id nama_toko toko telp fax website Memperkerjakan id_barang jumlah_barang id_barang id_user nama_lengkap pemasukan_barang satuan nama_user login akses tgl_pemasukan tgl_transaksi password nama_kasir jumlah_transaksi jumlah_pembayaran temp_barang_master nama_barang no_struk PPN harga Rincian no_struk jumlah e-mail nama_barang Barang Masuk penjualan_detail total id Memiliki alamat_toko tgl_pemasukan harga id_barang barang stok Dijual kategori nama_barang
total_transaksi
48
Keterangan E R Diagram : Relasi antara himpunan entitas toko dengan himpunan entitas barang, dimana himpunan relasinya diberi nama Memiliki. Pada relasi ini, setiap toko dapat memiliki lebih dari satu barang dan setiap barang dapat dimiliki oleh banyak toko. Relasi antara himpunan entitas toko dengan himpunan entitas login, dimana himpunan relasinya diberi nama Memperkerjakan. Pada relasi ini, setiap toko dapat memiliki lebih dari satu login, sedangkan setiap login hanya bekerja di satu toko. Relasi antara himpunan entitas barang dengan himpunan entitas penjualan_detail. Dimana himpunan relasinya diberi nama Dijual. Pada relasi ini, setiap barang dapat dijual lebih dari satu ke penjualan_detail dan dan setiap penjualan_detail dapat lebih dari satu menjual barang. Relasi antara himpunan entitas barang dengan himpunan entitas
pemasukan_barang. Dimana himpunan relasinya diberi nama Barang Masuk. Pada relasi ini, setiap barang dapat masuk lebih dari satu pemasukan_barang dan setiap pemasukan_barang hanya dapat masuk satu barang. Relasi antara himpunan entitas penjualan_detail dengan himpunan entitas temp_barang_master. Dimana himpunan relasinya diberi nama Rincian. Pada relasi ini, setiap penjualan_detail hanya satu rincian di temp_barang_master dan setiap temp_barang_master hanya merinci satu penjualan_detail.
B.2. Analisa Kebutuhan Perangkat Lunak Tahap berikutnya adalah analisis, yang berkaitan dengan proses dan data yang diperlukan oleh sistem serta keterkaitannya.
49
Tujuan dilakukannya tahapan ini adalah : 1. Memahami sistem yang ada saat ini. 2. Mendefinisikan permasalahan sistem. 3. Menentukan kebutuhan sistem secara garis besar sebagai persiapan ke tahapan perancangan.
B.3. Perancangan Sistem Setelah selesai merumuskan sistem yang akan dibuat, tahap selanjutnya adalah perancangan sistem. Tahapan perancangan ini dilakukan untuk memberikan gambaran yang jelas dan lengkap tentang program yang akan dikembangkan. Perancangan ini mencakup aspek aspek : struktur data, arsitektur perangkat lunak, representasi antar muka, dan rincian prosedural. Namun, pada perancangan sistem yang dilakukan saat Kerja Praktek hanya mencakup aspek antar muka pengguna (user interface). Perancangan user interface yang dibuat adalah sebagai berikut : Perancangan User interface untuk menu Home
HEADER
INDEX
BERISKAN UCAPAN SELAMAT DATANG BERDASARKAN AKSES DAN MANAJEMEN IDENTITAS TOKO
50
LOGOUT
51
KODE BARANG
JUMLAH
OKE
UANG DIBAYAR
UANG KEMBALI
SIMPAN
52
HOME ACCOUNT
ID USER
......................................................................................... ............. ......................................................................................... ............. ......................................................................................... ............. ......................................................................................... ............. ......................................................................................... .............
NAMA USER
PASSWORD
BARANG
AKSES
NAMA LENGKAP
SIMPAN
BATAL
Gambar 16. User interface untuk Tambah User Perancangan User interface untuk Edit User
HEADER
HOME ACCOUNT
PASSWORD ......................................................................................... ............. ......................................................................................... ............. ......................................................................................... ............. ID USER ......................................................................................... ............. ......................................................................................... .............
NAMA USER
BARANG
AKSES
NAMA LENGKAP
UPDATE
BATAL
53
CARI BARANG
HOME
ID TGL NAMA KATEGORI SATUA N STOK HARG A AKSI
EDIT/ HAPUS EDIT/ HAPUS EDIT/
ACCOUNT BARANG
KEMBALI KE BARANG KEMBALI KE REPORT
HAPUS
ID BARANG
NAMA BARANG
KATEGORI
SATUAN
TRANSAKSI
STOK BARANG
REPORT
HARGA
LOGOUT
SIMPAN BATAL
54
CARI BARANG
NAMA BARANG
OK
KEMBALI
OK
BATAL
KEMBALI
55
OK
BATAL
KEMBALI
ID BARANG
NAMA BARANG
KATEGORI
SATUAN
TRANSAKSI
STOK BARANG
REPORT
HARGA
LOGOUT
KEMBALI KE MENU SIMPAN BATAL
56
NO
TANGGAL
NO FAKTUR
TOTAL TRANSAKSI
DETAIL
NO
TANGGAL
ID BARANG
NAMA BARANG
JUMLAH BARANG
57
CARI BARANG
HOME
ID TGL NAMA KATEGORI SATUA N STOK HARG A AKSI
EDIT/ HAPUS EDIT/ HAPUS EDIT/
ACCOUNT BARANG
KEMBALI KE BARANG KEMBALI KE REPORT
HAPUS
B.4 Pembuatan Sistem Aplikasi Point of Sale (POS) Pembuatan sistem aplikasi Point of Sale (POS) ini dikerjakan selama 29 (dua puluh sembilan) hari di PT Zahir Internasional. Sistem aplikasi Point of Sale (POS) ini dibuat dengan menggunakan bahasa pemrograman PHP dan menggunakan basis data MySQL. Untuk mengaktifkan basis data MySQL, sebelumnya mengaktifkan terlebih dahulu software XAMPP. Untuk membuat program Point of Sale yang menggunakan bahasa pemrograman PHP, diperlukan software bantuan seperti Adobe Dreamweaver. Namun, software XAMPP dan Adobe Dreamweaver saja tiak cukup. Dalam pembuatan program ini juga dibutuhkan software-software seperti Adobe Photoshop dan Axialis IconWorkshop 6.62. Pada pembuatan program Point of Sale (POS) ini, Adobe Photoshop digunakan untuk membuat gambar-gambar atau ikon-ikon yang terdapat pada program ini.
58
Sedangkan Axialis IconWorkshop 6.62 digunakan untuk membuat ikon pada favicon yang terdapat pada program. Program ini dibuat berdasarkan requirement dan roadmap yang sebelumnya telah dibuat. Karena program yang dibuat menggunakan basis data MySQL, maka data dapat disimpan hingga 1TB. a. Basis Data Program Berikut ini merupakan nama nama database dari program Point of Sale (POS) yang dibuat : Tabel 4. Nama nama database beserta field - field No 1 Nama Database barang a. b. c. d. e. f. g. a. b. a. b. c. d. e. a. b. c. d. a. b. c. d. e. f. g. h. a. b. id_barang tgl_pemasukan nama_barang kategori satuan stok harga id_kategori nama_kategori id_user nama_user password akses nama_lengkap tgl_pemasukan id_barang nama_barang jumlah_barang id no_struk id_barang nama_barang harga jumlah total satuan id_satuan nama_satuan Field field
2 3
kategori login
pemasukan_barang
penjualan_detail
satuan
59
Tabel 4. Nama nama database beserta field field (lanjutan) 7 8 stok temp_barang stok a. b. c. d. e. f. a. b. c. d. e. f. g. a. b. c. d. e. f. g. a. b. c. d. e. f. g. h. a. b. c. d. e. id_barang nama_barang satuan harga jumlah total no_struk tgl_transaksi nama_kasir jumlah_transaksi jumlah_pembayaran PPN total_trans id nama_toko alamat_toko telp fax e-mail website id_barang no_struk nama_barang satuan harga jumlah_barang tagihan nama_customer id id_barang nama_barang jumlah tanggal
temp_barang_master
10
toko
11
transaksi
12
update_stok
b. Pengkodean Program Hal yang pertama dilakukan dalam pengkodean program adalah menghubungkan Adobe Dreanmweaver harus dihubungkan dengan localhost server agar program yang dibuat sesuai dengan database. Script yang digunakan untuk
60
<?php $server = "localhost"; $username = "root"; $password = ""; $database = "pos"; // Koneksi dan memilih database di server mysql_connect($server,$username,$password) or die("Koneksi gagal"); mysql_select_db($database) or die("Database tidak bisa dibuka"); ?>
Halaman awal saat membuka program ini adalah menu Login. Maka tahap selanjutnya adalah membuat menu Login. Dengan menggunakan bantuan aplikasi Dynamic Table dari Adobe Dreamweaver, script yang dibuat untuk form menu Login sebagai berikut : <form id="login_form" name="login_form" method="post" action="cek_login.php"> <table width="200" border="0" align="center"> <tr> <td>Namauser</td> <td><input type="text" name="namauser" id="namauser" /></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" id="password" /></td> </tr> <tr> <td> </td> <td><input type="submit" name="submit" id="submit" value="login" /></td> </tr> </table>
61
Untuk masuk ke program, maka data yang diisikan pada menu Login harus sesuai dengan database. Untuk itu perlu dibuat database untuk dengan nama database login. Untuk memanggil database login, script yang dibuat sebagai berikut : $username=($_POST[namauser]); $password=($_POST[password]); $login=mysql_query("select * from login nama_user='$username' and password='$password'"); $ketemu=mysql_num_rows($login); $row=mysql_fetch_array($login); where
Jika data yang diisikan pada menu Login sesuai dengan database login, maka user dapat masuk ke program. Untuk itu diperlukan interupsi ke program untuk membuka menu utama atau menu Home. Script untuk membuat interupsi tersebut adalah sebagai berikut : if ($ketemu > 0){ session_start(); $_SESSION[nama_user] = $row[nama_user]; $_SESSION[passuser] = $row[password]; $_SESSION[nama_lengkap] = $row[nama_lengkap]; $_SESSION[akses] = $row[akses]; $sid_lama = session_id(); session_regenerate_id(); $sid_baru = session_id(); mysql_query("UPDATE login SET id_session='$sid_baru' WHERE nama_user='$username'"); header('location:konten.php?menu=home'); }
Tetapi jika data yang diisikan pada menu Login tidak sesuai dengan database login, maka user tidak dapat masuk ke program. Untuk itu diperlukan interupsi
62
ke program agar user tidak dapat masuk ke program dan meminta user melakukan login ulang. Script untuk membuat interupsi tersebut adalah sebagai berikut : else { printf('Maaf Sepertinya Username atau Password Anda salah <br> Silahkan Coba Login Kembali <br> <a href="index.php"> Login </a>');} Pada program ini terdapat dua akses login, yaitu akses sebagai admin dan akses sebagai kasir. Menu menu yang tampil pada menu Home oleh admin akan berbeda dengan kasir. Untuk menampilkan menu menu yang berbeda beda sesuai dengan akses login, maka script yang dibuat sebagai berikut :
if ($_SESSION['akses'] == "admin") { echo" <ul> <li><a href=?menu=home><img src=images/home-menu.png width=135 height=31></a></li> <li><a href=?menu=account><img src=images/account.png width=135 height=31 ></a></li> <li><a href=?menu=data_barang><img src=images/barangmenu2.png width=135 height=31></a></li> <li><a href=?menu=transaksi><img src=images/transaksi.png width=135 height=31></a></li> <li><a href=?menu=tampil_report><img src=images/reportmenu2.png width=135 height=31></a></li> <li><a href=logout.php><img src=images/logout.png width=135 height=31></a></li> </ul>"; } else if ($_SESSION['akses'] == "Kasir") { echo" <ul> <li><a href=?menu=home><img src=images/home-menu.png width=135 height=31></a></li> <li><a href=?menu=transaksi><img src=images/transaksi.png width=135 height=31></a></li> <li><a href=logout.php><img src=images/logout.png width=135 height=31></a></li>
63
</ul>"; }
Pada menu Home terdapat ucapan selamat datang berdasarkan akses login. Pada menu Home juga terdapat tampilan untuk mengatur identitas perusahaan dan juga tampilan about. Script untuk membuat ucapan selamat datang berdasarkan akses login adalah sebagai berikut : echo $_SESSION["akses"]
Untuk dapat menampilkan identitas perusahaan, terlebih dahulu membuat database dengan nama database toko. Script untuk menampilkan pengaturan identitas perusahaan berdasarkan database toko adalah sebagai berikut : $query_toko = mysql_query("SELECT * FROM toko WHERE id=1"); while($r=mysql_fetch_array($query_toko)){ Menu selanjutya adalah menu Account. Pada menu Account, database yang digunakan sama dengan database pada menu Login. Menu Account akan menampilkan nama user dan password yang digunakan saat login pada menu Login. Script untuk menampilkan data data akun berdasarkan database login adalah sebagai berikut : <td><?php echo $row_user['id_user']; ?></td> <td><?php echo $row_user['nama_user']; ?></td> <td><?php echo $row_user['password']; ?></td> <td><?php echo $row_user['akses']; ?></td> <td><?php echo $row_user['nama_lengkap']; ?></td>
64
Script untuk mengubah data akun yang akan di-update di database dan ditampilkan pada menu Account adalah sebagai berikut : $update= mysql_query ("UPDATE login SET nama_user='$_POST[nama_user]',password='$_POST[password]', akses='$_POST[akses]', nama_lengkap='$_POST[nama_lengkap]' WHERE id_user='$_POST[id_user]' ");
Script untuk menghapus akun yang akan dihapus dari database dan ditampilkan pada menu Account adalah sebagai berikut : mysql_query("DELETE FROM login WHERE id_user=$id_user"); Script untuk menambah data akun yang akan ditambah pada database dan ditampilkan pada menu Account adalah sebagai berikut :
$input=mysql_query ("INSERT INTllogin(id_user,nama_user,password,akses,nama_lengkap) VALUES ('$_POST[id_user]','$_POST[nama_user]','$_POST[password]','$_PO ST[akses]','$_POST[nama_lengkap]')"); $delete=mysql_query("DELETE FROM login WHERE id_user=''");
Menu selanjutnya adalah menu Barang. Pada menu Barang terdapat lima sub menu, yaitu Data Barang, Input Barang, Update Stok, Input Kategori, dan Input Satuan. Untuk dapat menampilkan data barang, diperlukan untuk membuat database dengan nama database barang. Script untuk menampilkan database barang pada sub menu Data Barang adalah sebagai berikut : <td><div align="center"><?php echo $row_barang['id_barang']; ?></div></td> <td><?php echo $row_barang['tgl_pemasukan']; ?></td> <td><?php echo $row_barang['nama_barang']; ?></td> <td><?php echo $row_barang['kategori']; ?></td> <td><?php echo $row_barang['satuan']; ?></td> 65
<td><?php echo $row_barang['stok']; ?></td> <td><div align="right"><?php echo $row_barang['harga']; ?></div></td> Script untuk mengubah data barang yang akan di-update dari database dan ditampilkan pada sub menu Data Barang adalah sebagai berikut : $update= mysql_query ("UPDATE barang SET nama_barang='$_POST[nama_barang]', kategori='$_POST[kategori]', satuan='$_POST[satuan]', stok='$_POST[stok]', harga='$_POST[harga]' WHERE id_barang='$_POST[id_barang]' ");
Script untuk menghapus data barang yang akan dihapus dari database dan ditampilkan pada sub menu Data Barang adalah sebagai berikut :
mysql_query("DELETE id_barang=$id_barang");
FROM
barang
WHERE
Pada sub menu Input Barang, database yang digunakan sama dengan database pada sub menu Data Barang. Script untuk menambah data barang yang akan ditambah dari database dan ditampilkan pada sub menu Input Barang adalah sebagai berikut : $input=mysql_query ("INSERT INTO barang(id_barang,tgl_pemasukan,nama_barang,kategori,satuan,stok, harga) VALUES('$_POST[id_barang]','$tgl','$_POST[nama_barang]','$_P OST[kategori]','$_POST[satuan]','$_POST[stok]','$_POST[harga ]')"); mysql_query ("INSERT INTO pemasukan_barang(id_barang,tgl_pemasukan,nama_barang,jumlah_ barang)
66
VALUES('$_POST[id_barang]','$tgl','$_POST[nama_barang]','$_P OST[stok]')"); mysql_query("DELETE FROM pemasukan_barang WHERE id_barang=''"); $delete=mysql_query("DELETE FROM barang WHERE id_barang=''"); Pada sub menu Update Stok, database yang digunakan sama dengan database pada sub menu Data Barang. Script untuk meng-update stok barang yang akan diupdate di database adalah sebagai berikut : if ($_POST['id'] == $r['id_barang']) { mysql_query("UPDATE barang SET stok='$sisa' WHERE id_barang='$id'"); mysql_query("INSERT INTO pemasukan_barang (id_barang, nama_barang, jumlah_barang, tgl_pemasukan) VALUES ('$id','$r[nama_barang]','$jumlah','$tanggal')"); Pada sub menu Update Kategori, diperlukan database dengan nama database kategori. Script untuk menambah kategori yang akan ditambahkan pada database adalah sebagai berikut : $input=mysql_query ("INSERT INTO kategori(nama_kategori) VALUES('$_POST[kategori]')"); mysql_query("DELETE FROM kategori WHERE nama_kategori='' "); Pada sub menu Update Satuan, diperlukan database dengan nama database satuan. Script untuk menambah satuan yang akan ditambahkan pada database adalah sebagai berikut : $input=mysql_query ("INSERT INTO satuan(nama_satuan) VALUES('$_POST[satuan]')"); mysql_query("DELETE FROM satuan WHERE nama_satuan='' ");
67
Pada menu Transaksi, nomor struk akan berbeda pada setiap transaksi. Script untuk membuat nomor struk berbeda setiap transaksi yang akan ditambahkan pada database adalah sebagai berikut :
$nostruk = mysql_query("SELECT * FROM temp_barang_master ORDER BY no_struk DESC LIMIT 1"); while($no=mysql_fetch_array($nostruk)){ $struk=$no['no_struk']+1; echo" Nomor Struk : $struk";
Menu selanjutnya adalah menu Transaksi. Pada menu Transaksi ini terdapat search engine yang digunakan untuk mencari nama nama barang yang akan dibeli oleh konsumen. Script untuk membuat search engine yang dapat mencari nama nama barang yang akan dibeli oleh konsumen adalah sebagai berikut :
$cari=$_POST["search"]; $sqlquery = mysql_query("SELECT * FROM barang WHERE id_barang LIKE '%$cari%' OR nama_barang LIKE '%$cari%'"); while($row_barang=mysql_fetch_array($sqlquery)){?>
<tr> <td><div align="center"><?php echo $row_barang['id_barang']; ?></div></td> <td><?php echo $row_barang['nama_barang']; ?></td> <td><?php echo $row_barang['kategori']; ?></td> <td><?php echo $row_barang['satuan']; ?></td> <td><?php echo $row_barang['stok']; ?></td> <td><div align="right"><?php echo $row_barang['harga']; ?></div></td> <td> <div align="center"><strong><a href="?menu=transaksi&id=<?php echo $row_barang['id_barang']; ?>">Pilih</a></div></td> <?php } ?>
68
</tr>
Setelah ditemukan barang yang diinginkan, maka untuk memilih barang tersebut script yang dibuat adalah sebagai berikut :
<tr> <td><div align="center"><?php echo $row_barang['id_barang']; ?></div></td> <td><?php echo $row_barang['nama_barang']; ?></td> <td><?php echo $row_barang['kategori']; ?></td> <td><?php echo $row_barang['satuan']; ?></td> <td><?php echo $row_barang['stok']; ?></td> <td><div align="right"><?php echo $row_barang['harga']; ?></div></td> <td> <div align="center"><strong><a href="?menu=transaksi&id=<?php echo $row_barang['id_barang']; ?>">Pilih</a></div></td> </tr>
Setelah barang dipilih, tentukan jumlah barang yang diinginkan. Setelah nama barang dan jumlah barang sudah ditentukan maka identitas dan jumlah barang dimasukkan ke dalam form penjualan. Untuk menampilkan identitas dan jumlah barang di form penjualan dibuat script sebagai berikut :
$query = mysql_query("SELECT * FROM temp_barang ORDER BY id_barang ASC" ); while($row=mysql_fetch_array($query)){ echo " <tr> <td width='120' align='center'>$row[id_barang]</td> <td width='200' align='center'>$row[nama_barang]</td> <td width='100' align='center'>$row[satuan] </td> <td width='150' align='right'>$row[harga]</td> <td width='100' align='center'>$row[jumlah] </td> <td width='120' align='right'>".number_format($row['total'],0,',','.')."</td>
69
Setelah selesai memilih dan menentukan jumlah barang yang akan dibeli, program akan menghitung jumlah biaya transaksinya. Jumlah biaya transaksi merupakan hasil pertambahan dari total transaksi ditambah pajak. Untuk mengetahui jumlah biaya transaksi yang telah dilakukan dibuat script sebagai berikut :
$_SESSION[tot_pembelian] = $tot_pembelian; $totalPPN = ((10 / 100) * $tot_pembelian); $total_trans=$tot_pembelian + $totalPPN; Apabila telah selesai melakukan transaksi, program akan mencetak struk berdasarkan dari transaksi yang telah dilakukan. Script yang dibuat untuk
<h2><center>Nota Penjualan </center></h2> <script type="text/javascript"> if (window.print) { document.write(); } setTimeout('window.print()', 1000); setTimeout('TO_INDEX()', 1200); </script> <div id="main"> <title>Struk</title> <?php include'koneksi.php'; $query_toko = mysql_query("SELECT * FROM toko WHERE id=1"); while($r=mysql_fetch_array($query_toko)){ echo $r["nama_toko"]; echo "</br>"; echo $r["alamat_toko"];?> </br> <tr> <td colspan='5' height='5'>==========================</td> </tr> <?php } $tgl =date("Y-m-d"); $time =date("H:i"); $struk=$_GET['id'];
70
$sql=mysql_query("SELECT * FROM temp_barang_master WHERE no_struk='$struk'"); $rowu=mysql_fetch_array($sql); <form name='struk' action='?n=print' method='POST'> <table border=0 cellpadding=0 cellspacing=0 style="border:solid 0px #000;color:#000"> <tr> <td width='10'></td> <td width='80'>Tanggal</td> <td width='3'>:</td> <td width='169'><?php print $tgl?></td> <td width='10'></td> </tr> <tr> <td></td> <td>Jam</td> <td>:</td> <td><?php print $time?></td> <td></td> </tr> <tr> <td colspan='5' height='5'>=================================== =======</td> </tr> </table> <?php $qry=mysql_query("SELECT penjualan_detail.*,temp_barang_master.* FROM penjualan_detail,temp_barang_master WHERE penjualan_detail.no_struk=$struk and temp_barang_master.no_struk=$struk ORDER BY id_barang"); print "<table border=0 cellpadding=1 cellspacing=1 style='border:solid 0px #000;color:#000'>"; while ($row=mysql_fetch_array($qry)){ ?> <tr> <td width='70'><div align='left'><?php print $row[nama_barang]?></div></td> <td width='8'></td> <td width='30'><div align='right'><?php print $row[jumlah].' x'?></div></td> <td><div align='left'><?php print number_format ($row[harga])?></div></td> <td width='20'></td> <td width='40'><div align='right'> <?php print number_format($row[total])?></div></td> <td></td> </tr> <?php 71
} ?> <tr> <td></td> <td colspan='3' height='5'><h3>-----------------------------------------------<h3></td> <td></td> </tr> </table> <table width="401" border=0 cellpadding=0 cellspacing=0 style="border:solid 0px #000;color:#000"> <tr> <td width='23'></td> <td width='133'>Total</td> <td width='3'>:</td> <td width='179'><div align='right'> <?php print $rowu['jumlah_transaksi']?></div></td> <td width='1'></td> </tr> <tr> <td height="20"></td> <td>PPN</td> <td>:</td> <td><div align='right'><?php print number_format($rowu['PPN']) ?></td> <td></td> </tr> <tr> <td><b>Tagihan</b></td> <td>:</td> <td><div align='right'><b><?php print number_format($rowu['total_trans'])?></b></div></td> <tr></tr> <td width='23'></td> <td width='1'></td> <td width='1'></td> <td width="73"></td> </tr> </table> <table border=0 cellpadding=0 cellspacing=0 style="border:solid 0px #000;color:#000"> <tr> <td colspan='5' height='5'><h3>--------------------------------------------------------------------<h3></td> </tr> <tr> <td width='260'><div align='center'>TERIMA KASIH ATAS KEPERCAYAAN ANDA BERBELANJA</div></td> </table> </form> 72
</div> <?php mysql_query("DELETE FROM temp_barang"); ?> Menu selanjutnya pada program ini adalah menu Report. Pada menu Report terdapat 3 (tiga) sub menu, yaitu Report Penjualan, Report Pemasukan Barang, dan Report Stok Barang. Pada sub menu Report Penjualan dan sub menu Report Pemasukan Barang dapat difilter berdasarkan tanggal transaksi. Data data yang terdapat pada menu Report ini merupakan rangkuman dari transaksi yang telah dilakukan. Untuk mengambil data pada setiap transaksi penjualan untuk dimasukkan pada sub menu Report Penjualan dibuat script sebagai berikut :
dan untuk menampilkannya pada tabel pada sub menu Report Penjualan dibuat script sebagai berikut : <?php include'koneksi.php'; echo" <table border=1> <tr bgcolor=#009900> <th>No</th> <th>Tanggal</th> <th>No Faktur</th> <th>Total Transaksi</th> <th></th> </tr>"; $sql=mysql_query("SELECT * FROM temp_barang_master"); $no=1; while($r=mysql_fetch_array($sql)){ if(($no % 2) == 0){ $warna = "#EAF0F7";
73
} else{ $warna = "#6699FF"; } echo "<tr >"; echo" <tr bgcolor=$warna> <td width=30>$no</td> <td width=80>$r[tgl_transaksi]</td> <td width=120 align=center>$r[no_struk]</td> <td width=140 align=right>";?>Rp <?php print number_format ($r['jumlah_transaksi']) ;echo"</td> <td><a href=?link=viewtrans&id=$r[no_struk]>Details</a></td> </tr>"; $no++; } echo"</table>"; ?>
Untuk mengambil data pada setiap pemasukan barang untuk dimasukkan pada sub menu Report Pemasukan Barang dibuat script sebagai berikut :
dan untuk menampilkannya pada tabel pada sub menu Report Pemasukan Barang dibuat script sebagai berikut :
<?php echo" <form method=POST action=?link=pemasukan> <input type='text' name='filter' /> <input type='submit' name='filter'value='Filter Laporan' /> </form> "; ?> <?php include'koneksi.php'; echo" <table border=1> <tr bgcolor=#009900> <th>No</th>
74
<th>Tanggal</th> <th>Id Barang</th> <th>Nama Barang</th> <th>Jumlah Barang</th> <th></th> </tr>"; $sql=mysql_query("SELECT * FROM pemasukan_barang ORDER BY tgl_pemasukan"); $no=1; while($r=mysql_fetch_array($sql)){ if(($no % 2) == 0){ $warna = "#EAF0F7"; } else{ $warna = "#6699FF"; } echo "<tr >"; echo" <tr bgcolor=$warna> <td width=30>$no</td> <td width=80>$r[tgl_pemasukan]</td> <td width=120 align=center>$r[id_barang]</td> <td width=120 align=center>$r[nama_barang]</td> <td width=120 align=center>$r[jumlah_barang]</td> </tr>"; $no++; } echo"</table>"; ?> Untuk sub menu Report Stok Barang data yang ditampilkan sama dengan sub menu Data Barang.
Menu selanjutnya adalah menu Logout. Menu Logout artinya menu untuk keluar dari program ini. Untuk membuat menu Logout, dibuat script sebagai berikut : <?php session_start(); session_destroy(); echo "<center>Anda telah sukses keluar href='index.php'><b>[LOGIN]<b></a>"; ?>
sistem
<br><a
75
d. Hasil Program Sistem Aplikasi Point of Sale (POS) Pada program Point of Sale (POS) yang dibuat terdapat lima menu, yaitu menu Home, menu Account, menu Barang, menu Transaksi, menu Report, dan menu Logout.
Untuk mengakses program ini, sebelumnya harus melakukan login dengan mengisi nama user dan password.
Menu Home merupakan tampilan awal setelah melakukan login. Pada menu Home terdapat tampilan ucapan selamat datang yang ditujukan sesuai dengan akses login yang digunakan. Pada menu Home juga terdapat tampilan untuk mengatur identitas perusahaan, dengan cara meng-klik kata Manajemen Toko yang berada pada sudut kanan atas program. Selain itu, pada menu Home juga terdapat tampilan About yang berisi tentang biodata pembuat program. Tampilan About ini dapat diakses dengan cara meng-klik kata About yang juga berada pada sudut kanan atas program. Menu Home dapat diakses oleh semua akun yang memiliki login untuk masuk ke program ini.
76
77
Menu Account merupakan menu untuk memanajemen akun-akun yang dapat mengakses program ini. Pada menu Account terdapat tabel yang berisikan datadata akun dengan nama user dan password yang digunakan untuk masuk ke program ini. Data-data akun ini dapat dirubah, dihapus dan ditambah. Menu Account hanya dapat diakses oleh administrator.
78
Menu Barang merupakan menu untuk memanajemen data barang yang dijual. Pada menu Barang terdapat lima sub menu, yaitu Data Barang, Input Barang, Update Stok, Input Kategori, dan Input Satuan. Menu Barang hanya dapat diakses oleh administrator.
Pada sub menu Data Barang terdapat data-data barang yang dijual di toko tersebut. Pada sub menu ini terdapat informasi kode barang, tanggal pemasukan barang, nama barang, kategori barang, satuan barang, jumlah stok barang, dan harga barang. Data-data barang ini dapat diubah dan dihapus.
79
Sub menu Input Barang digunakan untuk memasukan barang baru. Informasi yang dimasukan pada sub menu Input Barang akan dimasukan ke sub menu Data Barang.
80
Sub menu Update Stok digunakan untuk menambahkan jumlah stok barang berdasarkan kode barang. Informasi yang dimasukkan pada sub menu Update Stok akan meng-update jumlah stok pada sub menu Data Barang.
Sub menu Input Kategori digunakan untuk menambah kategori barang. Informasi yang dimasukkan pada sub menu Input Kategori akan mempengaruhi sub menu Input Barang, karena informasi yang dimasukkan pada sub menu Input Kategori akan menambah daftar kategori barang pada sub menu Input Barang.
81
Sub menu Input Satuan digunakan untuk menambah satuan barang. Informasi yang dimasukkan pada sub menu Input Satuan akan mempengaruhi sub menu Input Barang, karena informasi yang dimasukkan pada sub menu Input Satuan akan menambah daftar satuan barang pada sub menu Input Barang.
Menu Transaksi merupakan menu untuk melakukan transaksi penjualan. No struk transaksi akan berganti secara otomatis setiap melakukan transaksi penjualan. Transaksi penjualan dilakukan dengan cara memasukkan kode barang dan jumlah barang yang akan dibeli. Program akan menghitung total harga pembelian barang. Jumlah pembayaran merupakan jumlah yang harus dibayar oleh pelanggan yang terdiri dari total harga pembelian barang ditambah PPN 10%. Setelah selesai melakukan transaksi penjualan, struk akan dicetak secara otomatis. Data-data transaksi penjualan ini akan dimasukkan secara otomatis ke laporan penjualan. Menu Transaksi dapat diakses oleh kasir dan administrator.
82
Menu Report merupakan menu untuk mengetahui laporan-laporan berdasarkan kegiatan transaksi yang sudah dilakukan. Pada menu Report terdiri dari tiga sub menu laporan, yaitu Penjualan. Pemasukan Barang, dan Stok Barang. Menu Report hanya dapat diakses oleh administrator.
83
Sub menu laporan Penjualan digunakan untuk mengetahui transaksi penjualan yang telah dilakukan berdasarkan tanggal transaksi. Pada sub menu laporan Penjualan terdapat informasi tanggal transaksi penjualan, no struk transaksi penjualan, dan total transaksi penjualan. Untuk mengetahui secara detail transaksi penjualan yang telah dilakukan, cukup dengan meng-klik kata detail.
84
Sub menu laporan Pemasukan Barang digunakan untuk mengetahui data-data barang yang masuk berdasarkan tanggal pemasukan barang.
85
Sub menu laporan Stok Barang digunakan untuk mengetahui jumlah stok barang yang tersedia. Sub menu laporan Stok Barang sama dengan sub menu Data Barang yang terdapat pada menu Barang.
Menu Logout merupakan menu yang digunkan untuk keluar dari program ini. Menu logout dapat diakses oleh semua akun yang memiliki login untuk masuk ke program ini.
86
C. Diagram Informasi Aplikasi Point Of Sale (POS) Diagram Informasi ini digunakan untuk mengetahui aliran kerja dari sistem aplikasi Point Of Sale (POS) ini. Berikut ini merupakan diagram informasi dari aplikasi Point Of Sale (POS) yang telah dibuat.
Transaksi Penerimaan Barang <<uses>> <<uses>> Harga Barang <<uses>> <<uses>> <<uses>> Nama Barang Satuan Tanggal Pemasukan Kategori <<uses>>
Admin
Id Barang
<<uses>>
Jumlah Barang
Transaksi penerimaan barang memerlukan data berupa id barang, nama barang, tanggal pemasukan, kategori, satuan, jumlah barang , dan harga barang. Transaksi penerimaan barang hanya dapat diakses oleh admin.
Admin/Kasir
No Struk
<<uses>>
Uang Kembali
Pelanggan
Nama Barang
87
Transaksi penjualan barang memerlukan data berupa no struk, tanggal transaksi, nama barang, jumlah barang, uang dibayar oleh konsumen, dan uang kembalian konsumen.
Aplikasi POS
Admin
<<uses>> <<uses>>
Menu Home
<<uses>> <<uses>> <<uses>> <<uses>>
Menu Logout
Menu Account
Menu Report
Menu Barang
Menu Transaksi
Gambar 48. Diagram Informasi Aplikasi POS yang Hanya Dapat Diakses Oleh Admin Pada Aplikasi Point Of Sale (POS) ini, menu menu yang dapat diakses oleh admin antara lain, menu Home, menu Account, menu Barang, menu Transaksi, menu Report, dan menu Logout.
Aplikasi POS
Kasir
<<uses>> <<uses>>
<<uses>>
Menu Home
Menu Logout
Menu Transaksi Diagram 49. Informasi Aplikasi POS yang Hanya Dapat Diakses Oleh Kasir
88
Pada Aplikasi Point Of Sale (POS) ini, menu menu yang dapat diakses oleh kasir antara lain, menu Home, menu Transaksi, dan menu Logout.
89