PENGGUNAAN ORACLE DEVELOPER UNTUK IMPLEMENTASI SISTEM INFORMASI PENJUALAN DAN INVENTORI BERBASIS WEB (Studi Kasus di PT. Sanitas - Cirebon) SKRIPSI Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika Oleh: Nama : Cordelia Lajamarta NIM : 015314025 JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2007
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
PENGGUNAAN ORACLE DEVELOPER UNTUK IMPLEMENTASI
SISTEM INFORMASI PENJUALAN DAN INVENTORI BERBASIS WEB
(Studi Kasus di PT. Sanitas - Cirebon)
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh:
Nama : Cordelia Lajamarta
NIM : 015314025
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
THE USE OF ORACLE DEVELOPER FOR IMPLEMENTATION
OF WEB-BASED SALES AND INVENTORY INFORMATION SYSTEM
(Case Study at PT. Sanitas - Cirebon)
A THESIS
Presented as a Partial Fulfillment
To Obtain a Bachelor of Technic Degree
Informatics Engineering Study Program
By:
Name : Cordelia Lajamarta
NIM : 015314025
INFORMATICS ENGINEERING STUDY PROGRAM
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
v
HALAMAN PERSEMBAHAN
Karya ini kupersembahkan kepada
My Lord Jesus Christ…
Papa dan Mama di surga,
Kedua kakakku Cie Nonie dan Ko Herry
Teman-temanku Nana, Welly, Yosep, Nope, Diana,
Fenny, Vino, Grace, dan sahabat-sahabatku
lainnya…
vi
HALAMAN MOTO
Nilai seseorang bukan hanya dilihat dari Prestasi dan harta benda yang dimiliki
tetapi juga dari Kebaikan, Ketulusan, Kerendahan dan Kebesaran Hati.
Kegagalan bukanlah akhir dari segalanya tapi jadikan kegagalan sebagai awal
usaha yang baru
Kesalahan terbesar yang dapat dilakukan oleh umat manusia adalah merasa takut
melakukan kesalahan (Abbert Hubbard).
Jangan menunggu, waktu tidak pernah “benar-benar” tepat mulailah dari tempat
anda berhenti sekarang dan bekerjalah dengan menggunakan alat apapun yang
anda miliki, dan alat-alat yang lebih baik akan ditemukan saat anda melakukan
pekerjaan anda.(Napoleon Hill)
Pikiran yang paling menghancurkan diri sendiri yang bisa dimiliki oleh setiap orang
adalah bahwa dia tidak memegang kendali atas hidupnya sendiri (Roger Dawson).
Sebelum kau berdamai dengan jati dirimu, kau tidak akan pernah merasa puas
dengan apa yang kau miliki (Dorris Mortman).
vii
ABSTRAKSI
Selama ini pencatatan transaksi penjualan, retur penjualan, dan inventori
dilakukan secara manual oleh staff penjualan dan inventori, sehingga untuk
memperoleh informasi ini dibutuhkan waktu yang lama. Oleh karena itu, perlu
dikembangkan suatu sistem yang dapat digunakan untuk membantu kegiatan
operasional perusahaan meliputi transaksi penjualan, retur penjualan, dan inventori
agar mampu menghasilkan dan mengolah informasi penjualan dan inventori secara
cepat, tepat, dan akurat.
Sistem ini dikembangkan dengan menggunakan metode Rekayasa Perangkat
Lunak secara terstruktur, dengan menggunakan DBMS Oracle XE, dan
menggunakan Oracle Developer sebagai piranti pengembangnya. Oracle XE
digunakan karena Oracle merupakan DBMS yang cukup reliable dan bersifat
freeware.
Hasil akhir yang diperoleh adalah sebuah sistem informasi penjualan &
inventori berbasis web, yang mampu menerima dan mengolah masukan data
transaksi penjualan, retur penjualan, dan inventori sehingga mampu menghasilkan
informasi secara cepat dan akurat.
Sistem ini hanya dapat diakses oleh lingkungan internal perusahaan khususnya
staff penjualan dan inventori, manager, dan owner. Masing-masing user memiliki
hak dan kewenangan sendiri dalam mengakses sistem. Sistem ini masih memiliki
kekurangan yaitu laporan belum dapat diakses secara langsung.
viii
ABSTRACT
Transaction Sales and Inventory has been recorded manually by Sales and
Information Staff. It spend more time to process data and produce information. So
we need to develop a system which can help operational activity (sales and inventory
transaction) to produce information quickly but still appropriate and accurate.
This system developed by structured software engineer with Oracle XE as
DBMS and Oracle Developer as development tool. Oracle XE has been used because
of reliability and freeware.
The final result is a web-based sales and inventory information system which
can accept and processing sales and inventory data transaction, so it can produce
appropriate and accurate information.
Only internal side of the company can access this system, especially sales and
inventory staff; manager; and owner. Each user has privilege to access the system.
The weakness of this system is the user cannot access reports directly.
ix
KATA PENGANTAR
Terima kasih dan puji syukur penulis ucapkan kepada Tuhan Yang Maha Esa
atas berkat dan rahmatnya, sehingga penulis dapat menyelesaikan karya ini. Penulis
menyadari bahwa tanpa bantuan dari berbagai pihak, penulis tidak dapat
menyelesaikan karya ini. Untuk itu, penulis ingin mengucapkan terima kasih kepada
semua pihak yang telah membantu, terutama kepada :
1. Ibu A. M. Polina, S. Kom, M. Sc, selaku Ketua Jurusan Teknik Informatika
sekaligus pembimbing Tugas Akhir penulis yang telah memberikan bimbingan
dan dukungan (serta turut direpotkan dan disibukkan) dalam pembuatan karya
ini.
2. Kakak-kakak penulis Cie Nonie dan Ko Herry yang sudah mendukung,
membantu penulis dalam segala hal baik moril maupun materil dan juga yang
sudah berperan sebagai pengganti orang tua penulis.
3. Ci Ana, O Atun, Jonas, Jessi serta seluruh kerabat yang sudah ikut membantu
penulis dalam segala hal.
4. Dosen Pembimbing Akademik, Bapak Alb. Agung H., Bapak Bambang
Nyun, Lise, Maria, Octa, Julie. Makasih buat semuanya yang sudah kalian
berikan.
8. Mbeng n Adri yang sering membantu mengantar-antar penulis dan juga
membantu pindahan mengangkut barang-barang.
9. Seluruh teman penulis yang belum penulis sebutkan namanya diatas terimakasih
atas dukungan dan bantuannya.
Penulis mohon maaf yang sebesar-besarnya kepada semua pihak apabila
dalam pembuatan karya ini, penulis melakukan kekeliruan dan kesalahan baik yang
disengaja maupun yang tidak disengaja.
Penulis juga menyadari keterbatasan kemampuan yang dimiliki untuk
menyelesaikan karya ini dengan baik, sehingga masih terdapat banyak kekurangan.
Untuk itu, penulis mengharapkan adanya kritik dan saran yang membangun. Semoga
karya ini bermanfaat bagi kita semua.
Yogyakarta, 24 September 2007
Penulis
Cordelia Lajamarta
xi
DAFTAR ISI
HALAMAN JUDUL..................................................................................................... i HALAMAN PERSETUJUAN..................................................................................... ii HALAMAN PENGESAHAN..................................................................................... iii PERNYATAAN KEASLIAN KARYA ..................................................................... iv HALAMAN PERSEMBAHAN .................................................................................. v HALAMAN MOTO ................................................................................................... vi ABSTRAKSI .............................................................................................................vii ABSTRACT..............................................................................................................viii KATA PENGANTAR ................................................................................................ ix DAFTAR ISI............................................................................................................... xi DAFTAR TABEL.....................................................................................................xiii DAFTAR GAMBAR ................................................................................................ xiv BAB I PENDAHULUAN............................................................................................ 1
1.1. Latar Belakang Masalah............................................................................... 1 1.2. Batasan Masalah .......................................................................................... 2 1.3. Tujuan dan Manfaat ..................................................................................... 2 1.4. Rumusan Masalah ........................................................................................ 3 1.5. Metodologi Penelitian .................................................................................. 3 1.6. Sistematika Penulisan .................................................................................. 4
BAB II LANDASAN TEORI ...................................................................................... 6 2.1 Web............................................................................................................... 6 2.2 Sistem Informasi .......................................................................................... 6 2.3 Database Design/Perancangan Basis Data ................................................ 11 2.4. Oracle Database ........................................................................................ 20 2.5. Oracle PL/SQL (Procedural Language/Structured Query Language)...... 26 2.6. Oracle Developer ....................................................................................... 28
2.6.1 Forms Developer................................................................................ 28 2.6.2 Reports Developer.............................................................................. 31
BAB III ANALISA DAN PERANCANGAN SISTEM............................................ 33 3.1. Analisa Sistem............................................................................................ 33
3.1.1 Gambaran Umum Sistem ................................................................... 33 3.1.1.1 Gambaran Umum Sistem Lama..................................................... 34 3.1.1.2 Gambaran Umum Sistem Baru .................................................. 35
3.1.2 Use Case ............................................................................................ 37 3.1.3 DFD ( Data Flow Diagram )/DAD ( Diagram Arus Data ) .............. 38
BAB IV IMPLEMENTASI SISTEM ........................................................................ 60 4.1 Karakteristik Sistem................................................................................... 60 4.2 Tahap Implementasi ................................................................................... 61
4.2.2 Implementasi User Interface.............................................................. 67 4.2.2.1 Pembuatan Form ............................................................................ 67 4.2.2.2 Pembuatan Laporan........................................................................ 76 4.2.2.3 Pembuatan Menu............................................................................ 79 4.2.2.4 User Interface ................................................................................ 80
BAB V ANALISIS HASIL...................................................................................... 104 5.1 Kelebihan Sistem ..................................................................................... 104 5.2 Kekurangan Sistem .................................................................................. 105
BAB VI KESIMPULAN DAN SARAN ................................................................. 106 6.1 Kesimpulan .............................................................................................. 106 6.2 Saran......................................................................................................... 106
DAFTAR PUSTAKA .............................................................................................. 107 LAMPIRAN............................................................................................................. 108
DAFTAR TABEL
Tabel 2.1 Tabel Tipe Obyek....................................................................................... 22 Tabel 2.2 Tabel Konstruksi Program ......................................................................... 24 Tabel 2.3 Tabel Bagian dari Trigger.......................................................................... 25 Tabel 2.4 Tabel Struktur Prosedur ............................................................................. 27 Tabel 2.5 Tabel Perbedaan Prosedur dan Fungsi ....................................................... 28 Tabel 3.1 Tabel StaffPI Tahap Physical Design ........................................................ 47 Tabel 3.2 Tabel Konsumen Tahap Physical Design .................................................. 48 Tabel 3.3 Tabel Barang Tahap Physical Design ........................................................ 48 Tabel 3.4 Tabel Masuk Tahap Physical Design......................................................... 49 Tabel 3.5 Tabel DetailMasuk Tahap Physical Design............................................... 49 Tabel 3.6 Tabel Jual Tahap Physical Design ............................................................. 50 Tabel 3.7 Tabel DetailJual Tahap Physical Design ................................................... 50 Tabel 3.8 Tabel ReturJual Tahap Physical Design .................................................... 51
DAFTAR GAMBAR
Gambar 2.1 Siklus Hidup Pengembangan SI (Atzeni, 2000)....................................... 8 Gambar 2.2 Tahap-tahap Perancangan Database (Atzeni, 2000).............................. 12 Gambar 3.1 Use Case Diagram ................................................................................. 38 Gambar 3.2 Context Diagram .................................................................................... 39 Gambar 3.3 Bagan Berjenjang ................................................................................... 40 Gambar 3.4 Overview Diagram ................................................................................. 41 Gambar 3.5 DFD level 1 Proses 6.............................................................................. 42 Gambar 3.6 DFD Gabungan ...................................................................................... 43 Gambar 3.7 ER Diagram (sebelum normalisasi) ....................................................... 44 Gambar 3.8 Relational Model (setelah normalisasi).................................................. 46 Gambar 3.9 Faktur Penjualan..................................................................................... 52 Gambar 3.10 Laporan Penjualan................................................................................ 52 Gambar 3.11 Laporan Persediaan Barang.................................................................. 53 Gambar 3.12 Laporan Barang Terjual ....................................................................... 53 Gambar 3.13 Laporan Konsumen yang Membeli Barang ......................................... 54 Gambar 3.14 Form Login........................................................................................... 54 Gambar 3.15 Form Input data Staff PI....................................................................... 55 Gambar 3.16 Form Input Data Konsumen................................................................. 56 Gambar 3.17 Form Input Data Barang ...................................................................... 57 Gambar 3.18 Form Input Data Transaksi Penjualan.................................................. 58 Gambar 3.19 Form Input Data Transaksi Pemasukan Barang................................... 59 Gambar 3.20 Form Input untuk Pembuatan Laporan ................................................ 59 Gambar 4.1 Form Login............................................................................................. 82 Gambar 4.2 Menu Utama........................................................................................... 83 Gambar 4.3 Sub Menu Transaksi............................................................................... 84 Gambar 4.4 Sub Menu Master ................................................................................... 85 Gambar 4.5 Form Input Data Staff PI........................................................................ 86 Gambar 4.6 Form Input Data Konsumen................................................................... 88 Gambar 4.7 Form Input Data Barang ........................................................................ 89 Gambar 4.8 Form Transaksi Pemasukan Barang...................................................... 92 Gambar 4.9 Form Transaksi Penjualan Barang ......................................................... 94 Gambar 4.10 Form Transaksi Retur Penjualan Barang ............................................. 96 Gambar 4.11 Parameter Input Tanggal untuk Pembuatan Laporan........................... 97 Gambar 4.12 Faktur Penjualan................................................................................... 98 Gambar 4.13 Laporan Penjualan................................................................................ 99 Gambar 4.14 Laporan Persediaan Barang................................................................ 100 Gambar 4.15 Laporan Barang Terjual ..................................................................... 101 Gambar 4.16 Laporan Konsumen yang Membeli Barang ....................................... 102 Gambar 4.17 Laporan Retur Penjualan.................................................................... 103
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah
Saat ini informasi memegang peranan penting dalam kehidupan
manusia. Salah satu kriteria keunggulan suatu perusahaan dapat dilihat dari
kecepatan dan ketepatan perolehan informasi. Informasi bagi perusahaan dapat
digunakan untuk meningkatkan efektifitas dan efisiensi kinerja perusahaan.
Kecepatan dan pengaruh informasi terhadap perusahaan akan dibandingkan
dengan waktu, tenaga, dan biaya yang dikeluarkan perusahaan untuk
memperoleh informasi. Tentunya semakin sedikit waktu, tenaga, dan biaya
yang dikeluarkan namun menghasilkan informasi yang sangat berpengaruh bagi
perusahaan merupakan hal yang diharapkan oleh perusahaan pada umumnya.
Pada PT. Sanitas-Cirebon perhitungan omzet (hasil transaksi penjualan)
setiap hari, bulan, dan tahun masih dilakukan secara manual. Laporan untuk
owner/pemilik masih secara manual, staff dari pabrik harus melaporkan
transaksi-transaksi penjualan dan pembayaran dari transaksi-transaksi tersebut
secara manual. Staff pabrik dan owner berada di tempat yang berbeda sehingga
dibutuhkan waktu, tenaga, dan biaya lebih banyak untuk mendapat informasi
yang dibutuhkan. PT. Sanitas-Cirebon khususnya di bagian pabrik plastik
sudah memiliki perangkat komputer namun belum dimanfaatkan secara optimal
dan belum memiliki program khusus sebagai sarana penyedia sistem informasi.
2
Dari latar belakang itulah, penulis tertarik mengembangkan Sistem
Informasi Penjualan dan Inventori Berbasis Web yang memiliki kemampuan
dalam pengelolaan data berkaitan dengan persediaan barang, penjualan, dan
retur penjualan.
1.2. Batasan Masalah
a. Sistem yang dibuat hanya meliputi bagian penjualan dan inventori barang
jadi, tanpa membahas keterlibatan bahan mentah.
b. Sistem tidak menangani keamanan data akibat adanya tindakan dari pihak
luar.
c. Sistem tidak menangani masalah transaction management.
d. Sistem tidak menangani masalah piutang konsumen.
1.3. Tujuan dan Manfaat
Tujuan dan manfaat yang diharapkan:
a. Mengembangkan Sistem Informasi yang sesuai dengan kebutuhan PT.
Sanitas-Cirebon sehingga mampu membantu operasional perusahaan,
melalui tersedianya informasi yang cepat, tepat, dan akurat khususnya
untuk user di bidang transaksi penjualan dan inventori.
b. Dapat menjadi acuan teori dan praktek bagi pengembangan Sistem
Informasi Penjualan dan Inventori Berbasis Web sejenis yang
dikembangkan menggunakan Oracle.
3
1.4. Rumusan Masalah
a. Bagaimana mengembangkan Sistem Informasi Berbasis Web untuk
penjualan dan inventori yang sesuai untuk PT. Sanitas-Cirebon
menggunakan Oracle.
b. Sejauh mana Oracle mendukung untuk membuat aplikasi berbasis web
untuk kasus tersebut diatas.
1.5. Metodologi Penelitian
Metodologi penelitian yang digunakan adalah studi kasus, dengan tahap-tahap
sebagai berikut:
a. Studi literatur: mempelajari hal-hal yang berkaitan dengan pengembangan
sistem informasi mulai dari analisa sampai proses implementasi.
b. Observasi: mengamati proses kerja dari perusahaan (dalam kasus ini yang
diamati PT. Sanitas-Cirebon bidang pabrik plastik).
c. Interview: mewawancara staff pabrik mengenai sistem yang sedang
dijalankan.
d. Pengembangan sistem dengan metode pengembangan perangkat lunak
secara terstruktur, dengan langkah-langkah sebagai berikut:
1. Analisa sistem yaitu dengan melakukan analisa terhadap sistem yang
ada.
2. Merancang sistem informasi yang akan menjadi dasar dalam pembuatan
program.
4
3. Membuat implementasi Sistem Informasi Penjualan dan Inventori
Berbasis Web.
4. Menguji perangkat lunak yang dihasilkan.
1.6. Sistematika Penulisan
Bab I PENDAHULUAN
berisi latar belakang masalah, batasan masalah, tujuan dan manfaat
Perintah-perintah yang memberikan atau menghilangkan hak untuk
mengakses database maupun struktur dari database tersebut. Perintah-
perintah SQL nya meliputi: grant, revoke.
Aturan penulisan SQL:
1. Tidak bersifat case sensitive (tidak pengaruh bila ditulis dengan huruf besar
ataupun kecil)
2. Dapat terdiri dari beberapa baris
3. Kata kunci tidak dapat disingkat.
Kegunaan SQL:
1. Menampilkan data hasil perhitungan
2. Memodifikasi item data perseorangan
3. Memanipulasi keluaran dari kumpulan baris
4. Format tanggal dan nomor untuk tampilan.
5. Mengkonversi tipe data kolom
6. Tipe data yang umum digunakan dalam Oracle:
22
a. Varchar2: tipe data karakter
b. Char: tipe data karakter
c. Number: tipe data numerik
d. Date: tipe data tanggal
Ada 2 tipe data yang berbeda untuk karakter. Perbedaan pada tipe data
tersebut adalah tipe data varchar2 sifatnya lebih dinamis. Bila jumlah
maksimum yang didefinisikan pada varchar2 tidak dipenuhi maka memori
yang digunakan sesuai dengan kebutuhan.
Tipe obyek yang terdapat pada Oracle
Tipe obyek yang terdapat pada Oracle dapat dilihat pada tabel 2.1
Tabel 2.1 Tabel Tipe Obyek
Tipe Obyek Keterangan
Tabel Tempat untuk menyimpan data, terdiri dari kumpulan baris dan kolom yang membentuk record-record.
View Mempresentasikan secara logis subset dari satu atau lebih table
Sequence Membantu membangkitkan (generate) nilai dari primary key
Indeks Mempercepat pengeksekusian query
Sinonim Nama alias untuk suatu obyek
Aturan penamaan obyek:
a. Diawali dengan huruf
23
b. Maksimal 30 karakter
c. Berisi alfabet (A-Z/a-z), 0-9, _, $, #)
d. Unik (setiap nama obyek untuk 1 pemakai dan ruang nama tidak boleh
sama)
e. Tidak berupa kata kunci dari Oracle
Tabulasi Oracle mengenai berbagai konstruksi program (tipe blok) dapat dilihat
pada tabel 2.2
24
Tabel 2.2 Tabel Konstruksi Program
Konstruksi program Keterangan Terdapat pada
Anonymous block Blok yang tidak memiliki nama
PL/SQL
Stored procedure Mencakup prosedur dan fungsi
Oracle Server
Prosedur atau fungsi aplikasi
Blok bernama yang ditulis di aplikasi pada Oracle Developer dan yang bisa menerima operand
Oracle Developer (misal
: forms)
Package Bisa disebut module berfungi untuk membungkus tipe, operasi maupun obyek sebagai satu kesatuan.
Oracle Server
Oracle Developer
Trigger (database trigger)
Blok bernama yang pemanggilannya secara implisit (tidak langsung)
Oracle Server
Trigger aplikasi Hampir sama dengan trigger pada database yaitu pemanggilannya implisit, perbedaannya pada even untuk trigger aplikasi didefinisikan oleh development tool (misal : Oracle Developer)
Bagian dari Oracle
Developer
25
Trigger
Trigger adalah suatu aksi dalam database yang mempengaruhi database
lain yang berelasi akibat adanya suatu perubahan pada database tersebut.
Triger dipicu oleh even/kejadian insert, update, dan delete pada database.
Kode dalam trigger disebut trigger body, dibuat dalam blok PL/SQL. Trigger
digunakan untuk menjaga integritas data, membuat aturan bisnis yang
kompleks dan mengaudit perubahan data. Trigger dapat dijalankan sebelum
atau sesudah dilakukan perubahan pada database.
Bagian-bagian dari trigger dapat dilihat pada tabel 2.3
Tabel 2.3 Tabel Bagian dari Trigger
Bagian Keterangan Kemungkinan Nilai
Trigger timing Waktu trigger dijalankan:
sesudah, sebelum, atau
bersamaan dengan
terjadinya perubahan
pada database.
Before, after, instead off
Triggering event Perintah yang
menyebabkan perubahan
pada database sebagai
pemicu terjadinya trigger
Insert, update, dan delete
Trigger type Jumlah pengeksekusian
trigger
Setiap pernyataan, setiap
baris
Trigger body Aksi dari trigger Blok PL/SQL lengkap
Tahap physical design meliputi perancangan tabel pada database. Tabel
yang diperlukan dalam sistem yang dibuat meliputi:
1. Tabel StaffPI
Tabel StaffPI berisi data-data Staff PI PT. Sanitas-Cirebon. Tahap
physical design dari Tabel Staff PI dapat dilihat pada tabel 3.1.
Tabel 3.1 Tabel StaffPI Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
KodeStaffPI Varchar2 5 Primary Key
NamaStaffPI Varchar2 50 -
AlamatStaffPI Varchar2 75 -
KotaStaffPI Varchar2 30 -
NoTelpStaffPI Varchar2 15 -
Pasword Varchar2 10 -
2. Tabel Konsumen
Tabel konsumen berisi data-data konsumen PT. Sanitas-Cirebon. Tahap
physical design dari Tabel Konsumen dapat dilihat pada tabel 3.2.
48
Tabel 3.2 Tabel Konsumen Tahap Physical Design
Nama Field Tipe Data Ukuran. Field Keterangan
KodeKonsumen Varchar2 10 Primary Key
NamaKonsumen Varchar2 50 -
AlamatKonsumen Varchar2 75 -
KotaKonsumen Varchar2 30 -
NoTelpKonsumen Varchar2 15 -
3. Tabel Barang
Tabel barang berisi data-data mengenai barang hasil produksi PT.
Sanitas-Cirebon. Tahap physical design dari tabel barang dapat dilihat
pada tabel 3.3.
Tabel 3.3 Tabel Barang Tahap Physical Design
Nama Field Tipe Data Ukuran. Field Keterangan
KodeBarang Varchar2 10 Primary key
NamaBarang Varchar2 30 -
Satuan Varchar2 5 -
JumlahBarang Number 5 -
HargaProduksi Number 5 -
HargaJual Number 5 -
StokMinimum Number 5 -
StokMaksimum Number 5 -
4. Tabel Masuk
Tabel Masuk berisi data-data mengenai transaksi pemasukan barang,
merupakan tabel master dari tabel master-detail transaksi pemasukan
49
barang. Tahap physical design dari tabel masuk dapat dilihat pada tabel
3.4.
Tabel 3.4 Tabel Masuk Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
TanggalPemasukan Date - DD-MM-YYYY
KodePemasukan Number 10 Primary Key, Format : 0000000001
KodeStaffPI Varchar2 5 Foreign Key
5. Tabel DetailMasuk
Tabel DetailMasuk merupakan detail dari tabel master-detail transaksi
pemasukan barang. Tahap physical design tabel DetailMasuk dapat
dilihat pada tabel 3.5.
Tabel 3.5 Tabel DetailMasuk Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
KodePemasukan Number 10 Foreign Key
KodeBarang Varchar2 10 Foreign Key
JumlahBarang Number 5 -
6. Tabel Jual
Tabel Jual berisi data-data mengenai transaksi penjualan barang. Tabel
Jual merupakan tabel master dari tabel master-detail transaksi penjualan
barang. Tahap physical design dari tabel Jual dapat dilihat pada tabel
3.6.
50
Tabel 3.6 Tabel Jual Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
TanggalPenjualan Date - DD-MM-YYYY
KodePenjualan Number 10 Primary Key, format : 0000000001
KodeStaffPI Varchar2 5 Foreign Key
KodeKonsumen Varchar2 10 Foreign Key
TotalHarga Number 5 -
Discount Number 3 -
7. Tabel DetailJual
Tabel DetailJual merupakan detail dari tabel master-detail transaksi
penjualan barang. Tahap physical design dari tabel detailjual dapat
dilihat pada tabel 3.7.
Tabel 3.7 Tabel DetailJual Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
KodePenjualan Number 10 Foreign Key
KodeBarang Varchar2 10 Foreign Key
JumlahBarang Number 5 -
HargaSatuan Number 5 -
8. Tabel ReturJual
Tabel ReturJual berisi data-data transaksi retur penjualan. Transaksi
retur penjualan dijalankan bila ada konsumen yang mengembalikan
51
barang karena barang memiliki cacat/rusak. Tahap physical design dari
tabel ReturJual dapat dilihat pada tabel 3.8.
Tabel 3.8 Tabel ReturJual Tahap Physical Design
Nama Field Tipe Data Ukuran Field Keterangan
TanggalRetur Date - DD-MM-YYYY
KodeRetur Number 10 NOT NULL,Format : 0000000001
KodePenjualan Number 10 Foreign Key, format : 0000000001
KodeStaffPI Varchar2 5 Foreign Key
KodeKonsumen Varchar2 10 Foreign Key
KodeBarang Varchar2 10 Foreign Key
JumlahBarang Number 5 -
3.2.2 Design User Interface
3.2.2.1 Design Output
a. Faktur Penjualan
Desain faktur penjualan dapat dilihat pada gambar 3.9. Faktur penjualan
merupakan bukti dari transaksi penjualan. Lembar faktur ada yang
diberikan pada konsumen dan ada faktur yang disimpan oleh Staff PI
sebagai arsip.
52
Gambar 3.9 Faktur Penjualan
b. Laporan Penjualan
Desain laporan penjualan dapat dilihat pada gambar 3.10. Laporan
penjualan ditujukan pada owner dan manager pabrik. Laporan ini
digunakan untuk perhitungan pendapatan dari pabrik setiap periode
tertentu.
Gambar 3.10 Laporan Penjualan
Tanggal Penjualan
Kode Penjualan
Kode Konsumen
Total Harga
Dari Tanggal s/d
Faktur Penjualan Detail Penjualan
Nama Barang
Harga Satuan
Jumlah Barang
Staff PI Konsumen (…………) (……………)
Tanggal Penjualan
KodePenjualan
Nama Konsumen
Alamat Konsumen
Total Harga
Discount
Total Pembayaran
Kode Staff PI
53
c. Laporan Persediaan Barang
Desain laporan persediaan barang dapat dilihat pada gambar 3.11.
Laporan ini ditujukan pada manager pabrik. Laporan ini dapat
digunakan untuk membantu manager tersebut dalam memutuskan
barang mana yang akan diproduksi (berdasar jenis barang yang sudah
habis/stoknya menipis).
Gambar 3.11 Laporan Persediaan Barang
d. Laporan Barang Terjual
Desain laporan barang terjual dapat dilihat pada gambar 3.12. Laporan
barang yang terjual ditujukan untuk manager pabrik. Laporan ini
dapat digunakan untuk membantu manager tersebut dalam
menentukan barang mana yang akan diproduksi berdasar barang yang
paling banyak terjual.
Gambar 3.12 Laporan Barang Terjual
Kode Barang
Nama Barang
Jumlah Barang
Stok Minimum
Stok Maksimum
Pertanggal
LAPORAN PERSEDIAAN BARANG
KodePenjualan NamaBarang JumlahBarang HargaSatuan
Dari Tanggal s/d
LAPORAN BARANG TERJUAL
54
e. Laporan Konsumen yang Membeli Barang
Desain laporan konsumen yang membeli barang dapat dilihat pada
gambar 3.13. Laporan ini ditujukan untuk manager pabrik. Laporan
ini berguna untuk dapat menentukan siapa saja konsumen yang aktif
dalam membeli barang di pabrik tersebut.
Gambar 3.13 Laporan Konsumen yang Membeli Barang
3.2.2.2 Design Input
a. Form Login
Desain form login dapat dilihat pada gambar 3.14. Form ini
digunakan oleh Staff PI, manager pabrik, ataupun owner untuk dapat
masuk dan menggunakan sistem.
Gambar 3.14 Form Login
UserName
Password
Nama Database
Connect Cancel Exit
Tanggal Penjualan
Kode Penjualan
Kode Konsumen
Nama Konsumen
Dari Tanggal s/d
LAPORAN KONSUMEN YANG MEMBELI BARANG
55
b. Form Input Data Staff PI
Desain form input data Staff PI dapat dilihat pada gambar 3.15. Form
ini digunakan untuk memasukkan, mengubah, dan menghapus data
Staff PI.
Gambar 3.15 Form Input data Staff PI
b. Form Input Data Konsumen
Desain form input data konsumen dapat dilihat pada gambar 3.16.
Form ini digunakan untuk memasukkan, mengubah, atau menghapus
data konsumen pabrik.
Data Staff Penjualan dan Inventori
Kode Staff PI
Nama Staff PI
Alamat Staff PI
Kota Staff PI
No. Telp Staff PI
Pasword
Kode StaffPI
Nama StaffPI
Alamat StaffPI
NoTelpStaffPI
Save Delete ExitFirst Last Previous Next New
Pasword
Kota StaffPI
56
Gambar 3.16 Form Input Data Konsumen
c. Form Input Data Barang
Desain form input data barang dapat dilihat pada gambar 3.17. Form
ini digunakan untuk memasukkan, mengubah, atau menghapus data
barang hasil produksi dari PT. Sanitas-Cirebon.
Data Konsumen
Kode Konsumen
Nama Konsumen
Alamat Konsumen
Kota Konsumen
NoTelp Konsumen
Kode Konsumen
Nama Konsumen
Alamat Konsumen
No. Telp Konsumen
Save Delete ExitFirst Last Next Previous New
Kota Konsumen
57
Gambar 3.17 Form Input Data Barang
d. Form Input Transaksi Penjualan
Desain form input data transaksi penjualan dapat dilihat pada gambar
3.18. Form ini digunakan untuk memasukkan, mengubah, atau
menghapus data transaksi penjualan.
Data Barang Detail Barang
Kode Barang
Nama Barang
Satuan Jumlah Barang
Harga Produksi
Harga Jual
Stok Minimum
Stok Maksimum
Kode Barang
Nama Barang
Jumlah Barang
Satuan
Save Delete ExitFirst Last NextPrevious
Harga Produksi
Harga Jual
New
Stok Minimum
Stok Maksimum
58
Gambar 3.18 Form Input Data Transaksi Penjualan
e. Form Input Data Transaksi Pemasukan Barang
Desain form input data transaksi pemasukan barang dapat dilihat pada
gambar 3.19. Form ini digunakan untuk memasukkan, mengubah,
atau menghapus data transaksi pemasukan barang. Data transaksi
pemasukan barang meliputi barang-barang yang diproduksi oleh
pabrik.
Transaksi Penjualan Detail Transaksi Penjualan
Kode Barang Jumlah Barang Harga Satuan
Tanggal Penjualan
Kode Penjualan
Kode Staff PI
Kode Konsumen
Save Delete ExitFirst Last NextPrevious New
Discount (%)
Total Harga
59
Gambar 3.19 Form Input Data Transaksi Pemasukan Barang
f. Form Input untuk Pembuatan Laporan
Desain form input untuk pembuatan laporan dapat dilihat pada gambar
3.20. Form ini digunakan untuk menampilkan laporan-laporan
berdasar periode/rentang waktu tertentu.
Gambar 3.20 Form Input untuk Pembuatan Laporan
Tanggal Awal
Tanggal Akhir
Data transaksi Pemasukan Barang Detail data transaksi Pemasukan Barang
KodeBarang JumlahBarang
Tanggal Pemasukan
Kode Pemasukan
Kode Staff PI
Save Delete ExitFirst Last NextPrevious New
BAB IV IMPLEMENTASI SISTEM
4.1 Karakteristik Sistem
Agar aplikasi dapat dijalankan maka server maupun client harus memenuhi
karakteristik sebagai berikut:
1. Server
Kebutuhan perangkat keras yang digunakan:
a. Prosesor : minimal Intel Pentium IV 2,0 GHz
b. RAM : minimal 512 MB
c. Harddisk : 80 Gigabyte
Kebutuhan perangkat lunak yang digunakan:
a. Sistem Operasi : Microsoft Windows (minimal windows 2000)
untuk dapat menginstall Oracle baik Oracle
XE ataupun Oracle Developernya.
b. Database : Oracle Express Edition (Oracle XE),
merupakan produk database Oracle yang
bersifat freeware (gratis).
c. Service : OC4J Instance (service dari Oracle
Developer).
d. Piranti Pengembang : Oracle Developer versi 9.0.2.0.1.
e. Web Server : Apache 2.0.46 dan Javascript
61
2. Client
Kebutuhan perangkat keras yang digunakan:
a. Prosesor : 1 GHz
b. RAM : minimal 256 MB
c. Harddisk : 40 Gigabyte
Kebutuhan perangkat lunak yang digunakan:
a. Sistem Operasi : Microsoft Windows (minimal windows 2000) untuk
koneksi dengan database server.
b. Web Browser : Internet Explorer 6.0 atau mozilla firefox 5.0 untuk
mengakses sistem.
4.2 Tahap Implementasi
4.2.1 Implementasi Database
4.2.1.1 Pembuatan Tabel
Ada 8 buah tabel yang dibuat dalam database, yaitu:
1. Tabel StaffPI
2. Tabel Konsumen
3. Tabel Barang
4. Tabel Masuk
5. Tabel DetailMasuk
6. Tabel Jual
62
7. Tabel DetailJual
8. Tabel ReturJual
Perintah untuk membuat tabel pada database dapat dilihat pada lampiran A
4.2.1.2 Pembuatan Trigger
Trigger database yang dibuat, yaitu:
1. Trigger Barang_DMasuk_AIUDR
Trigger ini digunakan untuk mengurangi atau menambah stok barang
bila terjadi penambahan (insert), pengubahan (update), ataupun
penghapusan (delete) transaksi pemasukan barang. Namun untuk
pengubahan atau penghapusan transaksi pemasukan barang tidak dapat
dilakukan bila stok barang jadi kurang dari jumlah barang yang sudah
dijual.
63
Perintah untuk pembuatan trigger Barang_DMasuk_AIUDR :
2. Trigger Barang_DJual_AIUDR
Trigger ini digunakan untuk mengurangi atau menambah stok barang
bila terjadi penambahan (insert), pengubahan (update), ataupun
penghapusan (delete) transaksi penjualan barang. Namun untuk
pengubahan atau penambahan transaksi pemasukan barang tidak dapat
dilakukan bila jumlah barang yang dibeli konsumen lebih dari stok
barang yang dimiliki.
create or replace TRIGGER Barang_DMasuk_AIUDR AFTER INSERT OR UPDATE OR DELETE ON DetailMasuk FOR EACH ROW BEGIN IF INSERTING THEN UPDATE Barang SET JumlahBarang = JumlahBarang + :NEW.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF UPDATING('JumlahBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang + (:NEW.JumlahBarang - :OLD.JumlahBarang) WHERE Barang.KodeBarang = :OLD.KodeBarang; ELSIF UPDATING ('KodeBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang - :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; UPDATE Barang SET JumlahBarang = JumlahBarang + :OLD.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF DELETING THEN UPDATE Barang SET JumlahBarang = JumlahBarang - :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; END IF; END;
64
Perintah untuk pembuatan trigger Barang_DJual_AIUDR:
3. Trigger Barang_RJual_AIUDR
Trigger ini digunakan untuk mengurangi atau menambah stok barang
bila terjadi penambahan (insert), pengubahan (update), ataupun
penghapusan (delete) transaksi retur penjualan barang. Namun untuk
pengubahan atau penambahan transaksi retur penjualan barang tidak
dapat dilakukan bila jumlah barang yang diretur melebihi stok barang
yang dimiliki. Retur barang hanya dapat dilakukan bila sebelumnya
terjadi transaksi penjualan barang dan berlaku terhadap jenis barang
yang sama.
create or replace TRIGGER Barang_DJual_AIUDR AFTER INSERT OR UPDATE OR DELETE ON DetailJual FOR EACH ROW BEGIN IF INSERTING THEN UPDATE Barang SET JumlahBarang = JumlahBarang - :NEW.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF UPDATING('JumlahBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang - (:NEW.JumlahBarang - :OLD.JumlahBarang) WHERE Barang.KodeBarang = :OLD.KodeBarang; ELSIF UPDATING ('KodeBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang + :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; UPDATE Barang SET JumlahBarang = JumlahBarang - :OLD.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF DELETING THEN UPDATE Barang SET JumlahBarang = JumlahBarang + :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; END IF; END;
65
Perintah untuk pembuatan trigger Barang_RJual_AIUDR:
4. Trigger DJual_HSatuan_AIUS
Trigger ini digunakan untuk menampilkan HargaJual barang bila terjadi
penambahan (insert), pengubahan (update), ataupun penghapusan
(delete) detail transaksi penjualan barang.
Perintah untuk pembuatan trigger DJual_HSatuan_AIUS:
create or replace TRIGGER Barang_RJual_AIUDR AFTER INSERT OR UPDATE OR DELETE ON DetailJual FOR EACH ROW BEGIN IF INSERTING THEN UPDATE Barang SET JumlahBarang = JumlahBarang - :NEW.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF UPDATING('JumlahBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang - (:NEW.JumlahBarang - :OLD.JumlahBarang) WHERE Barang.KodeBarang = :OLD.KodeBarang; ELSIF UPDATING ('KodeBarang') THEN UPDATE Barang SET JumlahBarang = JumlahBarang + :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; UPDATE Barang SET JumlahBarang = JumlahBarang - :OLD.JumlahBarang WHERE Barang.KodeBarang = :NEW.KodeBarang; ELSIF DELETING THEN UPDATE Barang SET JumlahBarang = JumlahBarang + :OLD.JumlahBarang WHERE Barang.KodeBarang = :OLD.KodeBarang; END IF; END;
create or replace TRIGGER DJual_HSatuan_AIUS AFTER INSERT OR UPDATE OF KodeBarang ON DetailJual BEGIN UPDATE DetailJual SET HargaSatuan = (SELECT HargaJual FROM Barang WHERE DetailJual.KodeBarang = Barang.KodeBarang); END;
66
4.2.1.3 Pembuatan Sequence
Sequence dibuat untuk memudahkan user dalam meng-inputkan
kodepenjualan atau kodepemasukan barang. Kode Penjualan dan Kode
Pemasukan otomatis bertambah 1 bila user meng-klik pada image New.
1. KodeJual_Seq
Digunakan untuk men-generate KodePenjualan secara otomatis.
Perintah untuk membuat sequence KodeJual_Seq:
2. KodeMasuk_Seq
Digunakan untuk men-generate KodePemasukan secara otomatis.
Perintah untuk membuat sequence KodeMasuk_Seq:
CREATE SEQUENCE KODEJUAL_SEQ MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE
CREATE SEQUENCE KODEMASUK_SEQ MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE
67
4.2.2 Implementasi User Interface
4.2.2.1 Pembuatan Form
Langkah-langkah pembuatan form sebagai berikut:
Form Barang (FRM_BARANG)
1. Jalankan aplikasi Oracle Forms Builder, akan tampil Object
Navigator yang berisi menu, form, library PL/SQL. Untuk koneksi
dengan database, klik connect pada toolbar. Isikan username,
password, dan nama database.
2. Klik kanan module1 dibawah node form, pilih property palett untuk
mengubah properti dari form. Pada nama, ubah module1 menjadi
FRM_BARANG.
3. Klik kanan pada window, pilih property palett untuk mengubah
properti window. Pada Nama ubah module1 menjadi W_Barang.
4. Klik 2 kali pada canvas atau klik canvas kemudian klik tanda tambah
yang berwarna hijau. Ubah nama pada canvas menjadi C_Barang
dengan menampilkan property palett.
5. Buat 3 buah datablok, datablok pertama menampung masukan dari
user (nama datablok: Barang), datablok kedua menampilkan data
barang (nama datablok: DB_BARANG), dan yang ketiga merupakan
datablok kontrol yang berisi tombol-tombol untuk menampilkan atau
mengubah data (nama datablok: DB_TOOL).
68
Cara membuat datablok Barang:
Klik dua kali datablok, pilih use datablock wizard. Klik next, pilih
table/view klik next. Klik browse pilih Barang. Masukkan field yang
tersedia sebagai item database. Klik next, masukkan nama dari
datablok, yaitu Barang. Untuk menempatkan datablok pada canvas,
bisa menggunakan layout wizard atau secara manual. Untuk layout
wizard pilih create datablock then call the layout wizard. Klik finish.
Klik next, pilih canvas yang akan digunakan, yaitu C_Barang. Klik
next pilih item yang akan ditampilkan, pilih semua item. Klik next,
atur prompt atau label dari masing-masing item/field. Klik next pilih
bentuk yang akan ditampilkan, pilih bentuk form. klik next, klik
finish.
Cara membuat datablok DB_Barang:
Klik dua kali datablok, pilih use datablock wizard. Klik next, pilih
table/view klik next. Klik browse pilih tabel Barang. Masukkan field
yang tersedia sebagai item database. Klik next, masukkan nama dari
datablok, yaitu DB_Barang. Pilih create datablock then call the layout
wizard. Klik finish. Klik next, pilih canvas yang akan digunakan,
yaitu C_Barang. Klik next pilih item yang akan ditampilkan, pilih
semua item. Klik next, atur prompt atau label dari masing-masing
item/field. Klik next pilih bentuk yang akan ditampilkan, pilih bentuk
tabular. Klik next dan masukkan jumlah record yang akan
ditampilkan misal: 5. Klik finish.
69
Cara membuat DB_TOOL:
Buat datablok baru secara manual. Ubah nama datablok dengan
property palett. Klik kanan pada datablok yang dibuat pilih layout
editor.
Untuk Membuat image item pada datablok DB_TOOL:
Klik image item dan tempatkan pada canvas, dikelompokkan dalam
datablok DB_TOOL. Klik kanan pada image item, ubah nama dari
1. Jalankan aplikasi Oracle Reports Builder, akan tampil object
navigator yang berisi reports, templates, library PL/SQL, dan lain-
lain. Untuk koneksi dengan database, klik connet pada toolbar.
Isikan username, password, dan nama database.
2. Jalankan OC4J Instance dengan cara yang sama seperti menjalankan
OC4J Instance pada Forms Builder.
3. Pada object navigator, dibawah node report terdapat tulisan module1,
itu merupakan report/laporan yang akan dibuat. Bila tidak ada, dapat
membuat report yang baru, dengan cara klik 2 kali pada reports atau
dengan klik reports kemudian klik tanda + yang berwana hijau.
Untuk mengubah properti dari report dengan menampilkan property
inspector. Untuk menampilkan property inspector yaitu dengan klik
kanan pada report dan klik property inspector. Untuk membuat
report, bisa dengan menggunakan wizard ataupun manual. Untuk
menggunakan wizard, klik kanan pada data model dan pilih report
wizard. Klik next. Pilih create both paper and web layout. Klik next.
Tuliskan judul laporan pada field title. Pilih bentuk tabular. Klik next.
Pilih SQL Query dan klik next. Untuk memilih data yang akan
ditampilkan bisa menuliskan queri atau bisa menggunakan query
builder. Klik query builder, pilih tabel yang akan dijadikan sumber
dari report. Dalam contoh ini yaitu tabel jual. Klik include. Pilih
field-field yang akan ditampilkan dengan memberi checklist didepan
78
field. (pada contoh ini tanggal penjualan, kodepenjualan,
kodekonsumen, dan total harga). Klik next. Pilih item/field yang akan
ditampilkan. Klik next. Dengan menggunakan wizard juga bisa
memudahkan bila ada field tambahan yang menampung hasil operasi
perhitungan dari field tertentu. Contoh total merupakan penjumlahan
dari seluruh nilai field total harga. Untuk itu, pilih field totalharga klik
sum. Klik next. Ubah label dan lebar dari field-field yang akan
ditampilkan. Klik next. Untuk tampilan, Oracle menyediakan
template (desain yang sudah jadi) untuk ditempatkan dalam suatu
website. Namun karena sistem ini belum bertujuan sebagai website,
dan format laporan menggunakan desain sendiri maka gunakan no
template. Klik finish.
4. Untuk mensortir laporan penjualan berdasar tanggal awal dan tanggal
akhir diperlukan parameter. Untuk membuatnya, pada object
navigator, di bawah data model klik dua kali user parameter, untuk
membuat user parameter. Ubah properti dengan menampilkan
property inspector. Ubah nama dan tipe data serta ukuran dari
parameter sesuai dengan ukuran field pada database. Nama parameter
p_dari, tipe data tanggal/date dan ukurannya diset 15. buat parameter
kedua dengan tipe data sama, beri nama p_sampai. Klik kanan di
parameter pilih report editor. Klik toolbar paper parameter form.
Klik toolbar field untuk menambahkan field/item yang akan
menampung nilai parameter tanggal awal. Klik kanan pada field yang
79
sudah dibuat, tampilkan property inspector. Ubah source menjadi
p_dari. Buat field kedua dan ubah source field kedua menjadi
p_sampai. Tambahkan label yang akan membedakan field 1 dan field
2.
5. Jalankan report dengan cara klik run paper layout.
Langkah-langkah pembuatan laporan yang lain (faktur penjualan,
laporan persediaan barang, laporan barang terjual, laporan konsumen
yang membeli barang, dan laporan retur barang) identik dengan
langkah-langkah pembuatan laporan penjualan hanya perlu
disesuaikan dengan kebutuhan masing-masing laporan.
4.2.2.3 Pembuatan Menu
Pada object navigator Forms Developer klik 2 kali menus.
Tampilkan property palett dari menus. Ubah nama menu menjadi
MENU_UTAMA. Pada menus di bawah MENU_UTAMA klik 2 kali.
Tampilkan property palett dan ubah nama menjadi MENUUTAMA. Klik
kanan pada MENUUTAMA pilih menu editor. Isikan Menu yang akan
ditampilkan yaitu menu Transaksi. Klik tanda panah + dan arah panah
kekanan untuk mengisi menu Master. Lakukan hal yang sama untuk menu
Laporan dan Help. Untuk sub menu transaksi yaitu pemasukan barang,
penjualan barang dan retur penjualan, pada menu transaksi klik tanda +
dan arah panah ke bawah (untuk membuat sub menu). Lakukan hal yang
sama untuk sub menu-sub menu lainnya.
80
Untuk memanggil form bila menu atau sub menu di-klik (contoh:
untuk memanggil FRM_STAFFPI bila sub menu STAFFPI di-klik),
ditambahkan perintah:
open_form('E:\TA\PROGRAM\form\FRM_STAFFPI.fmx',
activate). Form yang dipanggil adalah form yang sudah dikompilasi, yaitu
yang berekstension .fmx bukan .fmb Form yang hasil kompilasi disimpan
dalam bentuk file berekstensi .fmx. Untuk menambahkan perintah, klik
kanan pada menu yang bersangkutan pilih PL/SQL editor. Lakukan hal
yang sama untuk menu atau sub menu lainnya.
4.2.2.4 User Interface
a. Form Login
Form Login pertama kali tampil bila aplikasi dijalankan. User diminta
untuk memasukkan username dan password. Username dan Password
adalah KodestaffPI dan Pasword yang ada pada tabel StaffPI. Bila
username atau password yang dimasukkan salah maka akan tampil
alert/peringatan pada user dan user tidak dapat menjalankan aplikasi
selanjutnya.
81
Pada saat form login dijalankan, perintah yang dijalankan adalah:
Perintah tersebut mengakibatkan user terkoneksi dengan Oracle XE
sebagai database dalam skema Lia .
Prosedur untuk men-seleksi user:
Declare vUser VARCHAR2(80); vPassword VARCHAR2(80); vConnect VARCHAR2(80); begin logout; vUser := 'lia'; vPassword := 'lajamarta'; vConnect := 'XE'; if vConnect is not null then Logon(vUser, VPassword||'@'||vConnect); else Logon(vUser,vPassword); end if; set_window_property('WINDOW1',title,'Aplikasi Penjualan & Inventory '); set_window_property(forms_mdi_window,window_state,maximize); CENTER('window1'); end;
PROCEDURE SELECT_USER (USERNAME_ VARCHAR2, PASSWORD_ VARCHAR2) IS BEGIN begin select KODESTAFFPI into :PARAMETER.USER_ID_ from STAFFPI where KODESTAFFPI = USERNAME_ and PASWORD = PASSWORD_; exception when no_data_found then :PARAMETER.USER_ID_ := NULL; end; NULL; END;
82
Tampilan form login dapat dilihat pada gambar 4.1.
Gambar 4.1 Form Login
b. Form Menu
Form Menu akan tampil bila user berhasil login atau menjalankan
aplikasi setelah login. Form Menu berisi menu-menu yang dapat diakses
oleh user. Menu Utama diantaranya adalah menu transaksi dan menu
master. Pada menu transaksi terdapat sub menu Pemasukan Barang,
Penjualan Barang, dan Retur Penjualan. Pada menu master terdapat sub
menu Staff PI, Konsumen, dan Barang. Sub Menu Pemasukan Barang
merupakan menu untuk mencatat transaksi pemasukan barang. Sub Menu
Penjualan Barang merupakan menu untuk mencatat transaksi penjualan
83
barang. Sub Menu Retur Barang merupakan menu untuk mencatat
transaksi retur penjualan. Sub Menu Staff PI merupakan menu untuk
mencatat data Staff PI. Sub Menu Konsumen merupakan menu untuk
mencatat data Konsumen PT. Sanitas-Cirebon. Sub Menu Barang
merupakan menu untuk mencatat data Barang hasil produksi PT. Sanitas-
Cirebon. Menu Utama dapat dilihat pada gambar 4.2. Sub Menu
Pemasukan Barang, Penjualan Barang, dan Retur Penjualan pada menu
Transaksi dapat dilihat pada gambar 4.3. Sub Menu StaffPI, Konsumen,
dan Barang pada menu Master dapat dilihat pada gambar 4.4.
Gambar 4.2 Menu Utama
84
Gambar 4.3 Sub Menu Transaksi
85
Gambar 4.4 Sub Menu Master
c. Form Input Data Staff PI
Form input data Staff PI merupakan form untuk mencatat data dari Staff
PI PT. Sanitas-Cirebon. Form Input Data Staff PI dapat dilihat pada
gambar 4.5.
86
Perintah yang akan dijalankan pada waktu Form StaffPI dijalankan:
Form input data barang merupakan form untuk mencatat data barang hasil
produksi PT. Sanitas-Cirebon berupa botol-botol plastik. Form Input Data
Barang dapat dilihat pada gambar 4.7.
89
Perintah yang akan dijalankan pada waktu Form Input Data Barang
dijalankan:
Gambar 4.7 Form Input Data Barang
begin set_window_property('W_BARANG',title,'Input Data Barang '); READ_IMAGE_FILE('E:\TA\program\image\tool_new.bmp','ANY','db_tool.img_new'); READ_IMAGE_FILE('E:\TA\program\image\tool_delete.bmp','ANY','db_tool.img_delete'); READ_IMAGE_FILE('E:\TA\program\image\tool_save.bmp','ANY','db_tool.img_save'); READ_IMAGE_FILE('E:\TA\program\image\tool_close.bmp','ANY','db_tool.img_close'); READ_IMAGE_FILE('E:\TA\program\image\tool_first.bmp','ANY','db_tool.img_first'); READ_IMAGE_FILE('E:\TA\program\image\tool_next.bmp','ANY','db_tool.img_next'); READ_IMAGE_FILE('E:\TA\program\image\tool_prev.bmp','ANY','db_tool.img_prev'); READ_IMAGE_FILE('E:\TA\program\image\tool_last.bmp','ANY','db_tool.img_last'); GO_BLOCK('BARANG'); execute_query; last_record; GO_BLOCK('DB_BARANG'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
90
f. Form Transaksi Pemasukan Barang
Form Transaksi Pemasukan Barang merupakan form untuk mencatat
Transaksi Pemasukan Barang. Form Transaksi Pemasukan Barang dapat
dilihat pada gambar 4.8.
Untuk penambahan transaksi pemasukan barang, setelah user meng-klik
image New, maka field tanggalpemasukan akan langsung terisi tanggal
saat transaksi pemasukan barang diinputkan, dan field kodepemasukan
akan secara otomatis terisi. Nilai kodePemasukan yang baru adalah nilai
KodePemasukan yang lama ditambah dengan 1. Perintah yang digunakan
untuk men-generate TanggalPemasukan dan KodePemasukan secara
otomatis adalah:
Perintah tersebut terdapat pada trigger When-Mouse-Click pada image
New
Form Transaksi Pemasukan Barang merupakan form Master-Detail. Form
Master berdasar pada tabel Masuk. Form detail berdasar pada tabel
DetailMasuk. Field yang menghubungkan adalah field KodePemasukan
sebagai Primary Key pada tabel Masuk dan field KodePemasukan pada
tabel DetailMasuk sebagai Foreign Key dari tabel Masuk.
BEGIN GO_BLOCK('MASUK'); CREATE_RECORD; select sysdate into :masuk.tanggalpemasukan from dual; select kodemasuk_seq.nextval into :masuk.kodepemasukan from dual; END;
91
Perintah Trigger On-Clear-Details:
KodeStaffPI merupakan List Of Values (LOVs), user memilih kode yang
dimilikinya. Field JumlahBarang merupakan masukan, sesuai dengan
jumlah hasil produksi.
Perintah yang akan dijalankan pada waktu Form Transaksi Pemasukan
Barang dijalankan:
-- trigger untuk menghapus detail bila master dihapus. BEGIN Clear_All_Master_Details; END;
Form Transaksi Penjualan merupakan form untuk mencatat Transaksi
Penjualan Barang. Form Transaksi Penjualan Barang dapat dilihat pada
gambar 4.9.
Untuk penambahan transaksi penjualan barang, setelah user meng-klik
image New, maka field tanggalpenjualan akan langsung terisi tanggal saat
transaksi penjualan barang diinputkan, dan field kodepenjualan akan
secara otomatis terisi. Nilai KodePenjualan yang baru adalah nilai
KodePenjualan yang lama ditambah dengan 1.
93
Perintah yang digunakan untuk men-generate TanggalPenjualan dan
KodePenjualan secara otomatis adalah:
Perintah tersebut terdapat pada trigger When-Mouse-Click pada image
New.
Form Transaksi Penjualan Barang merupakan form Master-Detail. Form
Master berdasar pada tabel Jual. Form detail berdasar pada tabel
DetailJual. Field yang menghubungkan adalah field KodePenjualan
sebagai Primary Key pada tabel Jual dan field KodePenjualan pada tabel
DetailJual sebagai Foreign Key dari tabel Jual.
Perintah Trigger On-Clear-Details:
KodeStaffPI dan Kode Konsumen, KodeBarang merupakan LOVs, user
diminta untuk memilih. Yang merupakan input bagi user hanyalah
JumlahBarang dan Discount. Untuk TotalHarga dan HargaSatuan secara
otomatis terisi bila user meng-klik image save.
BEGIN GO_BLOCK('JUAL'); CREATE_RECORD; select sysdate into :jual.tanggalpenjualan from dual; select kodejual_seq.nextval into :jual.kodepenjualan from dual; END;
-- trigger untuk menghapus detail bila master dihapus. BEGIN Clear_All_Master_Details; END;
94
Perintah yang akan dijalankan pada waktu Form Transaksi Penjualan
REFERENCES JUAL (KODEPENJUALAN) ON DELETE CASCADE)
LAMPIRAN B
Perintah yang ada pada trigger di setiap form :
Trigger ON-ERROR
DECLARE lv_errcod NUMBER := ERROR_CODE; lv_errtyp VARCHAR2(3) := ERROR_TYPE; lv_errtxt VARCHAR2(80) := ERROR_TEXT; n_alert number; BEGIN IF (lv_errcod = 40508) THEN n_alert:=show_alert('A_DUPLICATE_PK'); --error gagal saving data karena adanya duplikasi primary key ELSE IF (lv_errcod = 40102) THEN n_alert:=show_alert('A_NEXT_REC'); --error karena record belum terisi tapi
sudah menekan tombol next record ELSE IF (lv_errcod = 40100) THEN
n_alert:=show_alert('A_PREV_REC'); --error karena sudah pada record
pertama tapi masih menekan tombol previous record
ELSE IF (lv_errcod = 50016) THEN n_alert:=show_alert('A_WRONG_DATA_TYPE'); --error karena tipe data masukan salah ELSE Message(lv_errtyp||'-'||to_char(lv_errcod)||': '||lv_errtxt); RAISE Form_Trigger_Failure; END IF; END IF; END IF; END IF; END;
Perintah yang ada pada trigger-trigger button dan image item pada datablok
DB_TOOL yang ada pada masing-masing form :
Trigger WHEN-IMAGE-CLICK
IMG_NEW – untuk menambahkan
record baru
BEGIN GO_BLOCK('BARANG'); create_record; END;
Trigger WHEN-IMAGE-CLICK
IMG_SAVE – untuk menyimpan
perubahan pada database
BEGIN commit_form; GO_BLOCK('BARANG'); execute_query; GO_BLOCK('DB_BARANG');
BEGIN select_user(:DB_LOGIN.TEXT_USER_NAME, :DB_LOGIN.TEXT_PASSWORD); :DB_LOGIN.TEXT_USER_NAME:=null; :DB_LOGIN.TEXT_PASSWORD:=null; if :parameter.USER_ID_ is not NULL then
pl_id := Get_Parameter_List(pl_name); if not Id_Null(pl_id) then
destroy_parameter_list (pl_id); end if; pl_id := Create_Parameter_List (pl_name); Add_Parameter(pl_id, ,User_ID_' , TEXT_PARAMETER, :PARAMETER.USER_ID_); if :parameter.USER_ID_ = 'HER' THEN
BEGIN Logout; vUser := 'lia'; vPassword := 'lajamarta'; vConnect := 'XE'; if vConnect is not null then
Logon(vUser, VPassword||'@'||vConnect);
else Logon(vUser,vPassword); end if; END;
Prosedur-prosedur yang ada pada form Login (FRM_LOGON)
Prosedur CENTER :
PROCEDURE CENTER ( WNAME IN VARCHAR2) IS W INTEGER; H INTEGER;
BEGIN H:=GET_APPLICATION_PROPERTY(DISPLAY_HEIGHT); W:=GET_APPLICATION_PROPERTY(DISPLAY_WIDTH); H := (H - GET_WINDOW_PROPERTY(WNAME, HEIGHT)) / 2; W := (W - GET_WINDOW_PROPERTY(WNAME, WIDTH)) / 2; SET_WINDOW_PROPERTY(WNAME,POSITION,W - 50, H - 80);
END;
Procedure SELECT_USER :
PROCEDURE SELECT_USER (USERNAME_ VARCHAR2, PASSWORD_ VARCHAR2) IS BEGIN
begin select KODESTAFFPI into :PARAMETER.USER_ID_ from STAFFPI where KODESTAFFPI = USERNAME_ and PASWORD = PASSWORD_;
exception when no_data_found then :PARAMETER.USER_ID_ := NULL;
end; NULL;
END;
Trigger dan Prosedur yang ada pada form Jual (FRM_JUAL)
Trigger ON-CLEAR-DETAILS
/* trigger pada form otomatis
terbentuk bila set relasi
master-detail*/
-- Begin default relation program section -- BEGIN Clear_All_Master_Details; END; -- End default relation program section --
Trigger POST-CHANGE
-- trigger pada item jumlahbarang -- pada datablok detailjual -- untuk menghitung totalharga -- setelah discount bila -- jumlahbarang diisikan DECLARE subtotal number(10); BEGIN select sum(jumlahbarang * hargasatuan) into subtotal from
detailjual where kodepenjualan = :jual.kodepenjualan; if :jual.discount is null then :jual.discount := 0; end if; :jual.totalharga := subtotal * (1 - :jual.discount / 100); END;
Prosedur CHECK_PACKAGE_FAILURE
/* prosedur yang otomatis
terbentuk bila set relasi master-
detail*/
Procedure Check_Package_Failure IS BEGIN IF NOT ( Form_Success ) THEN RAISE Form_Trigger_Failure; END IF; END;
Prosedur Query_Master_Details
PROCEDURE Query_Master_Details(rel_id Relation,detail VARCHAR2) IS oldmsg VARCHAR2(2); -- Old Message Level Setting reldef VARCHAR2(5); -- Relation Deferred Setting BEGIN -- -- Initialize Local Variable(s) -- reldef := Get_Relation_Property(rel_id, DEFERRED_COORDINATION); oldmsg := :System.Message_Level; -- -- If NOT Deferred, Goto detail and execute the query. -- IF reldef = 'FALSE' THEN Go_Block(detail); Check_Package_Failure; :System.Message_Level := '10'; Execute_Query; :System.Message_Level := oldmsg; ELSE -- -- Relation is deferred, mark the detail block as un-coordinated -- Set_Block_Property(detail, COORDINATION_STATUS, NON_COORDINATED); END IF; EXCEPTION WHEN Form_Trigger_Failure THEN :System.Message_Level := oldmsg; RAISE; END Query_Master_Details;
Prosedur Clear_All_Master_Details
PROCEDURE Clear_All_Master_Details IS mastblk VARCHAR2(30); -- Initial Master Block Causing Coord coordop VARCHAR2(30); -- Operation Causing the Coord trigblk VARCHAR2(30); -- Cur Block On-Clear-Details Fires On startitm VARCHAR2(61); -- Item in which cursor started frmstat VARCHAR2(15); -- Form Status curblk VARCHAR2(30); -- Current Block currel VARCHAR2(30); -- Current Relation curdtl VARCHAR2(30); -- Current Detail Block
FUNCTION First_Changed_Block_Below(Master VARCHAR2) RETURN VARCHAR2 IS curblk VARCHAR2(30); -- Current Block currel VARCHAR2(30); -- Current Relation retblk VARCHAR2(30); -- Return Block BEGIN -- -- Initialize Local Vars -- curblk := Master; currel := Get_Block_Property(curblk, FIRST_MASTER_RELATION); -- -- While there exists another relation for this block -- WHILE currel IS NOT NULL LOOP --
115
-- Get the name of the detail block -- curblk := Get_Relation_Property(currel, DETAIL_NAME); -- -- If this block has changes, return its name -- IF ( Get_Block_Property(curblk, STATUS) = 'CHANGED' ) THEN RETURN curblk; ELSE -- -- No changes, recursively look for changed blocks below -- retblk := First_Changed_Block_Below(curblk); -- -- If some block below is changed, return its name -- IF retblk IS NOT NULL THEN RETURN retblk; ELSE -- -- Consider the next relation -- currel := Get_Relation_Property(currel, NEXT_MASTER_RELATION); END IF; END IF; END LOOP; -- -- No changed blocks were found -- RETURN NULL; END First_Changed_Block_Below; BEGIN -- -- Init Local Vars -- mastblk := :System.Master_Block; coordop := :System.Coordination_Operation; trigblk := :System.Trigger_Block; startitm := :System.Cursor_Item; frmstat := :System.Form_Status; -- -- If the coordination operation is anything but CLEAR_RECORD or -- SYNCHRONIZE_BLOCKS, then continue checking. -- IF coordop NOT IN ('CLEAR_RECORD', 'SYNCHRONIZE_BLOCKS') THEN -- -- If we're processing the driving master block... -- IF mastblk = trigblk THEN -- -- If something in the form is changed, find the -- first changed block below the master
-- IF frmstat = 'CHANGED' THEN curblk := First_Changed_Block_Below(mastblk); -- -- If we find a changed block below, go there -- and Ask to commit the changes. -- IF curblk IS NOT NULL THEN Go_Block(curblk); Check_Package_Failure; Clear_Block(ASK_COMMIT); -- -- If user cancels commit dialog, raise error -- IF NOT ( :System.Form_Status = 'QUERY' OR :System.Block_Status = 'NEW' ) THEN RAISE Form_Trigger_Failure; END IF; END IF; END IF; END IF; END IF; -- -- Clear all the detail blocks for this master without -- any further asking to commit. -- currel := Get_Block_Property(trigblk, FIRST_MASTER_RELATION); WHILE currel IS NOT NULL LOOP curdtl := Get_Relation_Property(currel, DETAIL_NAME); IF Get_Block_Property(curdtl, STATUS) <> 'NEW' THEN Go_Block(curdtl); Check_Package_Failure; Clear_Block(NO_VALIDATE); IF :System.Block_Status <> 'NEW' THEN RAISE Form_Trigger_Failure; END IF; END IF; currel := Get_Relation_Property(currel, NEXT_MASTER_RELATION); END LOOP; -- -- Put cursor back where it started -- IF :System.Cursor_Item <> startitm THEN Go_Item(startitm); Check_Package_Failure; END IF; EXCEPTION WHEN Form_Trigger_Failure THEN IF :System.Cursor_Item <> startitm THEN Go_Item(startitm); END IF; RAISE; END Clear_All_Master_Details;