BAB 4 IMPLEMENTASI DAN EVALUASI
4.1
Spesifikasi Sistem Berikut ini adalah spesifikasi hardware dan software yang dibutuhkan dalam implementasi agar aplikasi dapat berjalan dengan baik:
4.1.1 Spesifikasi Hardware Hardware yang dibutuhkan dalam implementasi aplikasi ini dengan spesifikasi minimum (baik untuk server maupun untuk client), sebagai berikut : a. Processor : Pentium IV 3.0 GHz ( untuk client ) Standar minimum processor untuk server maupun client yang dijual saat ini atau lebih tinggi. b. Harddisk : 40 GB ( untuk client ) dan 500 GB ( untuk server ) Standar minimum harddisk yang dijual saat ini. c. RAM : 1 GB ( untuk client ) Standar minimum RAM yang dijual saat ini atau lebih untuk melakukan proses aplikasi yang lebih cepat. d. Keyboard dan mouse e. LAN Cable dan Modem internet ( untuk client ) f. Monitor 14” ( untuk client ) Standar minimum monitor yang dijual saat ini.
1
2 4.1.2 Spesifikasi Software Software yang dibutuhkan dalam implementasi aplikasi ini dengan spesifikasi minimum (baik untuk server maupun untuk client), sebagai berikut : a. Sistem operasi Linux® CentOS 5.7 x86_64 ( untuk server ) Produk server yang dikeluarkan oleh Linux® dan digunakan pada server sistem. b. Database Management System (DBMS) MySQL® 5.1 ( untuk server ) Produk MySQL® yang digunakan dalam pengembangan sistem. c. PHP® 5.3.5 ( untuk server ) d. Zend® Framework 1.11.13 ( untuk server ) e. Sistem operasi Microsoft® Windows XP atau Windows Vista atau Windows 7 ( untuk client ) Standar minimum sistem operasi yang dikeluarkan oleh Microsoft® pada saat ini. f. Browser : Google Chrome® dan Mozilla Firefox® ( untuk client ) Aplikasi browser yang digunakan untuk mengakses sistem informasi.
3 4.2
Rencana Investasi Aplikasi Berdasarkan pertimbangan dan analisis terhadap hasil kuesioner serta kemampuan dari UKM, maka biaya penyewaan aplikasi yang dikenakan adalah sebesar Rp 100.000,00 / bulan dengan biaya registrasi Rp 50.000,00. Adapun minimal dari total pelanggan yang ditargetkan adalah sekitar 100 pelanggan pada tahun pertama dengan pertumbuhan sebesar 30% setiap tahunnya. Berikut ini adalah diagram yang menggambarkan rencana pendapatan dan pengeluaran dari aplikasi ini selama 3 tahun: Rp350.000.000,00 Rp300.000.000,00 Rp250.000.000,00 Rp200.000.000,00
Pendapatan
Rp150.000.000,00
Pengeluaran
Rp100.000.000,00 Rp50.000.000,00 Rp‐ Tahun 1
Tahun 2
Tahun 3
Gambar 4.2.1 Diagram Pendapatan dan Pengeluaran Selama 3 Tahun
Berikut ini adalah perincian dari rencana biaya yang akan dikeluarkan: Tabel 4.2.1 Tabel Biaya Pengeluaran Selama 3 Tahun Pengeluaran
Tahun 1
Tahun 2
Tahun 3
Biaya sewa server +
Rp 15,600,000.00
Rp 15,600,000.00
Rp 15,600,000.00
Rp 60,000,000.00
Rp 63,000,000.00
Rp 66,150,000.00
domain Listrik, air, dan
4 perlengkapan kantor Gaji admin
Rp 28,600,000.00
Rp 31,460,000.00
Rp 34,606,000.00
Gaji sales
Rp 24,000,000.00
Rp 26,400,000.00
Rp 29,040,000.00
Gaji Operator
Rp 20,400,000.00
Rp 22,440,000.00
Rp 24,684,000.00
Berikut ini adalah perincian dari rencana pendapatan yang akan didapatkan: Tabel 4.2.2 Tabel Biaya Pendapatan Selama 3 Tahun Pendapatan
Tahun 1
Tahun 2
Tahun 3
Biaya Sewa
Rp 180,000,000.00
Rp 234,000,000.00
Rp 304,200,000.00
Rp 5,000,000.00
Rp 1,500,000.00
Rp 450,000.00
Pengguna Biaya Registrasi Pengguna
5 4.3
Rencana Implementasi
4.3.1 Instalasi Sistem File aplikasi ini mula-mula harus diunggah pada sebuah server yang sudah terhubung dengan sebuah domain sebelum dapat digunakan secara online. Langkah-langkah yang diperlukan untuk memindahkan files aplikasi pada server antara lain: 1. Aktifkan aplikasi File Transfer Protocol (FTP), dalam kasus ini digunakan aplikasi FileZilla®.
Gambar 4.3.1.1
Tampilan Awal Halaman Aplikasi FileZilla®
6 2. Masukkan alamat domain pada kolom host, nama pengguna pada username, dan kata sandi pada kolom password, kemudian tekan tombol QuickConnect dan FileZilla® telah terhubung dengan server. Pada kasus ini digunakan alamat domain “jj-oncloud.net”.
Gambar 4.3.1.2
Tampilan Halaman Aplikasi FileZilla® setelah Berhasil Terhubung Dengan Server
7 3. Pada remote site, akses folder public_html, lalu buatlah sebuah folder dengan nama yang diinginkan, pada kasus ini digunakan nama “insolo”.
Gambar 4.3.1.3
Tampilan
Halaman
Aplikasi
Pembuatan Folder “insolo”
FileZilla®
Pada
Saat
8 4. Pada local site, pilih files aplikasi yang akan diunggah pada server, lalu klik kanan pada tombol mouse, dan pilih menu upload.
Gambar 4.3.1.4
Tampilan
Halaman
Aplikasi
FileZilla®
Pada
Pemilihan Files Aplikasi Yang Akan Diunggah.
Saat
9 5. Proses penggunggahan akan terus berjalan hingga files aplikasi telah sepenuhnya diunggah.
Gambar 4.3.1.5
Tampilan Halaman Aplikasi
FileZilla® Pada Saat
pengunggahan Files Aplikasi Sedang Berlangsung.
10 6. Pengunggahan telah selesai apabila tidak ada lagi file pada bagian Queued Files
Gambar 4.3.1.6
Tampilan
Halaman
Aplikasi
FileZilla®
Pada
Saat
Pengunggahan Files Aplikasi Selesai.
7. Tutup aplikasi FileZilla® dengan mengakses menu File, dan pilih Exit, atau dengan menekan tombol ‘x’ pada pojok kanan atas aplikasi.
11 Langkah selanjutnya yang perlu dilakukan agar aplikasi dapat berjalan adalah memasukkan database pada server. Langkah-langkah yang diperlukan antara lain: 1. Aktifkan browser, dan masukkan alamat cPanel® domain, dalam kasus ini digunakan
alamat
domain
“jj-oncloud.net/cpanel”.
Masukkan
nama
pengguna pada kolom username dan kata sandi pada kolom password, lalu tekan tombol Login.
Gambar 4.3.1.7
Tampilan Halaman Login cPanel® pada jj-oncloud.net
12 2. Pada saat login berhasil, akan muncul halaman home dari cPanel®, pilih menu MySQL® Database pada kelompok menu Databases.
Gambar 4.3.1.8
Tampilan Halaman Home cPanel® pada jj-oncloud.net
13 3. Pada halaman MySQL® Database, buat sebuah database baru, dalam kasus ini digunakan nama “insolo”.
Gambar 4.3.1.9
Tampilan Halaman Penambahan Database
4. Pada halaman yang sama, buat pengguna baru, dalam kasus ini digunakan nama “winny” yang diisikan pada kolom username, kemudian isi kolom password dengan kata sandi dan tekan tombol Create User.
Gambar 4.3.1.10
Tampilan Halaman Penambahan Pengguna pada MySQL® Database
14 5. Tahap selanjutnya masukkan pengguna “winny” sebagai pengguna dari database “insolo”
Gambar 4.3.1.11
Tampilan Halaman Penambahan Pengguna pada Database
6. Pada bagian Current Databases, akan muncul database “insolo” dengan pengguna “winny”.
Gambar 4.3.1.12
Tampilan Halaman Database yang sudah dibuat
7. Kembali pada halaman home, kemudian pilih menu phpMyAdmin pada kelompok menu Databases.
Gambar 4.3.1.13
Tampilan Halaman Kelompok Menu Databases
15 8. Pada halaman phpMyAdmin, pilih menu import, lalu tekan tombol Choose File dan pilih file query MySQL® yang telah diekspor sebelumnya dilanjutkan dengan menekan tombol Open dan Go.
Gambar 4.3.1.14
Tampilan Halaman Import pada phpMyAdmin®
16 9. Pada saat pemasukkan database selesai, database “insolo” telah terisi dengan tabel-tabel, halaman phpMyAdmin dapat ditutup.
Gambar 4.3.1.15
Tampilan Halaman Daftar Tabel pada Database “Insolo”
17 10.
Pada browser, masukkan alamat domain beserta folder yang telah dibuat
sebelumnya, dalam kasus ini alamat domain berupa “jj-oncloud.net/insolo” dan akan muncul halaman login dari aplikasi ini.
Gambar 4.3.1.16
Tampilan Halaman Login Aplikasi Insolo
4.3.2 Tahap Denormalisasi Mengacu pada Gravelle (2010), penggunaan bentuk database yang ternormalisasi pada MySQL® dapat menimbulkan kekurangan pada sisi kecepatan akses data. Hal ini dikarenakan untuk mengakses beberapa data pada database ternormalisasi, MySQL® memerlukan query dengan perintah join yang akan menggabungkan 2 tabel database atau lebih. Semakin banyak tabel
18 yang digabungkan dengan menggunakan join, maka akan semakin lama juga MySQL® membaca isi dari seluruh tabel tersebut. Berdasarkan kekurangan yang dimiliki MySQL® tersebut, maka database pada sistem informasi ini akan dioptimalkan dengan menggunakan metode denormalisasi database. Hal ini juga disebutkan dalam Database Journal yang mengatakan bahwa salah satu langkah terbaik dalam penggunaan MySQL® yaitu menggunakan tabel ekstrak untuk menyederhanakan penggabungan tabel yang terlalu sering. Denormalisasi (Connoly, 2005) merupakan proses yang dilakukan pada database yang sudah dinormalisasi, dengan cara memodifikasi struktur tabel dan mengabaikan kerangkapan data (yang terkontrol) untuk meningkatkan kinerja database.
4.3.2.1 Menggabungkan Relasi one-to-one Tahapan ini dilakukan untuk mengecek kembali relasi one-to-one dan mengetahui efek dari menggabungkan relasi-relasi ke dalam relasi tunggal. Langkah ini tidak dilakukan karena tidak ada relasi one-to-one dalam kasus ini.
4.3.2.2 Duplikasi Atribut Bukan Kunci pada Relasi one-to-many Tahapan ini dilakukan untuk mengurangi atau menghilangkan joins atau penggabungan lebih dari 1 tabel dalam query yang sering digunakan atau kritikal sehingga menghasilkan duplikasi pada 1 atau
19 lebih atribut non-key dalam relasi one-to-many. Dalam kasus ini, terdapat beberapa atribut bukan kunci yang di duplikasi, seperti : 1. Duplikasi atribut productCategoryName ke tabel Product Query SQL sebelum denormalisasi : SELECT
p.id,
productCode,
productName,
productInfo,
productImage, productCategoryName, productStock, productUnit, productSellPrice,
productBuyPrice,
productOpnameInfo,
p.createdBy,
p.editBy,
productNewStock, p.lastModified,
p.newEntry FROM product p LEFT JOIN productCategory pc ON p.productCategoryID = pc.id WHERE p.companyID = $companyID AND p.flagDel=0 AND $by LIKE '%$search%' ORDER BY productName asc;
Gambar 4.3.2.2.1 Tampilan Waktu Query 1 Sebelum Denormalisasi
20 Query SQL setelah denormalisasi : SELECT
id,
productCode,
productName,
productInfo,
productImage, productCategoryName, productStock, productUnit, productSellPrice,
productBuyPrice,
productNewStock,
productOpnameInfo, createdBy, editBy, lastModified, newEntry FROM product WHERE companyID = $companyID AND flagDel=0 AND $by LIKE '%$search%' ORDER BY productName asc;
Gambar 4.3.2.2.2 Tampilan Waktu Query 1 Sesudah Denormalisasi
2. Duplikasi atribut customerName ke tabel OfferingHeader Query SQL sebelum denormalisasi : SELECT o.*, customerName
21 FROM offeringHeader o LEFT JOIN customer c ON o.customerID = c.id WHERE o.companyID=$companyID AND
$by LIKE '%
$search%' AND o.flagdel=0 ORDER BY o.id desc;
Gambar 4.3.2.2.3 Tampilan Waktu Query 2 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM offeringHeader WHERE companyID=$companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc
22
Gambar 4.3.2.2.4 Tampilan Waktu Query 2 Sesudah Denormalisasi
3. Duplikasi
atribut
productName
dan
productUnit
OfferingDetail Query SQL sebelum denormalisasi : SELECT d.*, productName, productUnit FROM offeringDetail d LEFT JOIN Product p ON d.productID = p.id WHERE offeringHeaderID=$id;
ke
tabel
23
Gambar 4.3.2.2.5 Tampilan Waktu Query 3 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM offeringDetail WHERE offeringHeaderID=$id ORDER BY id desc;
24
Gambar 4.3.2.2.6 Tampilan Waktu Query 3 Sesudah Denormalisasi
4. Duplikasi atribut customerName ke tabel sellPOHeader Query SQL sebelum denormalisasi : SELECT p.*, customerName FROM sellPOHeader p LEFT JOIN customer c ON p.customerID = c.id WHERE p.companyID= $companyID AND '%$search%' AND p.flagdel=0 ORDER BY p.id desc;
$by
LIKE
25
Gambar 4.3.2.2.7 Tampilan Waktu Query 4 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellPOHeader WHERE companyID= $companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc;
26
Gambar 4.3.2.2.8 Tampilan Waktu Query 4 Sesudah Denormalisasi
5. Duplikasi
atribut
productName
dan
productUnit
sellPODetail Query SQL sebelum denormalisasi : SELECT d.*, productName, productUnit FROM sellPODetail d LEFT JOIN Product p ON d.productID = p.id WHERE sellPOHeaderID =$id;
ke
tabel
27
Gambar 4.3.2.2.9 Tampilan Waktu Query 5 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellPODetail WHERE sellPOHeaderID =$id ORDER BY id desc;
Gambar 4.3.2.2.10 Tampilan Waktu Query 5 Sesudah Denormalisasi
28 6. Duplikasi atribut customerName dan sellPOCode ke tabel sellDOHeader Query SQL sebelum denormalisasi : SELECT
sdh.id,
sellDOCourier,
customerName,
sph.sellPOCode,
sellDOCode, sellDOInfo,
sellDODate, sdh.createdBy,
sdh.editBy, sdh.lastModified, sdh.newEntry FROM sellDOHeader sdh LEFT JOIN customer v ON sdh.customerID = v.id LEFT JOIN sellPOHeader sph ON sdh.sellPOHeaderID = sph.id WHERE sdh.companyID= $companyID AND $by
LIKE
'%$search%' AND sdh.flagdel=0 AND sdh.flagstatus =0 ORDER BY sdh.id desc;
Gambar 4.3.2.2.11 Tampilan Waktu Query 6 Sebelum Denormalisasi
29 Query SQL setelah denormalisasi : SELECT
id,
sellDOCourier,
customerName, sellPOCode,
sellDOCode,
sellDOInfo,
sellDODate,
createdBy,
editBy,
lastModified, newEntry FROM sellDOHeader WHERE companyID= $companyID AND $by LIKE '%$search%' AND flagdel=0 AND flagstatus =0 ORDER BY id desc;
Gambar 4.3.2.2.12 Tampilan Waktu Query 6 Sesudah Denormalisasi
7. Duplikasi
atribut
productName
dan
sellDODetail Query SQL sebelum denormalisasi : SELECT * FROM sellDODetail sdd
productUnit
ke
tabel
30 LEFT JOIN product p ON sdd.productID = p.id WHERE sellDOHeaderID=$id;
Gambar 4.3.2.2.13 Tampilan Waktu Query 7 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellDODetail WHERE sellDOHeaderID=$id;
31
Gambar 4.3.2.2.14 Tampilan Waktu Query 7 Sesudah Denormalisasi
8. Duplikasi atribut customerName ke tabel sellInvoiceHeader Query SQL sebelum denormalisasi : SELECT i.id, sellInvoiceCode, sellInvoiceDate, i.CustomerID, sellInvoiceInfo,
sellInvoiceTerm,
sellInvoiceRemain,
sellInvoiceStatus, i.createdBy, i.editBy, i.lastModified, i.newEntry, c.customerName FROM sellInvoiceHeader i, customer c WHERE
i.companyID=
$companyID
AND
$by
LIKE
'%$search%' AND i.flagdel=0 AND i.CustomerID = c.id AND sellInvoiceType != 'Retail' ORDER BY i.id desc;
32
Gambar 4.3.2.2.15 Tampilan Waktu Query 8 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT id, sellInvoiceCode, sellInvoiceDate, CustomerID, customerName, sellInvoiceRemain,
sellInvoiceInfo, sellInvoiceStatus,
sellInvoiceTerm, createdBy,
editBy,
lastModified, newEntry FROM sellInvoiceHeader WHERE companyID=$companyID AND $by LIKE '%$search%' AND flagdel=0 AND sellInvoiceType != 'Retail' ORDER BY id desc;
33
Gambar 4.3.2.2.16 Tampilan Waktu Query 8 Sesudah Denormalisasi
9. Duplikasi
atribut
productName
dan
productUnit
ke
tabel
sellInvoiceDetail Query SQL sebelum denormalisasi : SELECT
productName,
productUnit,
sellInvoicePrice FROM sellInvoiceDetail ind LEFT JOIN product p ON ind.productID = p.id WHERE sellInvoiceHeaderID=$id;
sellInvoiceQty,
34
Gambar 4.3.2.2.17 Tampilan Waktu Query 9 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
productName,
productUnit,
sellInvoicePrice FROM sellInvoiceDetail WHERE sellInvoiceHeaderID=$id;
sellInvoiceQty,
35
Gambar 4.3.2.2.18 Tampilan Waktu Query 9 Sesudah Denormalisasi
10. Duplikasi atribut customerName dan sellInvoiceCode ke tabel sellPaymentHeader Query SQL sebelum denormalisasi : SELECT p.*, customerName, sellInvoiceCode FROM sellPaymentHeader p LEFT JOIN customer c ON p.customerID = c.id LEFT JOIN sellInvoiceHeader b ON sellInvoiceHeaderID = b.id WHERE
p.companyID=
$companyID
AND
'%$search%' AND p.flagdel=0 ORDER BY p.id desc;
$by
LIKE
36
Gambar 4.3.2.2.19 Tampilan Waktu Query 10 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellPaymentHeader WHERE companyID= $companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc;
37
Gambar 4.3.2.2.20 Tampilan Waktu Query 10 Sesudah Denormalisasi
11. Duplikasi atribut productName dan productUnit ke tabel sellPaymentDetail Query SQL sebelum denormalisasi : SELECT d.*, productName, productUnit FROM sellPaymentDetail d LEFT JOIN Product p ON d.productID = p.id WHERE
sellPaymentHeaderID=$id
$companyID;
AND
p.companyID
=
38
Gambar 4.3.2.2.21 Tampilan Waktu Query 11 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellPaymentDetail WHERE sellPaymentHeaderID = $id;
Gambar 4.3.2.2.22 Tampilan Waktu Query 11 Sesudah Denormalisasi
39 12. Duplikasi atribut customerName dan sellInvoiceCode ke tabel sellReturnHeader Query SQL sebelum denormalisasi : SELECT p.*, customerName, sellInvoiceCode FROM sellReturnHeader p LEFT JOIN customer v ON p.customerID = v.id LEFT JOIN sellInvoiceHeader b ON sellInvoiceHeaderID = b.id WHERE p.companyID=$companyID AND $by LIKE '%$search%' AND p.flagdel=0 ORDER BY p.id desc;
Gambar 4.3.2.2.23 Tampilan Waktu Query 12 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * ,sellInvoiceCode FROM sellReturnHeader
40 WHERE companyID= $companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc;
Gambar 4.3.2.2.24 Tampilan Waktu Query 12 Sesudah Denormalisasi
13. Duplikasi atribut productName dan productUnit ke tabel sellReturnDetail Query SQL sebelum denormalisasi : SELECT d.*, productName, productUnit FROM sellReturnDetail d LEFT JOIN Product p ON d.productID = p.id WHERE
sellReturnHeaderID=
$companyID;
$id
AND
p.companyID=
41
Gambar 4.3.2.2.25 Tampilan Waktu Query 13 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM sellReturnDetail WHERE sellReturnHeaderID= $id;
Gambar 4.3.2.2.26 Tampilan Waktu Query 13 Sesudah Denormalisasi
42 14. Duplikasi atribut vendorName ke tabel buyPOHeader Query SQL sebelum denormalisasi : SELECT p.id, vendorName, buyPOCode, buyPODate, buyPOInfo, buyPOCurrency,
buyPOTerm,
buyPOAddress,
p.createdBy,
p.editBy, p.lastModified, p.newEntry FROM buyPOHeader p LEFT JOIN vendor v ON p.vendorID = v.id WHERE
p.companyID=
$companyID
AND
$by
LIKE
'%$search%' AND p.flagdel=0 ORDER BY p.id desc;
Gambar 4.3.2.2.27 Tampilan Waktu Query 14 Sebelum Denormalisasi
43 Query SQL setelah denormalisasi : SELECT id, vendorName, buyPOCode, buyPODate, buyPOInfo, buyPOCurrency, buyPOTerm, buyPOAddress, createdBy, editBy, lastModified, newEntry FROM buyPOHeader WHERE companyID= $companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc;
Gambar 4.3.2.2.28 Tampilan Waktu Query 14 Sesudah Denormalisasi
15. Duplikasi atribut productName dan productUnit ke tabel buyPODetail Query SQL sebelum denormalisasi :
44 SELECT productName, productUnit, buyPOQty, productID, buyPOPrice, buyPOQtyRemain FROM buyPODetail d LEFT JOIN Product p ON d.productID = p.id WHERE buyPOHeaderID=$id;
Gambar 4.3.2.2.29 Tampilan Waktu Query 15 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
productName,
productUnit,
productID, buyPOPrice, buyPOQtyRemain FROM buyPODetail WHERE buyPOHeaderID=$id;
buyPOQty,
45
Gambar 4.3.2.2.30 Tampilan Waktu Query 15 Sesudah Denormalisasi
16. Duplikasi atribut vendorName dan buyPOCode ke tabel buyDOHeader Query SQL sebelum denormalisasi : SELECT
bdh.id,
buyDOCourier,
vendorName,
bph.buyPOCode,
buyDOCode, buyDOInfo,
buyDODate, bdh.createdBy,
bdh.editBy, bdh.lastModified, bdh.newEntry FROM buyDOHeader bdh LEFT JOIN vendor v ON bdh.vendorID = v.id LEFT JOIN buyPOHeader bph ON bdh.buyPOHeaderID = bph.id WHERE
bdh.companyID=$companyID
AND
$by
'%$search%' AND bdh.flagdel=0 AND bdh.flagstatus = 0 ORDER BY id desc;
LIKE
46
Gambar 4.3.2.2.31 Tampilan Waktu Query 16 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
id,
vendorName,
buyDOCode,
buyDODate,
buyDOCourier, buyPOCode, buyDOInfo, createdBy, editBy, lastModified, newEntry FROM buyDOHeader WHERE companyID=$companyID AND $by LIKE '%$search%' AND flagdel=0 AND flagstatus = 0 ORDER BY id desc;
47
Gambar 4.3.2.2.32 Tampilan Waktu Query 16 Sesudah Denormalisasi
17. Duplikasi atribut productName dan productUnit ke tabel buyDODetail Query SQL sebelum denormalisasi : SELECT productName, buyDOQty, productUnit FROM buyDODetail bdd LEFT JOIN product p ON bdd.productID = p.id WHERE buyDOHeaderID= $id;
48
Gambar 4.3.2.2.33 Tampilan Waktu Query 17 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT productName, buyDOQty, productUnit FROM buyDODetail WHERE buyDOHeaderID=$id;
Gambar 4.3.2.2.34 Tampilan Waktu Query 17 Sesudah Denormalisasi
49 18. Duplikasi atribut vendorName ke tabel buyInvoiceHeader Query SQL sebelum denormalisasi : SELECT i.id, buyInvoiceCode, buyInvoiceDate, i.vendorID, buyInvoiceInfo,
buyInvoiceTerm,
buyInvoiceCurrency,
buyInvoiceTotal,
buyInvoiceRemain, buyInvoiceStatus,
i.createdBy, i.editBy, i.lastModified, i.newEntry, v.vendorName FROM buyInvoiceHeader i, vendor v WHERE
i.companyID
=
$companyID
AND
$by
LIKE
'%$search%' AND i.flagdel=0 AND i.vendorID = v.id ORDER BY i.id desc;
Gambar 4.3.2.2.35 Tampilan Waktu Query 18 Sebelum Denormalisasi
50 Query SQL setelah denormalisasi : SELECT
id,
buyInvoiceCode,
buyInvoiceInfo,
buyInvoiceDate,
buyInvoiceTerm,
buyInvoiceCurrency,
buyInvoiceTotal,
vendorID,
buyInvoiceRemain, buyInvoiceStatus,
createdBy, editBy, lastModified, newEntry, vendorName FROM buyInvoiceHeader WHERE companyID=$companyID AND $by LIKE '%$search%' AND flagdel=0 ORDER BY id desc;
Gambar 4.3.2.2.36 Tampilan Waktu Query 18 Sesudah Denormalisasi
51 19. Duplikasi atribut productName dan productUnit ke tabel buyInvoiceDetail Query SQL sebelum denormalisasi : SELECT
productName,
productUnit,
buyInvoiceQty,
buyInvoicePrice FROM buyInvoiceDetail ind LEFT JOIN product p ON ind.productID = p.id WHERE buyInvoiceHeaderID= $id;
Gambar 4.3.2.2.37 Tampilan Waktu Query 19 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
productName,
buyInvoicePrice FROM buyInvoiceDetail
productUnit,
buyInvoiceQty,
52 WHERE buyInvoiceHeaderID=$id;
Gambar 4.3.2.2.38 Tampilan Waktu Query 19 Sesudah Denormalisasi
20. Duplikasi atribut vendorName dan buyInvoiceCode ke tabel buyPaymentHeader Query SQL sebelum denormalisasi : SELECT p.id, p.vendorName, buyPaymentCode, buyPaymentDate ,
buyPaymentInfo
,buyPaymentCurrency
,buyPaymentType,
buyInvoiceCode, p.createdBy, p.editBy, p.lastModified, p.newEntry FROM buyPaymentHeader p LEFT
JOIN
vendor
v
ON
p.vendorID
=
v.id
LEFT JOIN buyInvoiceHeader b ON buyInvoiceHeaderID = b.id WHERE
p.companyID=
'%$search%' AND p.flagdel=0
$companyID
AND
$by
LIKE
53 ORDER BY p.id desc;
Gambar 4.3.2.2.39 Tampilan Waktu Query 20 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT id, vendorName, buyPaymentCode, buyPaymentDate, buyPaymentInfo,
buyPaymentCurrency,
buyPaymentType,
buyInvoiceCode, createdBy, editBy, lastModified, newEntry FROM buyPaymentHeader WHERE companyID= $companyID AND $by LIKE '%$search%' ORDER BY id desc;
54
Gambar 4.3.2.2.40 Tampilan Waktu Query 20 Sesudah Denormalisasi
21. Duplikasi atribut productName dan productUnit ke tabel buyPaymentDetail Query SQL sebelum denormalisasi : SELECT d.*, productName, productUnit FROM buyPaymentDetail d LEFT JOIN Product p ON d.productID = p.id WHERE buyPaymentHeaderID= $id;
55
Gambar 4.3.2.2.41
Tampilan Waktu Query 21 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT * FROM buyPaymentDetail WHERE buyPaymentHeaderID= $id;
56
Gambar 4.3.2.2.42 Tampilan Waktu Query 21 Sesudah Denormalisasi
22. Duplikasi atribut vendorName dan buyInvoiceCode ke tabel buyReturnHeader Query SQL sebelum denormalisasi : SELECT p.id, vendorName, buyReturnCode, buyReturnDate, buyReturnInfo,
buyInvoiceCode,
p.createdBy,
p.editBy,
p.lastModified, p.newEntry FROM buyReturnHeader p LEFT JOIN vendor v ON p.vendorID = v.id LEFT JOIN buyInvoiceHeader b ON buyInvoiceHeaderID = b.id WHERE
p.companyID=
'%$search%' AND p.flagdel=0 ORDER BY p.id desc;
$companyID
AND
$by
LIKE
57
Gambar 4.3.2.2.43 Tampilan Waktu Query 22 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
id,
vendorName,
buyReturnCode,
buyReturnDate,
buyReturnInfo, buyInvoiceCode, createdBy, editBy, lastModified, newEntry FROM buyReturnHeader WHERE companyID= $companyID AND $by LIKE '%$search%' ORDER BY id desc;
58
Gambar 4.3.2.2.44 Tampilan Waktu Query 22 Sesudah Denormalisasi
23. Duplikasi atribut productName dan productUnit ke tabel buyReturnDetail Query SQL sebelum denormalisasi : SELECT
buyReturnQty,
buyReturnDetailInfo,
productName,
productUnit FROM buyReturnDetail d LEFT JOIN Product p ON d.productID = p.id WHERE
buyReturnHeaderID=
$companyID;
$id
AND
p.companyID
=
59
Gambar 4.3.2.2.45 Tampilan Waktu Query 23 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
buyReturnQty,
buyReturnDetailInfo,
productUnit FROM buyReturnDetail WHERE buyReturnHeaderID= $id;
productName,
60
Gambar 4.3.2.2.46 Tampilan Waktu Query 23 Sesudah Denormalisasi
24. Duplikasi atribut companyCategoryName ke tabel company Query SQL sebelum denormalisasi : SELECT c.id, companyName, companyAddress, companyPhone, companyFax,
cc.companyCategoryName,
companyCity,
companyPostalCode,
companyLogo,
companyBankAccount,
c.createdBy, c.editBy, c.lastModified, c.newEntry FROM company c LEFT JOIN companyCategory cc ON companyCategoryID = cc.id WHERE c.flagDel=0 AND $by LIKE '%$search%';
61
Gambar 4.3.2.2.47 Tampilan Waktu Query 24 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT id, companyName, companyAddress, companyPhone, companyFax, companyCity,
companyCategoryName, companyPostalCode,
companyBankAccount,
createdBy, editBy, lastModified, newEntry FROM company WHERE flagDel=0 AND $by LIKE '%$search%';
companyLogo,
62
Gambar 4.3.2.2.48 Tampilan Waktu Query 24 Sesudah Denormalisasi
25. Duplikasi atribut productName dan productUnit ke tabel productInDetail Query SQL sebelum denormalisasi : SELECT productName, productInQty, productUnit FROM productInDetail pid LEFT JOIN product p ON pid.productID = p.id WHERE productInHeaderID= $id;
63
Gambar 4.3.2.2.49 Tampilan Waktu Query 25 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT productName, productInQty, productUnit FROM productInDetail WHERE productInHeaderID= $id;
64
Gambar 4.3.2.2.50 Tampilan Waktu Query 25 Sesudah Denormalisasi
26. Duplikasi atribut productName dan productUnit ke tabel productOutDetail Query SQL sebelum denormalisasi : SELECT productName, productOutQty, productUnit FROM productOutDetail pid LEFT JOIN product p ON pid.productID = p.id WHERE productOutHeaderID= $id;
65
Gambar 4.3.2.2.51 Tampilan Waktu Query 26 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT productName, productOutQty, productUnit FROM productOutDetail WHERE productOutHeaderID= $id;
66
Gambar 4.3.2.2.52
Tampilan Waktu Query 26 Sesudah Denormalisasi
27. Duplikasi atribut roleName dan companyName ke tabel user Query SQL sebelum denormalisasi : SELECT u.id, userName, userEmail, u.createdBy, u.editBy, u.lastModified, u.newEntry, companyName, roleName FROM user u LEFT JOIN company c ON u.companyID = c.id LEFT JOIN role r ON u.roleID = r.id WHERE u.flagDel=0 AND $by LIKE '%$search%' ORDER BY companyID ASC;
67
Gambar 4.3.2.2.53 Tampilan Waktu Query 27 Sebelum Denormalisasi
Query SQL setelah denormalisasi : SELECT
id,
userName,
userEmail,
createdBy,
lastModified, newEntry, companyName, roleName FROM user WHERE flagDel=0 AND $by LIKE '%$search%' ORDER BY companyID ASC;
editBy,
68
Gambar 4.3.2.2.54 Tampilan Waktu Query 27 Sesudah Denormalisasi
4.3.2.3 Duplikasi Atribut Foreign Key pada Relasi one-to-many Tahapan ini dilakukan untuk mengurangi atau menghilangkan joins atau penggabungan lebih dari 1 tabel dalam query yang sering digunakan atau kritikal sehingga menghasilkan duplikasi pada 1 atau lebih atribut non-key dalam relasi one-to-many. Langkah ini tidak dilakukan karena tidak ada atribut foreign key yang perlu diduplikasi untuk menghilangkan join.
4.3.2.4 Duplikasi Atribut pada Relasi many-to-many Tahapan ini menggabungkan 3 relasi tabel yang terjadi akibat normalisasi yaitu 2 tabel entitas asli dan 1 tabel yang menghubungkan 2 entitas tersebut. Pada beberapa kondisi, tahapan ini dapat mengurangi
69 jumlah relasi yang digabungkan dengan menduplikasi atribut yang dibutuhkan. Dalam kasus ini terdapat atribut yang di duplikasi pada relasi many-to-many, yaitu atribut resourceName pada tabel resource ke tabel roleresource. Berikut ini adalah implementasi yang dilakukan : Query SQL sebelum denormalisasi : SELECT re.id, re.resourceName FROM role ro LEFT JOIN roleResource rr ON ro.id = rr.roleID LEFT JOIN resource re ON re.id = rr.resourceID WHERE ro.id = $roleID;
Gambar 4.3.2.4.1 Tampilan Waktu Query 1 Sebelum Denormalisasi
70 Query SQL setelah denormalisasi : SELECT resourceID, resourceName FROM role ro LEFT JOIN roleResource rr ON ro.id = rr.roleID WHERE ro.id = $roleID;
Gambar 4.3.2.4.2 Tampilan Waktu Query 1 Sebelum Denormalisasi
4.3.2.5 Pengulangan Grup Tahapan ini melakukan penggabungan atau pengulangan pada grup yang sudah dipisahkan saat normalisasi tingkat pertama sehingga meningkatkan efisiensi akses pada query penting atau yang sering digunakan. Langkah ini hanya dilakukan dalam kondisi banyak data maksimum yang berada di pengulangan grup diketahui dan bersifat statis,
71 serta ukuran data tidak terlalu besar. Dalam kasus ini tidak ditemukan adanya kondisi demikian sehingga tidak dilakukan.
4.3.2.6 Membuat Tabel Ekstrak Tahapan ini bertujuan untuk membuat sebuah tabel ekstrak yang berisi gabungan-gabungan data yang berasal dari beberapa tabel sekaligus dan merupakan data yang sangat sering dipanggil saat sistem sibuk sehingga meringankan kerja sistem pada saat memanggil tabel. Dalam kasus ini terdapat beberapa tabel ekstrak yang digunakan untuk melihat laporan Keluar Masuk : 1. Tabel Ekstrak untuk Surat Jalan Pembelian CREATE VIEW viewBuyDO AS SELECT bdh.companyID AS companyID, bdh.buyDOCode as code, bdh.createdBy AS createdBy, bdh.buyDODate AS transactionDate, p.productCode as productCode, p.productName AS productName, p.productUnit AS productUnit, bdd.buyDOQty AS inQty, 0 AS outQty, bdh.buyDOInfo AS info, bdh.newEntry as newEntry FROM buyDOHeader bdh RIGHT JOIN buyDODetail bdd on bdh.id = bdd.buyDOHeaderId LEFT JOIN product p on bdd.productID = p.id WHERE bdh.flagDel = 0
2. Tabel Ekstrak untuk Surat Retur Pembelian CREATE VIEW viewbuyReturn AS
72 SELECT brh.companyID AS companyID, brh.buyReturnCode as code,
brh.createdBy
AS
createdBy,
brh.buyReturnDate
AS
transactionDate, p.productCode as productCode, p.productName AS productName,
p.productUnit
brd.buyReturnQty
AS
AS
outQty,
productUnit,
0
brh.buyReturnInfo
AS
inQty,
AS
info,
brh.newEntry as newEntry FROM buyReturnHeader brh RIGHT
JOIN
buyReturnDetail
brd
on
brh.id
=
brd.buyReturnHeaderId LEFT JOIN product p on brd.productID = p.id WHERE brh.flagDel = 0
3. Tabel Ekstrak untuk Penerimaan Barang CREATE VIEW viewProductIn AS SELECT pih.companyID AS companyID, pih.productInCode as code, pih.createdBy AS createdBy, pih.productInDate AS transactionDate, p.productCode as productCode, p.productName AS productName, p.productUnit AS productUnit, pid.productInQty AS inQty, 0 AS outQty, pih.productInInfo AS info, pih.newEntry as newEntry FROM productinheader pih RIGHT JOIN productindetail pid on pih.id = pid.productInHeaderId LEFT JOIN product p on pid.productID = p.id WHERE pih.flagDel = 0
73 4. Tabel Ekstrak untuk Pengeluaran Barang CREATE VIEW viewProductOut AS SELECT poh.companyID AS companyID, poh.ProductOutCode as code,
poh.createdBy
AS
createdBy,
poh.ProductOutDate
AS
transactionDate, p.productCode AS productCode, p.productName AS productName,
p.productUnit
pod.ProductOutQty
AS
AS
outQty,
productUnit,
0
poh.ProductOutInfo
AS
inQty,
AS
info,
poh.newEntry as newEntry FROM ProductOutheader poh RIGHT
JOIN
ProductOutdetail
pod
on
poh.id
=
pod.ProductOutHeaderId LEFT JOIN product p on pod.productID = p.id WHERE poh.flagDel = 0
5. Tabel Ekstrak untuk Surat Jalan Penjualan CREATE VIEW viewsellDO AS SELECT sdh.companyID AS companyID, sdh.sellDOCode as code, sdh.createdBy AS createdBy, sdh.sellDODate AS transactionDate, p.productCode as productCode, p.productName AS productName, p.productUnit AS productUnit,0 AS inQty, sdd.sellDOQty AS outQty, sdh.sellDOInfo AS info, sdh.newEntry as newEntry FROM sellDOHeader sdh RIGHT JOIN sellDODetail sdd on sdh.id = sdd.sellDOHeaderId LEFT JOIN product p on sdd.productID = p.id
74 WHERE sdh.flagDel = 0
6. Tabel Ekstrak untuk Tagihan Penjualan CREATE VIEW viewsellInvoice AS SELECT sih.companyID AS companyID, sih.sellInvoiceCode as code,
sih.createdBy
AS
createdBy,
sih.sellInvoiceDate
AS
transactionDate, p.productCode as productCode, p.productName AS productName, p.productUnit AS productUnit, sid.sellInvoiceQty AS inQty, 0 AS outQty, sih.sellInvoiceInfo AS info, sih.newEntry as newEntry FROM sellInvoiceHeader sih RIGHT
JOIN
sellInvoiceDetail
sid
on
sih.id
=
sid.sellInvoiceHeaderId LEFT JOIN product p on sid.productID = p.id WHERE sih.flagDel = 0 AND sellInvoiceType = 'Retail'
7. Tabel Ekstrak untuk Surat Jalan Penjualan CREATE VIEW viewsellReturn AS SELECT srh.companyID AS companyID, srh.sellReturnCode as code,
srh.createdBy
AS
createdBy,
srh.sellReturnDate
AS
transactionDate, p.productCode as productCode, p.productName AS productName, p.productUnit AS productUnit, srd.sellReturnQty AS inQty, 0 AS outQty, srh.sellReturnInfo AS info, srh.newEntry as newEntry
75 FROM sellReturnHeader srh RIGHT JOIN sellReturnDetail srd on srh.id = srd.sellReturnHeaderId LEFT JOIN product p on srd.productID = p.id WHERE srh.flagDel = 0
4.3.2.7 Partisi Relasi Pendekatan alternatif yang dapat dilakukan selain menggabungkan relasi adalah mengalokasikan masalah key dengan relasi pendukung yang sangat besar (beserta indeks). Hal ini dilakukan untuk melakukan dekomposisi key menjadi jumlah yang lebih kecil dengan bagian yang lebih mudah untuk diatur yang disebut partitions. Pada aplikasi ini tidak dilakukan partisi relasi karena sebelumnya telah dilakukan denormalisasi pada database dengan membuat tabel ekstrak.
76 4.3.3 Entity Relationship Diagram (ERD) Hasil Denormalisasi
77 4.3.4 Jadwal Implementasi Berikut ini merupaka jadwal implementasi sistem mulai dari pengadaan hardware dan software yang dibutuhkan hingga evaluasi sistem. Tabel 4.3.4.1 Tabel Jadwal Implementasi Sistem Minggu ke No.
Jenis Kegiatan 1 2 3 4 5 6
1.
Pengadaan hardware dan software
2.
Instalasi hardware dan software
3.
Implementasi sistem
4.
Testing pengguna
5.
Evaluasi dan perbaikan sistem
4.3.5 Implementasi Berikut ini terdapat beberapa kasus yang dapat menjadi panduan sistem yang diimplementasi. 1. Menambahkan Pengguna Baru dari Menu Admin Admin dapat menambahkan data pengguna baru ke dalam sistem database sesuai kebutuhan dengan cara login ke dalam sistem dengan menggunakan hak akses sebagai seorang admin (Gambar 4.3.5.1).
78
Gambar 4.3.5.1 Tampilan Halaman “Beranda Admin” Pada halaman Pengguna (Gambar 4.3.5.2), terdapat sebuah tautan(link) Tambah Pengguna untuk menambahkan pengguna baru ke dalam sistem database (Gambar 4.3.5.3).
Gambar 4.3.5.2 Tampilan Halaman “Daftar Pengguna”
79
Gambar 4.3.5.3 Tampilan Halaman “Tambah Pengguna Baru” untuk Admin Pada halaman ini, admin diminta untuk mengisi data pengguna baru yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, admin dapat menekan tombol Simpan yang tersedia. Proses ini melibatkan beberapa tabel dalam database seperti yang digambarkan pada gambar 4.3.5..4.
Gambar 4.3.5.4 Tabel Database Halaman “Pengguna”
80 2. Menambahkan dan Kategori Perusahaan Baru dari Menu Admin Admin dapat menambahkan data perusahaan baru ke dalam sistem database sesuai kebutuhan dengan cara login ke dalam sistem dengan menggunakan hak akses sebagai seorang admin (Gambar 4.3.5.1). Pada halaman Perusahaan (Gambar 4.3.5.5), terdapat sebuah link Tambah Perusahaan untuk menambahkan perusahaan baru ke dalam database (Gambar 4.3.5.6).
Gambar 4.3.5.5 Tampilan Halaman “Daftar Perusahaan"
81
Gambar 4.3.5.6 Tampilan Halaman “Tambah Perusahaan Baru” Pada halaman ini, admin diminta untuk mengisi data perusahaan baru yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi benar, admin dapat menekan tombol Simpan yang tersedia. Selain menambahkan data perusahaan, seseorang dengan hak akses admin juga dapat melihat dan menambahkan data kategori perusahaan dengan mengakses halaman Tambah Kategori Perusahaan (Gambar 4.3.5.7) yang berada pada menu Kategori Perusahaan.
82
Gambar 4.3.5.7 Tampilan Halaman “Tambah Kategori Perusahaan Baru” Pada halaman ini, admin diminta untuk mengisi data kategori perusahaan baru yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, admin dapat menekan tombol Simpan yang tersedia. Keseluruhan proses ini melibatkan beberapa tabel dalam database seperti yang digambarkan pada gambar 4.3.5..8. Company PK
companyID
FK1
companyCategoryID companyCategoryName companyName companyLogo companyAddress companyPhone companyFax companyCity companyPostalCode companyBankAccount currencySymbol currencyName opnameStatus createdBy editedBy newEntry lastModified flagDel
CompanyCategory PK
companyCategoryID companyCategoryName createdBy editedBy newEntry lastModified flagDel
Gambar 4.3.5.8 Tabel Database Halaman “Perusahaan”
83 3. Membuat Peran dan Sumber Baru dari Menu Admin Admin dapat menambahkan data peran baru ke dalam sistem database untuk pengguna tertentu sesuai kebutuhan dengan cara login ke dalam sistem dengan menggunakan hak akses sebagai seorang admin (Gambar 4.3.5.1). Pada halaman Peran (Gambar 4.3.5.9), terdapat sebuah link Tambah Peran untuk menambahkan peran baru ke dalam sistem database (Gambar 4.3.5.10).
Gambar 4.3.5.9 Tampilan Halaman “Daftar Peran”
84
Gambar 4.3.5.10 Tampilan Halaman “Tambah Peran Baru” Pada halaman ini, admin diminta untuk mengisi data peran baru dan memilih sumber yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, admin dapat menekan tombol Simpan yang tersedia. Selain menambahkan data peran, seseorang dengan hak akses admin juga dapat melihat dan menambahkan data sumber yang berguna dalam penentuan peran dari pengguna dengan mengakses halaman Tambah Sumber Baru (Gambar 4.3.5.11) yang berada pada menu Sumber.
85
Gambar 4.3.5.11 Tampilan Halaman “Tambah Sumber Baru” Keseluruhan proses ini melibatkan beberapa tabel dalam database seperti yang digambarkan pada gambar 4.3.5..12.
86
Gambar 4.3.5.12 Tabel Database Halaman “Peran” dan “Sumber”
4. Memasukkan Data Barang Pengguna yang telah mendaftar dapat memasukkan data barang ke dalam sistem database sesuai kebutuhan dengan cara login ke dalam sistem dengan menggunakan akun yang memiliki hak akses sebagai pengguna biasa (Gambar 4.3.5.13).
87
Gambar 4.3.5.13 Tampilan Halaman “Beranda” untuk Pengguna Biasa
88 Setelah pengguna login, pengguna dapat membuat kategori barang terlebih dahulu dengan mengakses menu Kategori Barang. Menu Kategori Barang dapat diakses dengan cara mengarahkan pointer mouse pada menu Data Utama hingga muncul pilihan submenu di bawahnya, kemudian klik menu Kategori Barang. Cara lainnya adalah klik menu Data Utama, lalu pada halaman Data Utama (Gambar 4.3.5.14) klik menu Kategori Barang. Pada halaman Kategori Barang (Gambar 4.3.5.15), terdapat sebuah link Tambah Kategori Barang untuk memasukkan barang ke dalam sistem database (Gambar 4.3.5.16).
Gambar 4.3.5.14 Tampilan Halaman “Data Utama”
89
Gambar 4.3.5.15 Tampilan Halaman “Kategori Barang”
Gambar 4.3.5.16 Tampilan Halaman “Tambah Kategori Barang” Pada halaman ini, pengguna diminta untuk mengisi nama kategori barang yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia. Proses ini melibatkan tabel productCategory seperti yang digambarkan pada gambar 4.3.5.17.
90
Gambar 4.3.5.17 Tabel Database Halaman “Kategori Barang” Setelah kategori barang tersimpan, pengguna akan dinavigasikan kembali ke halaman Kategori Barang. Pengguna dapat kembali ke halaman Data Utama dengan mengakses link Data Utama, kemudian klik menu Barang untuk memasukkan data barang ke sistem database. Pada halaman Barang (Gambar 4.3.5.18), terdapat sebuah link Tambah Barang untuk memasukkan data barang ke dalam sistem database (Gambar 4.3.5.19).
Gambar 4.3.5.18 Tampilan Halaman “Barang”
91
Gambar 4.3.5.19 Tampilan Halaman “Tambah Barang” Pada halaman ini, pengguna diminta untuk mengisi data barang yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia. Proses ini melibatkan tabel product dan productCategory seperti yang digambarkan pada gambar 4.3.5.20.
Gambar 4.3.5.20 Tabel Database Halaman “Barang”
92 5. Memasukkan Data Pemasok dan Konsumen Pengguna biasa juga dapat memasukkan data pemasok dan konsumen ke dalam sistem database. Setelah pengguna login (Gambar 4.3.5.13), pengguna dapat mengakses menu Pemasok dengan cara mengarahkan pointer mouse pada menu Data Utama hingga muncul pilihan submenu di bawahnya, kemudian klik menu Pemasok. Cara lainnya adalah klik menu Data Utama, lalu pada halaman Data Utama (Gambar 4.3.5.14) klik menu Pemasok. Pada halaman Pemasok (Gambar 4.3.5.21), terdapat sebuah link Tambah Pemasok untuk memasukkan data pemasok ke dalam sistem database (Gambar 4.3.5.22).
Gambar 4.3.5.21 Tampilan Halaman “Pemasok”
93
Gambar 4.3.5.22 Tampilan Halaman “Tambah Pemasok” Pada halaman ini, pengguna diminta untuk mengisi data pemasok yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia. Proses ini melibatkan tabel vendor seperti yang digambarkan pada gambar 4.3.5.23.
Gambar 4.3.5.23 Tabel Database Halaman “Pemasok” Setelah data pemasok tersimpan, pengguna akan dinavigasikan kembali ke halaman Pemasok. Pengguna dapat kembali ke halaman Data Utama dengan mengakses link Data Utama, kemudian klik menu Konsumen untuk
94 menambahkan data konsumen ke sistem database. Pada halaman Konsumen (Gambar 4.3.5.24), terdapat sebuah link Tambah Konsumen untuk memasukkan data pemasok ke dalam database (Gambar 4.3.5.25).
Gambar 4.3.5.24 Tampilan Halaman “Konsumen”
Gambar 4.3.5.25 Tampilan Halaman “Tambah Konsumen”
95 Pada halaman ini, pengguna diminta untuk mengisi data konsumen yang ingin dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia. Proses ini melibatkan tabel customer seperti yang digambarkan pada gambar 4.3.5.26.
Gambar 4.3.5.26 Tabel Database Halaman “Konsumen”
6. Melakukan Transaksi Pembelian Barang Pengguna dapat melakukan transaksi pembelian barang, dimulai dengan melakukan login (Gambar 4.3.5.13), dilanjutkan dengan mengarahkan pointer mouse pada menu Pembelian hingga muncul pilihan submenu di bawahnya, kemudian klik menu Pemesanan. Cara lainnya adalah klik menu Pembelian, lalu pada halaman Pembelian (Gambar 4.3.5.27) klik menu Pemesanan sehingga muncul halaman Buat Pemesanan Pembelian (Gambar 4.3.5.28).
96
Gambar 4.3.5.27 Tampilan Halaman “Pembelian”
Gambar 4.3.5.28 Tampilan Halaman “Buat Pemesanan” Pembelian
97 Pada halaman ini, pengguna diminta mengisi data pemesanan pembelian yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.29 Tampilan Halaman “Daftar Pemesanan” Pembelian Setelah
data
pemesanan
pembelian
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Pemesanan Pembelian (Gambar 4.3.5.29). Pengguna dapat kembali membuat pemesanan pembelian dengan mengakses link Buat Pemesanan. Pengguna dapat kembali ke halaman Pembelian dengan mengakses menu Pembelian. Proses ini melibatkan tabel product, buyPOHeader, buyPODetail, dan vendor seperti yang digambarkan pada gambar 4.3.5.30.
98
Gambar 4.3.5.30 Tabel Database Halaman “Pemesanan” Pembelian Pengguna dapat melanjutkan transaksi pembelian dengan membuat surat jalan, dimulai dengan mengarahkan pointer mouse pada menu Pembelian hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Surat Jalan. Cara lainnya adalah klik pada menu Pembelian, lalu pada halaman Pembelian (Gambar 4.3.5.27) klik menu Surat Jalan sehingga muncul halaman Buat Surat Jalan (Gambar 4.3.5.31).
99
Gambar 4.3.5.31 Tampilan Halaman “Buat Surat Jalan” Pembelian Pada halaman ini, pengguna diminta mengisi data surat jalan pembelian yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.32 Tampilan Halaman “Daftar Surat Jalan” Pembelian
100 Setelah
data
surat
jalan
pembelian
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Surat Jalan Pembelian (Gambar 4.3.5.32). Pengguna dapat kembali membuat surat jalan pembelian dengan mengakses link Buat Surat Jalan. Pengguna dapat kembali ke halaman Pembelian dengan mengakses menu Pembelian. Proses ini melibatkan tabel buyPOHeader, buyPODetail, buyDOHeader, dan buyDODetail seperti yang digambarkan pada gambar 4.3.5.33. BuyDOHeader
BuyPOHeader PK
PK
buyPOHeaderID companyID vendorID vendorName buyPOCode buyPOdate buyPOInfo buyPOTerm BuyPOAddress buyPOcurrency createdBy editedBy newEntry lastModified flagDel flagStatus
FK1
buyDOHeaderID companyID buyPOHeaderID vendorID vendorName buyPOCode buyDOCode buyDODate buyDOCourier buyDOInfo createdBy editedBy newEntry lastModified flagDel flagDelStatus
BuyPODetail PK
buyPODetailID
FK1
buyPOHeaderID productID productName productUnit buyPOQty buyPOPrice buyPOQtyRemain
BuyDODetail PK
buyDODetailID
FK1
buyDOHeaderID productID productName productUnit buyDOQty
Gambar 4.3.5.33 Tabel Database Halaman “Surat Jalan” Pembelian Pengguna dapat melanjutkan transaksi pembelian dengan membuat tagihan pembelian, dimulai dengan mengarahkan pointer mouse pada menu Pembelian hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Tagihan. Cara lainnya adalah klik pada menu Pembelian, lalu
101 pada halaman Pembelian (Gambar 4.3.5.27) klik menu Tagihan sehingga muncul halaman Buat Tagihan (Gambar 4.3.5.34).
Gambar 4.3.5.34 Tampilan Halaman “Buat Tagihan” Pembelian Pada halaman ini, pengguna diminta mengisi data tagihan pembelian yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
102
Gambar 4.3.5.35 Tampilan Halaman “Daftar Tagihan” Pembelian Setelah data tagihan pembelian tersimpan, pengguna akan dinavigasikan pada halaman Daftar Tagihan Pembelian (Gambar 4.3.5.35). Pengguna dapat kembali membuat tagihan pembelian dengan mengakses link Buat Tagihan. Pengguna dapat kembali ke halaman Pembelian dengan mengakses menu Pembelian. Proses ini melibatkan tabel buyPOHeader, buyPODetail, buyDOHeader, buyDODetail, buyInvoiceHeader, dan buyInvoiceDetail seperti yang digambarkan pada gambar 4.3.5.36.
103
Gambar 4.3.5.36 Tabel Database Halaman “Tagihan” Pembelian Pengguna dapat melanjutkan transaksi pembelian dengan membuat pembayaran pembelian, dimulai dengan mengarahkan pointer mouse pada menu Pembelian hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Pembayaran. Cara lainnya adalah klik pada menu Pembelian, lalu pada halaman Pembelian (Gambar 4.3.5.27) klik menu Pembayaran sehingga muncul halaman Buat Pembayaran (Gambar 4.3.5.37).
104
Gambar 4.3.5.37 Tampilan Halaman “Buat Pembayaran” Pembelian Pada halaman ini, pengguna diminta mengisi data pembayaran pembelian yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.38 Tampilan Halaman “Daftar Pembayaran” Pembelian
105 Setelah
data
pembayaran
pembelian
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Pembayaran Pembelian (Gambar 4.3.5.38). Pengguna dapat kembali membuat pembayaran pembelian dengan mengakses link Buat Pembayaran. Pengguna dapat kembali ke halaman Pembelian dengan mengakses menu Pembelian. Proses ini melibatkan tabel buyInvoiceHeader, buyInvoiceDetail, buyPaymentHeader, dan buyPaymentDetail seperti yang digambarkan pada gambar 4.3.5.39.
Gambar 4.3.5.39 Tabel Database Halaman “Pembayaran” Pembelian Pengguna dapat melanjutkan transaksi pembelian apabila terdapat retur pembelian dengan mengarahkan pointer mouse pada menu Pembelian hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu
106 Tagihan. Cara lainnya adalah klik pada menu Pembelian, lalu pada halaman Pembelian (Gambar 4.3.5.27) klik menu Retur sehingga muncul halaman Buat Retur (Gambar 4.3.5.40).
Gambar 4.3.5.40 Tampilan Halaman “Buat Retur” Pembelian Pada halaman ini, pengguna diminta mengisi data retur pembelian yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
107
Gambar 4.3.5.41 Tampilan Halaman “Daftar Retur” Pembelian Setelah data retur pembelian tersimpan, pengguna akan dinavigasikan pada halaman Daftar Retur Pembelian (Gambar 4.3.5.41). Pengguna dapat kembali membuat retur pembelian dengan mengakses link Buat Retur. Pengguna dapat kembali ke halaman Pembelian dengan mengakses menu Pembelian. Proses ini melibatkan tabel buyInvoiceHeader, buyInvoiceDetail, buyReturnHeader, dan buyReturnDetail seperti yang digambarkan pada gambar 4.3.5.42.
108
Gambar 4.3.5.42 Tabel Database Halaman “Retur” Pembelian
7. Melakukan Transaksi Penjualan Barang Pengguna dapat melakukan transaksi penjualan barang, dimulai dengan melakukan login (Gambar 4.3.5.13), dilanjutkan dengan mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik menu Penawaran. Cara lainnya adalah klik menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Pemesanan sehingga muncul halaman Buat 4.3.5.44).
Penawaran (Gambar
109
Gambar 4.3.5.43 Tampilan Halaman “Penjualan”
Gambar 4.3.5.44 Tampilan Halaman “Buat Penawaran” Penjualan Pada halaman ini, pengguna diminta mengisi data penawaran penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
110
Gambar 4.3.5.45 Tampilan Halaman “Daftar Penawaran” Penjualan Setelah
data
penawaran
penjualan
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Penawaran (Gambar 4.3.5.45). Pengguna dapat kembali membuat penawaran penjualan dengan mengakses link Buat Penawaran. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses ini melibatkan tabel product, customer, OfferingDetail, dan offeringHeader seperti yang digambarkan pada gambar 4.3.5.46.
111
Gambar 4.3.5.46 Tabel Database Halaman “Penawaran” Penjualan Pengguna dapat melanjutkan transaksi penjualan dengan membuat pemesanan penjualan, dimulai dengan mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Pemesanan. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Pemesanan sehingga muncul halaman Buat Pemesanan (Gambar 4.3.5.47).
112
Gambar 4.3.5.47 Tampilan Halaman “Buat Pemesanan” Penjualan Pada halaman ini, pengguna diminta mengisi data pemesanan penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
113
Gambar 4.3.5.48 Tampilan Halaman “Daftar Pemesanan” Penjualan Setelah
data
pemesanan
penjualan
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Pemesanan Penjualan (Gambar 4.3.5.48). Pengguna dapat kembali membuat pemesanan penjualan dengan mengakses link Buat Pemesanan. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses ini melibatkan tabel product, customer, sellPOHeader, dan sellPODetail seperti yang digambarkan pada gambar 4.3.5.49.
114
Gambar 4.3.5.49 Tabel Database Halaman “Pemesanan” Penjualan Pengguna dapat melanjutkan transaksi penjualan dengan membuat surat jalan penjualan, dimulai mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Surat Jalan. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Pemesanan sehingga muncul halaman Buat Pemesanan (Gambar 4.3.5.50).
115
Gambar 4.3.5.50 Tampilan Halaman “Buat Surat Jalan” Penjualan Pada halaman ini, pengguna diminta mengisi data surat jalan penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.51 Tampilan Halaman “Daftar Surat Jalan” Penjualan
116 Setelah
data
surat
jalan
penjualan
tersimpan,
pengguna
akan
dinavigasikan pada halaman Daftar Surat Jalan Penjualan (Gambar 4.3.5.51). Pengguna dapat kembali membuat surat jalan penjualan dengan mengakses link Buat Surat Jalan. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses ini melibatkan tabel sellPOHeader, sellPODetail, sellDOHeader, dan sellDODetail seperti yang digambarkan pada gambar 4.3.5.52.
Gambar 4.3.5.52 Tabel Database Halaman “Surat Jalan” Penjualan Pengguna dapat melanjutkan transaksi penjualan dengan membuat tagihan penjualan, dimulai dengan mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik
117 pada menu Tagihan. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Tagihan sehingga muncul halaman Buat Tagihan (Gambar 4.3.5.53).
Gambar 4.3.5.53 Tampilan Halaman “Buat Tagihan” Penjualan Pada halaman ini, pengguna diminta mengisi data tagihan penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
118
Gambar 4.3.5.54 Tampilan Halaman “Daftar Tagihan” Penjualan Setelah data tagihan penjualan tersimpan, pengguna akan dinavigasikan pada halaman Daftar Tagihan Penjualan (Gambar 4.3.5.54). Pengguna dapat kembali membuat tagihan penjualan dengan mengakses link Buat Tagihan. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses ini melibatkan tabel sellPOHeader, sellPODetail, sellDOHeader, sellDODetail, sellInvoiceHeader, dan sellInvoiceDetail seperti yang digambarkan pada gambar 4.3.5.55.
119 SellPOHeader PK
sellPOHeaderID companyID customerID customerName sellPOCode sellPODate sellPOInfo sellPOTerm sellPOAddress sellPOCurrency createdBy editedBy newEntry lastModified flagDel flagStatus
FK1
PK
FK2 FK1
sellPODetailID sellPOHeaderID productID productName productUnit sellPOQty sellPOPrice sellPOQtyRemain
SellDOHeaderID
FK1
companyID sellPOHeaderID customerID customerName sellDOCode sellPOCode sellDODate sellDOInfo sellDOCourier createdBy editedBy newEntry lastModified flagDel flagStatus
PK
FK1
sellInvoiceHeaderID companyID SellDOHeaderID sellDOCode customerID customerName sellInvoiceCode sellInvoiceDate sellInvoiceInfo sellInvoiceTerm sellInvoiceRemain sellInvoiceStatus sellInvoiceCurrency sellPaymentPaid sellInvoiceTotal createdBy editedBy newEntry lastModified flagDel customerNameCashier sellInvoiceType sellInvoiceReturnStatus flagStatus
SellDODetail
SellPODetail PK
sellInvoiceHeader
SellDOHeader
PK FK1
sellDODetailID sellDOHeaderID productID productName productUnit sellDOQty
SellInvoiceDetail PK
sellInvoiceDetailID
FK1
productID productName productUnit sellInvoiceHeaderID sellInvoicePrice sellInvoiceQty sellReturnQtyRemain
Gambar 4.3.5.55 Tabel Database Halaman “Tagihan” Penjualan Pengguna dapat melanjutkan transaksi penjualan dengan membuat pembayaran penjualan, dimulai dengan mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Pembayaran. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Pembayaran sehingga muncul halaman Buat Pembayaran (Gambar 4.3.5.56).
120
Gambar 4.3.5.56 Tampilan Halaman “Buat Pembayaran” Penjualan Pada halaman ini, pengguna diminta mengisi data pembayaran penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.57 Tampilan Halaman “Daftar Pembayaran” Penjualan
121 Setelah data pembayaran penjualan tersimpan, pengguna akan dinavigasikan pada halaman Daftar Pembayaran Penjualan (Gambar 4.3.5.57). Pengguna dapat kembali membuat pembayaran penjualan dengan mengakses link Buat Pembayaran. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses ini melibatkan tabel sellInvoiceHeader, sellInvoiceDetail, sellPaymentHeader, dan sellPaymentDetail seperti yang digambarkan pada gambar 4.3.5.58.
Gambar 4.3.5.58 Tabel Database Halaman “Pembayaran” Penjualan
122 Pengguna dapat melanjutkan transaksi penjualan apabila terdapat retur penjualan dengan mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Retur. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Retur sehingga muncul halaman Buat Retur (Gambar 4.3.5.59).
Gambar 4.3.5.59 Tampilan Halaman “Buat Retur” Penjualan
123 Pada halaman ini, pengguna diminta mengisi data retur penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Simpan yang tersedia.
Gambar 4.3.5.60 Tampilan Halaman “Daftar Retur” Penjualan Setelah data retur penjualan tersimpan, pengguna akan dinavigasikan pada halaman Daftar Retur Penjualan (Gambar 4.3.5.60). Pengguna dapat kembali membuat pembayaran penjualan dengan mengakses link Buat Retur. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses
ini
melibatkan
tabel
sellInvoiceHeader,
sellInvoiceDetail,
sellReturnHeader, dan sellReturnDetail seperti yang digambarkan pada gambar 4.3.5.61.
124 sellInvoiceHeader PK
SellReturnHeader
sellInvoiceHeaderID
FK1
companyID SellDOHeaderID sellDOCode customerID customerName sellInvoiceCode sellInvoiceDate sellInvoiceInfo sellInvoiceTerm sellInvoiceRemain sellInvoiceStatus sellInvoiceCurrency sellPaymentPaid sellInvoiceTotal createdBy editedBy newEntry lastModified flagDel customerNameCashier sellInvoiceType sellInvoiceReturnStatus flagStatus
PK
sellReturnHeaderID
FK1
sellInvoiceHeaderID companyID sellInvoiceCode customerName sellReturnCode sellReturnDate sellReturnInfo createdBy editedBy newEntry lastModified flagDel
SellReturnDetail PK
sellReturnDetailID
SellInvoiceDetail PK
sellInvoiceDetailID
FK1
productID productName productUnit sellInvoiceHeaderID sellInvoicePrice sellInvoiceQty sellReturnQtyRemain
FK1
productID productName productUnit sellReturnHeaderID sellReturnQty SellReturnDetailInfo
Gambar 4.3.5.61 Tabel Database Halaman “Retur” Penjualan Pengguna
dapat
melakukan
transaksi
penjualan
eceran
dengan
mengarahkan pointer mouse pada menu Penjualan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Kasir. Cara lainnya adalah klik pada menu Penjualan, lalu pada halaman Penjualan (Gambar 4.3.5.43) klik menu Retur sehingga muncul halaman Buat Bon (Gambar 4.3.5.62).
125
Gambar 4.3.5.62 Tampilan Halaman “Buat Bon” Penjualan Pada halaman ini, pengguna diminta mengisi data kasir penjualan yang akan dimasukkan ke dalam sistem database. Setelah semua data terisi dengan benar, pengguna dapat menekan tombol Buat yang tersedia.
Gambar 4.3.5.63 Tampilan Halaman “Pembayaran Bon” Penjualan
126 Pada tahap selanjutnya akan muncul kolom total serta kolom pembayaran yang dibayarkan oleh pelanggan. Setelah kolom pembayaran terisi, pengguna dapat melanjutkan dengan menekan tombol Bayar, lalu akan dimunculkan kembalian pembayaran. Pengguna perlu menekan tombol Simpan yang tersedia untuk mengakhiri transaksi.
Gambar 4.3.5.64 Tampilan Halaman “Daftar Bon” Penjualan Setelah data retur penjualan tersimpan, pengguna akan dinavigasikan pada halaman Daftar Bon Penjualan (Gambar 4.3.5.60). Pengguna dapat kembali membuat pembayaran penjualan dengan mengakses link Buat Bon. Pengguna dapat kembali ke halaman Penjualan dengan mengakses menu Penjualan. Proses
ini
melibatkan
tabel
sellInvoiceHeader,
sellInvoiceDetail,
sellReturnHeader, dan sellReturnDetail seperti yang digambarkan pada gambar 4.3.5.61.
127 sellInvoiceHeader PK
sellInvoiceHeaderID SellPaymentHeader
FK1
companyID SellDOHeaderID sellDOCode customerID customerName sellInvoiceCode sellInvoiceDate sellInvoiceInfo sellInvoiceTerm sellInvoiceRemain sellInvoiceStatus sellInvoiceCurrency sellPaymentPaid sellInvoiceTotal createdBy editedBy newEntry lastModified flagDel customerNameCashier sellInvoiceType sellInvoiceReturnStatus flagStatus
PK
FK1
sellPaymentHeaderID companyID sellInvoiceHeaderId customerID customerName sellInvoiceCode sellPaymentCode sellPaymentDate sellPaymentInfo sellPaymentType sellPaymentCurrency sellPaymentPaid customerNameCashier createdBy editedBy newEntry lastModified flagDel
SellPaymentDetail SellInvoiceDetail PK
sellInvoiceDetailID
FK1
productID productName productUnit sellInvoiceHeaderID sellInvoicePrice sellInvoiceQty sellReturnQtyRemain
PK
FK1
sellPaymentDetailID productID productName productUnit sellPaymentHeaderID sellPaymentPrice sellPaymentQty
Gambar 4.3.5.65 Tabel Database Halaman “Kasir” Penjualan
8. Melihat Stok Barang dan Melakukan Stok Opname Pengguna dapat melihat stok barang dengan mengarahkan pointer mouse ke menu Inventaris hingga muncul pilihan submenu di bawahnya, kemudian klik menu Lihat Stok. Cara lainnya adalah klik menu Inventaris, lalu pada halaman Inventaris (Gambar 4.3.5.66) klik menu Lihat Stok dan akan muncul halaman Lihat Stok (Gambar 4.3.5.67).
128
Gambar 4.3.5.66 Tampilan Halaman “Inventaris”
Gambar 4.3.5.67 Tampilan Halaman “Lihat Stok”
129 Pengguna juga dapat melakukan stok opname dengan mengarahkan pointer mouse pada menu Inventaris, kemudian pada halaman Inventaris klik menu Stok Opname. Pada halaman Stok Opname (Gambar 4.3.5.68), akses link Ubah Stok untuk berpindah ke halaman Ubah Stok (Gambar 4.3.5.69). Setelah Pengguna mengisi data stok opname, pengguna dapat menekan tombol Simpan. Pada halaman Stok Opname, terlihat data stok baru yang ditandai dengan warna merah dan keterangan opname dari barang tersebut (Gambar 4.3.5.70). Data stok barang akan diperbaharui setelah pengguna menekan tombol verifikasi.
Pengguna juga dapat mencetak
laporan formulir stok opname untuk melakukan stok opname secara manual dengan mengakses link Cetak Formulir Stok.
Gambar 4.3.5.68 Tampilan Halaman “Stok Opname”
130
Gambar 4.3.5.69 Tampilan Halaman “Ubah Stok”
Gambar 4.3.5.70 Tampilan Halaman “Stok Opname” yang Belum Diverifikasi Proses ini melibatkan tabel product dan company seperti yang digambarkan pada gambar 4.3.5.71.
131
Gambar 4.3.5.71 Tabel Database pada Halaman “Lihat Stok” dan “Stok Opname”
9. Mencetak Laporan-Laporan Pengguna dapat mencetak laporan – laporan hasil transaksi, antara lain : a. Laporan Stok Pengguna dapat mencetak laporan stok dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Stok, dan akan muncul halaman baru Laporan Stok (Gambar 4.3.5.72).
132
Gambar 4.3.5.72 Tampilan Halaman “Laporan Stok” Proses ini melibatkan tabel product seperti yang digambarkan pada gambar 4.3.5.73
Gambar 4.3.5.73 Tabel Database Halaman “Laporan Stok”
133 b. Laporan Inventaris Pengguna dapat mencetak laporan inventaris dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Inventaris, dan akan muncul halaman baru Laporan Inventaris (Gambar 4.3.5.74).
Gambar 4.3.5.74 Tampilan Halaman “Laporan Inventaris” Proses ini melibatkan tabel product seperti yang digambarkan pada gambar 4.3.5.75
134
Gambar 4.3.5.75 Tabel Database Halaman “Laporan Inventaris”
c. Laporan Penjualan Pengguna dapat mencetak laporan penjualan dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Penjualan, dan akan muncul halaman baru Pemilihan Laporan Penjualan (Gambar 4.3.5.76).
Gambar 4.3.5.76 Tampilan Halaman Pemilihan “Laporan Penjualan”
135 Pengguna akan diminta memasukkan parameter bulan dan tahun untuk laporan penjualan, kemudian pengguna dapat menekan tombol Lihat sehingga muncul halaman Laporan Penjualan (Gambar 4.3.5.77).
Gambar 4.3.5.77 Tampilan Halaman “Laporan Penjualan” Proses ini melibatkan tabel sellInvoiceHeader seperti yang digambarkan pada gambar 4.3.5.78
Gambar 4.3.5.78 Tabel Database Halaman “Laporan Penjualan”
136 d. Laporan Pembelian Pengguna dapat mencetak laporan penjualan dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Pembelian, dan akan muncul halaman baru Pemilihan Laporan Pembelian (Gambar 4.3.5.79).
Gambar 4.3.5.79 Tampilan Halaman Pemilihan “Laporan Pembelian” Pengguna akan diminta memasukkan parameter bulan dan tahun untuk laporan pembelian, kemudian pengguna dapat menekan tombol Lihat sehingga muncul halaman Laporan Pembelian (Gambar 4.3.5.80).
137
Gambar 4.3.5.80 Tampilan Halaman Laporan Pembelian Proses ini melibatkan tabel buyInvoiceHeader seperti yang digambarkan pada gambar 4.3.5.81
Gambar 4.3.5.81 Tabel Database Halaman “Laporan Pembelian”
138 e. Laporan Penerimaan Pengguna dapat mencetak laporan penerimaan barang dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Penerimaan, dan akan muncul halaman baru Pemilihan Laporan Penerimaan (Gambar 4.3.5.82).
Gambar 4.3.5.82 Tampilan Halaman Pemilihan “Laporan Penerimaan” Pengguna akan diminta memasukkan parameter bulan dan tahun untuk laporan penerimaan, kemudian pengguna dapat menekan tombol Lihat sehingga muncul halaman Laporan Penerimaan (Gambar 4.3.5.83).
139
Gambar 4.3.5.83 Tampilan Halaman “Laporan Penerimaan” Proses ini melibatkan tabel productInHeader seperti yang digambarkan pada gambar 4.3.5.84
Gambar 4.3.5.84 Tabel Database Halaman “Laporan Penerimaan”
f. Laporan Pengeluaran Pengguna dapat mencetak laporan pengeluaran barang dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan
submenu
di
bawahnya,
kemudian
klik
pada
menu
Pengeluaran, dan akan muncul halaman baru Pemilihan Laporan Pengeluaran (Gambar 4.3.5.85).
140
Gambar 4.3.5.85 Tampilan Halaman Pemilihan “Laporan Pengeluaran” Pengguna akan diminta memasukkan parameter bulan dan tahun untuk laporan pengeluaran, kemudian pengguna dapat menekan tombol Lihat sehingga muncul halaman Laporan Pengeluaran (Gambar 4.3.5.86).
Gambar 4.3.5.86 Tampilan Halaman “Laporan Pengeluaran”
141 Proses ini melibatkan tabel productOutHeader seperti yang digambarkan pada gambar 4.3.5.87
Gambar 4.3.5.87 Tabel Database Halaman “Laporan Pengeluaran”
g. Laporan Keluar Masuk Barang Pengguna dapat mencetak laporan keluar masuk barang dengan mengarahkan pointer mouse pada menu Laporan hingga muncul pilihan submenu di bawahnya, kemudian klik pada menu Keluar Masuk, dan akan muncul halaman baru Pemilihan Laporan Keluar Masuk Barang (Gambar 4.3.5.88).
Gambar 4.3.5.88 Tampilan Halaman Pemilihan “Laporan Keluar Masuk Barang”
142 Pengguna akan diminta memasukkan parameter bulan dan tahun untuk laporan keluar masuk barang, kemudian pengguna dapat menekan tombol Lihat sehingga muncul halaman Laporan Keluar Masuk barang (Gambar 4.3.5.89).
Gambar 4.3.5.89 Tampilan Halaman “Laporan Keluar Masuk Barang” Proses ini melibatkan tabel productInHeader, productInDetail, productOutHeader, productOutDetail, buyDOHeader, buyDODetail, sellDOHeader, sellDODetail, buyReturnHeader, buyReturnDetail, sellReturnHeader,
sellReturnDetail,
sellInvoiceHeader,
sellInvoiceDetail seperti yang digambarkan pada gambar 4.3.5.90
dan
143
Gambar 4.3.5.90 Tabel Database Halaman “Laporan Keluar Masuk Barang”
144 4.4
Hasil Kuisioner Uji Coba Aplikasi 1. Apakah aplikasi ini mudah digunakan? Tabel 4.4.1 Tabel Kuisioner Penggunaan Aplikasi 1 Keterangan
Responden
Presentase
Ya
14
47%
Cukup
14
47%
Tidak
2
6%
Ya Cukup Tidak
Gambar 4.4.1 Diagram Hasil Pertanyaan 1
2. Apakah aplikasi ini membantu proses bisnis anda? Tabel 4.4.2 Tabel Kuisioner Penggunaan Aplikasi 2 Keterangan
Responden
Presentase
Ya
16
53%
Cukup
12
40%
Tidak
2
7%
145
Ya Cukup Tidak
Gambar 4.4.2 Diagram Hasil Pertanyaan 2
3. Apakah aplikasi ini mempermudah anda dalam proses pengalokasian barang? Tabel 4.4.3 Tabel Kuisioner Penggunaan Aplikasi 3 Keterangan
Responden
Presentase
Ya
16
54%
Cukup
13
43%
Tidak
1
3%
Ya Cukup Tidak
Gambar 4.4.3 Diagram Hasil Pertanyaan 3
146 4. Apakah aplikasi ini mempermudah pencarian data transaksi maupun barang anda? Tabel 4.4.4 Tabel Kuisioner Penggunaan Aplikasi 4 Keterangan
Responden
Presentase
Ya
23
77%
Cukup
7
23%
Tidak
0
0%
Ya Cukup Tidak
Gambar 4.4.4 Diagram Hasil Pertanyaan 4
5. Apakah aplikasi ini mempermudah anda dalam pengecekan stok barang ( stok opname ) ? Tabel 4.3.5 Tabel Kuisioner Penggunaan Aplikasi 5 Keterangan
Responden
Presentase
Ya
23
77%
Cukup
6
20%
147 Tidak
1
3%
Ya Cukup Tidak
Gambar 4.4.5 Diagram Hasil Pertanyaan 5 6. Apakah fitur yang terdapat pada sistem aplikasi ini sudah memenuhi kebutuhan proses bisnis anda? Tabel 4.4.6 Tabel Kuisioner Penggunaan Aplikasi 6 Keterangan
Responden
Presentase
Ya
15
50%
Cukup
15
50%
Tidak
0
0%
148
Ya Cukup Tidak
Gambar 4.4.6 Diagram Hasil Pertanyaan 6
7. Apakah aplikasi ini meningkatkan kinerja anda? Tabel 4.4.7 Tabel Kuisioner Penggunaan Aplikasi 7 Keterangan
Responden
Presentase
Ya
15
50%
Cukup
14
47%
Tidak
1
3%
Ya Cukup Tidak
Gambar 4.4.7 Diagram Hasil Pertanyaan 7
149 8. Apakah laporan yang disediakan aplikasi ini sudah memenuhi keinginan anda, seperti laporan stok barang, penerimaan, dan pengeluaran? Tabel 4.4.8 Tabel Kuisioner Penggunaan Aplikasi 8 Keterangan
Responden
Presentase
Ya
11
37%
Cukup
16
53%
Tidak
3
10%
Ya Cukup Tidak
Gambar 4.4.8 Diagram Hasil Pertanyaan 8
9. Apakah tampilan aplikasi ini sudah menarik? Tabel 4.4.9 Tabel Kuisioner Penggunaan Aplikasi 9 Keterangan
Responden
Presentase
Ya
15
50%
Cukup
15
50%
Tidak
0
0%
150
Ya Cukup Tidak
Gambar 4.4.9 Diagram Hasil Pertanyaan 9
10. Apakah penggunaan aplikasi ini membantu mengurangi human-error pada setiap pencatatan transaksinya? Tabel 4.4.10 Tabel Kuisioner Penggunaan Aplikasi 10 Keterangan
Responden
Presentase
Ya
17
56%
Cukup
11
37%
Tidak
2
7%
Ya Cukup Tidak
Gambar 4.4.10 Diagram Hasil Pertanyaan 10
151 4.5
Evaluasi Kuisioner Uji Coba Aplikasi Setelah melakukan implementasi dan testing sistem pada beberapa sampel UKM, hasil evaluasi yang kami temukan mengenai kelebihan dan kekurangan dari sistem yang dikembangkan antara lain sebagai berikut. Kelebihan sistem yang dikembangkan: 1. User Interface/tampilan yang digunakan pada sistem cukup sederhana dan mudah dimengerti. 2. Sistem membantu pengguna dalam pencatatan data pemesanan, pembelian dan penjualan. 3. Sistem membantu pengguna dalam pencarian data barang, pemasok, konsumen, maupun data transaksi pembelian-penjualan. 4. Sistem membantu pengguna dalam pencetakan laporan bulanan yang dibutuhkan. 5. Sistem membantu mengurangi terjadinya kesalahan dalam pembuatan laporan. 6. Berkurangnya resiko kehilangan data akibat kerusakan harddisk atau kehilangan bon karena data telah tersimpan di Internet.
Kekurangan sistem yang dikembangkan: 1. Belum sepenuhnya memenuhi kebutuhan informasi setiap UKM secara spesifik. 2. Pengoperasian yang ada terkadang sedikit menyulitkan pengguna karena belum terbiasa dengan sistem yang terkomputerisasi. 3. Sistem sangat bergantung pada Internet.
152 4.6 Evaluasi 8 (Delapan) Aturan Emas IMK Berikut ini adalah evaluasi berdasarkan 8 aturan emas yang dilakukan terhadap tampilan aplikasi. 1. Mempertahankan konsistensi Aplikasi yang dikembangkan sudah memenuhi konsistensi dalam penggunaan istilah-istilah serupa, menu-menu, layar, bantuan, warna, rancangan, huruf kapital, dan jenis huruf.
Gambar 4.6.1 Gambar Evaluasi Aturan IMK Pertama
153 2. Melayani universal usability Aplikasi memfasilitasi pengguna untuk menyampaikan kebutuhannya pada sistem dengan jelas dan mudah dimengerti.
Gambar 4.6.2 Gambar Evaluasi Aturan IMK Kedua
3. Memberikan umpan balik yang informatif Aplikasi memberikan umpan balik yang informatif atas aksi-aksi pengguna, misalnya seperti peringatan bahwa kata sandi tidak boleh kosong saat login.
Gambar 4.6.3 Gambar Evaluasi Aturan IMK Ketiga
154 4. Perancangan dialog untuk menunjukkan penutupan / akhir Aplikasi memberikan dialog yang menunjukkan bahwa suatu aksi telah selesai atau berhasil dilakukan.
Gambar 4.6.4 Gambar Evaluasi Aturan IMK Keempat
5. Pencegahan Kesalahan Aplikasi memberikan peringatan apabila pengguna melakukan aksi hapus sehingga dapat meminimalisasi kesalahan yang mungkin terjadi.
Gambar 4.6.5 Gambar Evaluasi Aturan IMK Kelima
155
6. Mengizinkan pembalikkan aksi yang mudah Aplikasi Insolo menyediakan tombol batal untuk membatalkan aksi dalam pembuatan transaksi.
Gambar 4.6.6 Gambar Evaluasi Aturan IMK Keenam
7. Mendukung pusat kendali internal Pada aplikasi dapat mengakses menu apapun darimana saja, sehingga mendukung pusat kendali internal untuk pengguna.
Gambar 4.6.7 Gambar Evaluasi Aturan IMK Ketujuh
156 8. Mengurangi beban ingatan jangka pendek Tampilan aplikasi dapat mengurangi beban ingatan jangka pendek dengan memberikan nama perintah yang sederhana dan jelas serta letaknya konsisten. Contohnya seperti perintah Tambah Barang dan perintah Tambah Kategori Barang.
Gambar 4.6.8 Gambar Evaluasi Aturan IMK Kedelapan
L4