b)Ê»¸ Ç - repository.usd.ac.idrepository.usd.ac.id/32067/2/015314025_full.pdf · title:...
Post on 14-Oct-2020
1 Views
Preview:
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
Soelistijanto, S.T., M.Sc (eks P.A.) dan Bapak Dyonisius Dony Ariananda, S.T.
(eks.P.A juga.) yang telah memberikan bimbingan dalam bidang akademis.
5. Pak Bele, Mas Danang, Mbak Sri, Mas Catur dan Pak Dar, serta staff
laboratorium lainnya yang membantu menyediakan fasilitas laboratorium selama
penulis menjalankan kegiatan perkuliahan dan selama penulis menyelesaikan
karya ini.
x
6. Teman-teman seperjuangan penulis semasa perkuliahan Welly, Nana, Nope,
Ncep. Trim’s buat bantuan, saran, dan dukungan kalian.
7. Teman-teman Kos 99999 Diana, Fenny, Grace, Vina, Linna, Limdra, Meri,
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
3.1.3.1 Context Diagram ............................................................................ 39 3.1.3.2 Bagan Berjenjang........................................................................... 39 3.1.3.3 Overview Diagram ......................................................................... 40 3.1.3.4 DFD Level 1 Proses 6 .................................................................... 41 3.1.3.5 DFD Gabungan .............................................................................. 42
3.2 Perancangan Sistem ................................................................................... 44 3.2.1 Perancangan Database ....................................................................... 44
xii
3.2.1.1 Conceptual Database Design ( ER Diagram )............................... 44 3.2.1.2 Logical Database Design ............................................................... 45 3.2.1.3 Physical Database Design ............................................................. 47
3.2.2 Design User Interface ........................................................................ 51 3.2.2.1 Design Output ................................................................................ 51 3.2.2.2 Design Input ................................................................................... 54
BAB IV IMPLEMENTASI SISTEM ........................................................................ 60 4.1 Karakteristik Sistem................................................................................... 60 4.2 Tahap Implementasi ................................................................................... 61
4.2.1 Implementasi Database..................................................................... 61 4.2.1.1 Pembuatan Tabel............................................................................ 61 4.2.1.2 Pembuatan Trigger ........................................................................ 62 4.2.1.3 Pembuatan Sequence ...................................................................... 66
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
penelitian, rumusan masalah, metodologi penelitian, sistematika
penulisan.
Bab II LANDASAN TEORI
berisi teori-teori yang digunakan sebagai acuan selama
perancangan sampai pembuatan Sistem Informasi.
Bab III ANALISA DAN PERANCANGAN SISTEM
berisi analisa dan perancangan dari sistem informasi yang akan
dibuat.
Bab IV IMPLEMENTASI
berisi pengubahan dari perancangan ke pembuatan sistem serta
pengujicobaan sistem ditinjau dari sisi masukan dan keluaran sistem.
5
Bab V ANALISA HASIL
berisi analisa terhadap hasil dari sistem dibandingkan dengan masalah
yang akan dipecahkan dalam rumusan masalah, mengungkap
kelemahan dari sistem (jika ada) beserta penyebabnya.
Bab VI KESIMPULAN DAN SARAN
berisi pengambilan kesimpulan dari keluaran sistem dibandingkan
dengan rumusan masalah, apakah sistem yang dibuat menyelesaikan
masalah yang ada dan saran untuk pengembangan sistem lebih lanjut.
BAB II LANDASAN TEORI
2.1 Web
Istilah-istilah yang ada dalam Web ( Febrian & Andayani, 2002):
1. HTTP (Hypertext Transfer Protocol)
HTTP adalah protokol yang dipakai web browser dan web server untuk
mengirimkan data dalam www (world wide web).
2. Web browser/browser
Web browser adalah suatu program komputer yang menyediakan layanan
untuk membaca halaman web di suatu komputer.
3. Web server
Web server adalah suatu program (dan juga mesin yang menjalankan
program) yang mengerti protokol HTTP dan dapat menanggapi permintaan-
permintaan dari web browser untuk mengakses suatu halaman web tertentu.
2.2 Sistem Informasi
Istilah-istilah yang ada dalam sistem informasi:
1. Proses
Proses adalah mengolah masukan (input) yang diperlukan sehingga
menghasilkan suatu keluaran (output) (Febrian & Andayani, 2002).
2. Program
Program adalah kumpulan perintah yang akan dijalankan
7
3. Perangkat Lunak
Perangkat lunak adalah program yang digunakan untuk menghasilkan,
mengelola, memperoleh, mengubah, menampilkan, atau mengirimkan
informasi (Febrian & Andayani, 2002).
4. Perangkat Keras
Perangkat keras adalah seluruh perangkat yang digunakan untuk
mengoperasikan suatu sistem komputer (Febrian & Andayani, 2002).
5. Teknologi Informasi
Teknologi informasi adalah istilah yang menggambarkan kombinasi
teknologi komputer (perangkat keras dan lunak) dengan teknologi
komunikasi (jaringan data, gambar, dan suara) (Whitten, 2004).
6. Data
Data adalah suatu fakta, kejadian yang belum diolah (mentah).
7. Databas/Basis Data
Database adalah sekumpulan data yang dikendalikan dan dikelola oleh
suatu DBMS (Atzeni, 2000).
8. DBMS/Database Management System
DBMS adalah suatu perangkat lunak yang dapat mengelola kumpulan
data yang besar, digunakan bersama (shared) dan secara terus menerus
(persistent), dan memastikan bahwa kumpulan data tersebut terjaga
kerahasiaan dan kehandalannya (Atzeni, 2000).
8
9. Informasi
Informasi adalah data yang sudah diolah sehingga berguna bagi pihak
tertentu.
10. Sistem Informasi
Sistem informasi adalah pengaturan orang, data, proses, dan teknologi
informasi yang berinteraksi untuk mengumpulkan, memproses,
menyimpan, dan menyediakan sebagai keluaran, informasi yang
diperlukan untuk mendukung sebuah organisasi (Whitten, 2004).
Siklus hidup pengembangan Sistem Informasi dapat dilihat pada gambar
2.1.
Gambar 2.1 Siklus Hidup Pengembangan SI (Atzeni, 2000)
Feasibility Study
Collection & Analysis of Requirements
Design Database Design
Operational Design
Implementation
Validation & Testing
Operation
9
Tahap-tahap dalam siklus pengembangan sistem informasi, yaitu:
1. Feasibility Study
Tahap feasibility study yaitu tahap studi kelayakan terhadap
pembuatan sistem.
2. Collection and Analysis of Requirements
Tahap collection and analysis of requirements yaitu tahap
pengumpulan dan analisis terhadap kebutuhan.
3. Design
Tahap design meliputi design database (mendefinisikan struktur dan
organisasi data) dan design operational (mendefinisikan
sifat/karakteristik dari sistem informasi).
4. Implementation
Tahap implementation yaitu tahap pembuatan sistem informasi
berdasar struktur dan karakteristik yang telah didefinisikan dalam
tahap design.
5. Validation dan testing
Tahap validation dan testing yaitu tahap pemeriksaan kualitas dan
kebenaran dari sistem informasi.
6. Operation
Tahap operation yaitu tahap penggunaan sistem informasi.
11. Use Case Modelling/Pemodelan Use Case
Use case modelling adalah sebuah proses untuk memodelkan fungsi-
fungsi sistem, siapa yang mengakses fungsi-fungsi sistem tersebut beserta
10
cara mengaksesnya. Use case merupakan pemodelan dari analisis
kebutuhan.
Didalam use case modelling terdapat beberapa istilah, yaitu:
1. Aktor adalah segala sesuatu yang berhubungan dengan sistem, yang
mengolah dan mendapatkan informasi dalam sistem.
2. Asosiasi adalah interaksi yang terjadi antara aktor dengan use case.
3. Use case depends on relationship adalah adanya use case yang harus
dijalankan terlebih dahulu sebelum use case yang lain.
12. DFD (Data Flow Diagram)/DAD (Diagram Arus Data)
DFD menggambarkan aliran data dari (sebagai masukan) dan ke dalam
sistem (sebagai keluaran). Penggambaran DFD meliputi beberapa tahap :
1. Context Diagram
Context diagram menggambarkan sistem secara umum, hanya
menggambarkan aliran data dari dan ke dalam sistem.
2. Bagan Berjenjang
Bagan berjenjang menggambarkan struktur dari proses-proses yang
ada dalam sistem.
3. Overview Diagram
Menggambarkan aliran data dari dan ke dalam proses yang ada dalam
sistem.
4. Level 1 Proses sub proses
Level 1 proses sub proses menggambarkan detail aliran data pada
proses yang memiliki sub proses.
11
5. DFD Gabungan
DFD gabungan merupakan gabungan antara overview diagram dan
level 1 proses sub proses.
2.3 Database Design/Perancangan Basis Data
Database design merupakan salah satu tahap yang dikerjakan dari tahap
desain pada siklus hidup pengembangan sistem. Tahap-tahap yang akan
dikerjakan pada tahap perancangan database dapat dilihat pada gambar 2.2.
12
Gambar 2.2 Tahap-tahap Perancangan Database (Atzeni, 2000)
Perancangan Database terdiri dari 3 tahap yang utama, yaitu:
1. Conceptual Design
Tahap conceptual design menggambarkan isi (content) dari
database tanpa mempertimbangkan implementasi database tersebut dan
efisiensi dari program yang memanfaatkan database tersebut.
Tahap conceptual design menghasilkan conceptual schema yang
mengacu pada suatu conceptual model (saat ini conceptual model yang
Application Requirements
Database Design
Conceptual Schema
Logical Schema
Physical Schema
Database Structure and related documentation
Conceptual Design
Logical Design
Physical Design
13
banyak digunakan adalah ER Model (Entity Relationship Model)/ER
Diagram (Entity Relationship Diagram).
Conceptual model mendeskripsikan organisasi data pada abstraksi
level tinggi dan tidak memperhatikan aspek implementasi.
Komponen utama yang membentuk ER Diagram, yaitu:
a. Entitas
Entitas adalah obyek (misal berupa orang, tempat, kejadian) yang nyata
dan dapat dibedakan satu dengan yang lainnya. Himpunan entitas
adalah kumpulan entitas yang sejenis. Setiap entitas memiliki atribut
sebagai karakteristik masing-masing entitas. Macam-macam atribut:
1. Key (primary key) dan atribut deskriptif
Key adalah atribut yang membedakan antara satu record dengan
record yang lain. Key bersifat unik. Record adalah kumpulan dari isi
atau nilai atribut. Atribut deskriptif adalah atribut yang tidak
menjadi primary key
2. Simple Attribute dan Composite attribute
Simple attribute adalah atribut yang tidak dapat diuraikan lagi.
Composite attribute adalah atribut yang dapat dibagi menjadi
bagian-bagian atribut.
14
3. Single Valued Attribute dan Multivalued Attribute
Single valued attribute adalah atribut yang memiliki satu dan hanya
satu nilai pada setiap record. Multivalued attribute adalah atribut
yang dapat memiliki lebih dari satu nilai.
4. Mandatory attribute dan Nonmandatory attribute
Mandatory attribute adalah atribut yang harus memiliki nilai (tidak
boleh bernilai NULL). Nonmandatory attribute adalah atribut yang
boleh tidak memiliki nilai (boleh NULL).
5. Derived Attribute
Derived attribute adalah atribut yang nilainya dapat diperoleh dari
atribut lain atau hasil pengolahan.
b. Relasi
Relasi adalah hubungan antar entitas. Relasi yang mungkin terjadi :
1. Relasi satu lawan satu (One To One Relationship)
Setiap entitas pada himpunan entitas yang satu tepat berelasi dengan
satu entitas pada himpunan entitas yang lain.
2. Relasi satu lawan banyak ( One to Many Relationship)
Setiap entitas pada himpunan entitas yang satu berelasi dengan
banyak (lebih dari satu) entitas pada himpunan entitas yang lain.
3. Relasi banyak lawan banyak (Many to Many Relationship)
Banyak entitas pada himpunan entitas yang satu berelasi dengan
banyak entitas pada himpunan entitas yang lain.
15
2. Logical Design
Tahap logical design berisi penerjemahan conceptual schema ke
model data yang digunakan suatu DBMS. Pada tahap logical design juga
dilakukan optimalisasi database yang digunakan, biasanya menggunakan
teknik normalisasi.
Tahap logical design menghasilkan logical schema database yang
mengacu pada logical data model (saat ini logical data model yang banyak
digunakan adalah relational model).
Logical model mempresentasikan data tanpa melibatkan physical
details. Tahap logical design melakukan restrukturisasi ER Diagram dan
mentranslasikan ER Diagram tersebut ke bentuk relational model.
a. Restrukturisasi ER Diagram
Langkah-langkah dalam restrukturisasi ER Diagram:
1. Analisa redundansi
Redudansi pada ER Diagram adalah data yang diperoleh dari data
yang lain.
Macam redundansi:
a) Redundansi akibat adanya nilai atribut yang didapat dari
atribut yang lain pada entitas atau relasi yang sama.
b) Redundansi akibat adanya nilai atribut yang didapat dari
proses perhitungan.
16
c) Redundansi akibat adanya relasi yang didapat dari relasi yang
lain.
2. Hilangkan Generalisasi
Generalisasi yang ada pada ER Diagram tidak dapat langsung
ditranslasikan ke bentuk relational model. Ada 3 cara untuk
menghilangkan generalisasi:
a) Meleburkan entitas-entitas anak ke dalam entitas induk
b) Memecah entitas induk ke dalam entitas-entitas anak.
c) Mengganti generalisasi yang ada dengan relasi.
3. Memecah/menggabungkan entitas-entitas dan relasi-relasi
Memecah maupun menggabungkan entitas-entitas dan relasi-relasi
dapat dilakukan dengan tujuan efisiensi operasional/akses. Akses
akan berkurang dengan adanya pemisahan atribut konsep sama
yang diakses dengan operasional yang berbeda. Akses juga akan
berkurang dengan penggabungan atribut dari konsep berbeda yang
diakses operasional yang sama. Pemecahan entitas dilakukan bila:
a) Informasi yang sering diakses hanya sebagian kecil dari atribut
yang dimiliki entitas tersebut.
b) Atribut pada entitas yang bernilai banyak.
4. Tentukan Primary Key
Primary key merupakan komponen yang penting untuk dapat
mentranslasikan ER Diagram ke relational model.
17
b. Translasi ER Diagram ke bentuk relational model
Ada 2 langkah yang dilakukan dalam translasi ER diagram ke dalam
bentuk relational model, yaitu:
1. Normalisasi
Normalisasi bertujuan untuk:
a) Memudahkan perancangan database
b) Memperkecil redundansi
c) Memudahkan proses update pada database
Langkah-langkah normalisasi:
a) Mentransformasikan semua data ke dalam tabel 2 dimensi
Bentuk unnormalisasi dapat terjadi karena setiap record dapat
memiliki lebih dari 1 nilai.
Pada langkah ini, data yang berulang akan dihilangkan.
b) Menentukan kunci/key dan item data yang berkaitan dengan
kunci tersebut.
Dalam proses normalisasi ada 2 bentuk normal, yaitu:
1. Bentuk Normal Pertama
yaitu seluruh baris pada tabel bergantung terhadap seluruh
kunci pada tabel tersebut.
18
2. Bentuk Normal Kedua
berisi pemecahan tabel normal pertama menjadi tabel-tabel
yang baru. Pemecahan akan dilakukan bila ada atribut bukan
kunci yang tidak tergantung penuh pada atribut kunci.
c) Memisahkan item data yang bergantung pada item data yang
bukan kunci.
Pemisahan tabel normal kedua dilakukan bila ada item data
yang bergantung secara tidak langsung (transitive dependency)
pada item data bukan kunci.
2. Relational Model
Relational model adalah model yang menggambarkan database
dalam bentuk tabel 2 dimensi yaitu baris dan kolom. Tiap baris
menggambarkan atribut sedangkan tiap kolom menggambarkan
record. Sifat relational model:
a) Tidak ada baris yang sama nilainya
b) Urutan baris dan kolom bebas
c) Nilai data atomic/tidak dapat dipecah lagi.
Komponen dalam relational model:
a) Tabel
Setiap entitas dan relasi pada ER Diagram akan menjadi tabel
pada relational model.
19
b) Kunci
Setiap record pada tabel harus mempunyai unsur unik dalam
nilai tiap atributnya. Unsur unik tersebut dapat dikelompokkan
dalam kolom tersendiri.
Setiap tabel memiliki jenis kunci yang berbeda dan antara
kunci yang satu dengan kunci yang lain dapat digabungkan.
Fungsi kunci adalah untuk menggambarkan relasi yang ada
dan juga sebagai pengenal. Jenis kunci pada tabel:
a. Primary Key
Nilai atribut yang membedakan record yang satu dengan
record yang lain.
b. Secondary Key
Nilai dari atribut yang tidak terlalu unik tetapi juga dapat
digunakan untuk melengkapi primary key, dalam
membedakan record yang satu dengan record yang lain.
c. Foreign Key
Nilai dari atribut pada record pada suatu tabel yang
merupakan primary key pada record di tabel lain.
c) Relasi
Relasi yang ada pada relational model yaitu: relasi dalam tabel
(relasi antar atribut dalam tabel) dan relasi antar tabel.
20
3. Physical Design
Tahap physical design menghasilkan logical schema, yang dilengkapi
dengan detail-detail implementasi database secara fisik (organisasi file dan
indeks) sesuai DBMS yang digunakan.
2.4. Oracle Database
Relational database/basis data relasional adalah kumpulan relasi.
Relational database dapat diakses dengan menggunakan SQL (Structured
Query Language).
Berdasarkan fungsinya perintah-perintah dalam SQL dibedakan
menjadi 5 golongan yaitu:
1. Data Retrieval
Perintah SQL yang berfungsi untuk membaca data dari database. Perintah
SQLnya meliputi: select.
2. DDL/Data Definition Language
DDL digunakan untuk mendefinisikan suatu database untuk pertama kali.
Perintah SQLnya meliputi antara lain: create, alter, drop, rename, truncate.
3. DML/Data Manipulation Language
DML digunakan untuk meng-queri dan meng-update isi dari suatu
database. Perintah SQLnya meliputi antara lain: insert, update, delete, dan
merge.
21
4. Transaction Control
Perintah-perintah yang berfungsi untuk mengatur perubahan-perubahan
yang dilakukan oleh perintah-perintah dalam pernyataan DML. Perintah-
perintah SQLnya meliputi: commit, rollback, savepoint.
5. DCL/Data Control Language
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
26
2.5. Oracle PL/SQL (Procedural Language/Structured Query Language)
PL merupakan bagian pemrograman prosedural yang untuk melengkapi
SQL yang dianggap non prosedural.
Blok PL/SQL
Ada 3 blok dalam PL/SQL:
DECLARE
Bersifat opsional, berisi deklarasi variabel, kursor, dan user-define
exceptions, konstanta.
BEGIN
Bersifat mandatory, berisi perintah-perintah SQL.
EXCEPTION
Bersifat opsional, berisi tindakan/aksi yang akan dilakukan bila terjadi
error/kesalahan.
END
Bersifat mandatory, untuk mengakhiri blok PL/SQL.
Procedure/Prosedur
Prosedur adalah blok PL/SQL yang digunakan untuk memperbaiki kinerja
dan dapat disimpan dalam database. Prosedur berfungsi untuk memindahkan
kode dari aplikasi ke database. Sehingga kode tersebut akan dapat digunakan
oleh berbagai aplikasi yang menggunakan database yang sama. Langkah-
langkah pembuatan prosedur:
1. penulisan kode prosedur
27
2. kompilasi kode
3. eksekusi prosedur
Struktur dari prosedur dapat dilihat pada tabel 2.4
Tabel 2.4 Tabel Struktur Prosedur
Parameter Keterangan
Procedure_name Nama dari prosedur
Paramater Nama dari variabel PL/SQL yang
dihasilkan dari lingkungan pemanggil
prosedur, dipengaruhi mode yang
digunakan
Mode Tipe:
IN
OUT
IN OUT
Tipe data Tipe data yang umum digunakan di
PL/SQL: %TYPE,%ROWTYPE,skalar,
ataupun komposit
Blok PL/SQL Body dari prosedur yang akan
mendefinisikan aksi dari prosedur.
Function/Fungsi
Fungsi adalah blok PL/SQL yang mengembalikan sebuah nilai.
Keuntungan penggunaan fungsi:
1. merupakan perluasan SQL, untuk menjalankan perintah SQL yang terlalu
kompleks atau yang tidak tersedia dengan SQL biasa.
2. meningkatkan efisiensi dalam penyaringan data sesuai kondisi tertentu.
Perbedaan antara fungsi dan prosedur dapat dilihat pada tabel 2.5.
28
Tabel 2.5 Tabel Perbedaan Prosedur dan Fungsi
Prosedur Fungsi
Dieksekusi sebagai statemen PL/SQL Diinvoke sebagai bagian ekspresi
Header tidak mengandung klausa
RETURN
Header mengandung klausa RETURN
Mengembalikan 0 atau lebih nilai Mengembalikan nilai tunggal
Dapat mengandung statemen RETURN Mengandung minimal 1 statemen
RETURN
2.6. Oracle Developer
2.6.1 Forms Developer
Oracle Forms Developer merupakan piranti pengembang yang dibuat
Oracle untuk memudahkan pembuatan aplikasi yang menggunakan database
Oracle. Kemudahan dalam hal konektivitas/sambungan aplikasi terhadap
database yang digunakan. Karena Oracle Developer merupakan piranti
desain berbasis visual yang diciptakan berpasangan dengan database Oracle.
Aplikasi pada Forms Developer dapat memiliki 1 atau lebih form.
Untuk aplikasi yang kompleks, terdiri atas beberapa form dapat
digunakan menu program untuk mengintegrasikan form-form tersebut. Ada 2
jenis menu program, yaitu:
a. Menu utama : menu yang ditampilkan di bawah judul
29
b. Menu sekunder : menu yang terdapat dalam menu, biasa disebut sub
menu.
Pada Forms Developer dikenal adanya Object Navigator yaitu tempat
pengelompokkan obyek-obyek yang terdapat pada Forms Developer.
Obyek-obyek yang terdapat pada Oracle Forms antara lain:
1. Triggers
Blok PL/SQL yang ditulis dengan fungsi tertentu yang berhubungan
dengan even/kejadian spesifik/khusus pada database. Even khusus
seperti insert, update, atau delete pada database.
2. Alerts
Window yang akan menampilkan pesan kesalahan bila suatu kondisi
terpenuhi. Alert menampilkan pesan kesalahan atas aksi yang dilakukan
oleh user. Ada 3 jenis tipe alert:
a. Stop: alert yang mencegah user untuk melanjutkan aksi yang
dilakukan user, sistem menolak aksi yang dilakukan user.
b. Caution: alert yang hanya menampilkan peringatan pada user
atas aksi yang dilakukannya.
c. Note: alert yang hanya menampilkan catatan atas aksi user.
3. Data Blok
Merupakan kontainer yang menampung sekelompok obyek
seperti: text item, list, dan buttons.
Data blok tidak terlihat, hanya obyek-obyek yang terdapat pada
data blok yang akan terlihat pada waktu menjalankan aplikasi. Data
30
blok mengelompokkan obyek-obyek dalam suatu fungsi untuk
menampilkan, memanipulasi, atau menyimpan record dalam database.
4. Canvas
Tempat untuk meletakkan semua obyek pada form yang akan
ditampilkan dalam aplikasi. Merupakan permukaan dari sebuah
windows
5. List Of Values (LOVs) dan Record Group
Record Group merupakan daftar kumpulan field dari 1 atau beberapa
tabel. LOVs merupakan daftar atau tampilan dari sebuah record group.
6. Parameters
Parameter menampung nilai yang akan dilewatkan ke form lain.
7. Program Units
Berisi sub program yang terdapat pada suatu form. Program unit dapat
berupa fungsi, prosedur ataupun package.
8. Reports
Menampilkan report yang dibuat dengan Reports Developer.
9. Windows
Windows adalah obyek yang menampung seluruh obyek lain yang
terdapat dalam sebuah modul form.
Setiap form dapat memiliki 1 atau lebih obyek.
31
2.6.2 Reports Developer
Merupakan piranti untuk membuat laporan-laporan berdasar data yang
tersimpan dalam database melalui form yang telah dibuat.
Jenis laporan yang dapat dibuat menggunakan Reports Developer antara
lain: tabular, master-detail (group), form, form letter, mailing label.
Reports developer memiliki Object Navigator untuk mengatur obyek-
obyek dalam laporan. Obyek-obyek yang terdapat pada laporan antara lain:
a. Data Model
Merupakan tempat untuk mendefinisikan data-data yang digunakan dalam
laporan. Data-data yang didefinisikan antara lain:
1. Queries
Perintah select dari SQL.
2. Groups
Kumpulan field yang di-queri.
3. Column
Terdiri dari formula column, summary column, placeholder column.
4. Parameter
Terdiri dari sistem parameter dan user parameter. Merupakan form
yang digunakan sebagai parameter masukan laporan. Sistem
parameter telah didefinisikan Reports Developer dan digunakan untuk
mengubah pilihan pada saat runtime. User parameter didefinisikan
oleh pengembang aplikasi pada data model.
32
5. DataLinks
Untuk menghubungkan 2 queri, umumnya merupakan master-detail.
b. Paper Layout
Merupakan tempat untuk mendesain tampilan laporan. Paper layout
terdiri atas 4 bagian:
1. Header Section : halaman awal/pembuka laporan
2. Main Section : bagian utama laporan
3. Trailer Section : bagian akhir dari laporan
Obyek-obyek yang terdapat pada paper layout, antara lain:
1. text : untuk membuat label
2. frame : obyek yang mengelilingi field.
3. repeating frame : merupakan obyek yang mengelilingi field, yang
mewakili grup pada data model.
4. field : obyek untuk menampung data dari obyek kolom
pada data model.
c. Report Trigger
Trigger yang dikenakan pada laporan.
d. Program Unit
Kumpulan sub program yang ada pada laporan, meliputi: prosedur,
fungsi, atau package.
BAB III ANALISA DAN PERANCANGAN SISTEM
3.1. Analisa Sistem
3.1.1 Gambaran Umum Sistem
Pabrik melayani penjualan barang kepada konsumen bisa secara
langsung maupun melalui toko (toko Sanitas-Cirebon). Untuk penjualan
barang secara langsung, konsumen dapat memesan barang melalui telepon
atau datang ke lokasi pabrik. Perolehan barang yang sudah dibeli konsumen
bisa melalui pengiriman oleh staff pabrik atau pengambilan oleh konsumen
yang bersangkutan. Pengiriman barang oleh staff pabrik untuk pembelian
barang dalam jumlah banyak tidak selalu dapat dilakukan karena adanya
keterbatasan kendaraan. Penjualan melalui toko tentu saja dengan harga yang
lebih mahal daripada penjualan secara langsung ke konsumen. Harga yang
dikenakan terhadap konsumen berbeda-beda tergantung dari frekuensi dan
kuantitas pembelian barang konsumen itu sendiri. Konsumen yang sering
membeli barang dan dalam jumlah banyak maka akan dikenakan harga yang
lebih murah untuk barang yang sama, dibandingkan dengan konsumen yang
lain. Demikian juga dalam hal pembayaran, konsumen yang sering membeli
barang dan dalam jumlah banyak dapat membayar barang yang dibelinya
kemudian, beberapa minggu setelah pembelian.
Pabrik menjual botol-botol plastik berbagai jenis dan ukuran seperti:
botol 10cc, botol 30cc, botol 100cc, mangkok baking kecil, pot petis hitam,
34
jerigen 1 liter, sedotan, dan lain-lain. Konsumen pabrik meliputi: apotik,
rumah makan, perusahaan individu, dan lain-lain. Penyediaan barang setiap
jenisnya berbeda satu sama lain tergantung dari banyaknya penjualan atas
barang tersebut. Bila banyak barang yang terjual untuk jenis tertentu maka
barang jenis tersebut akan tersedia dalam jumlah banyak. Tidak ada batasan
yang pasti mengenai jumlah maksimum dan minimum persediaan suatu jenis
barang.
3.1.1.1 Gambaran Umum Sistem Lama
Persediaan tiap jenis barang dicatat secara manual ke dalam buku
persediaan barang. Pencatatan tersebut dilakukan pada setiap akhir jam
kerja.
Transaksi penjualan dicatat secara manual pada faktur yang
diberikan oleh staff keuangan. Faktur yang diberikan staff keuangan
mempunyai no urut tertentu yang nantinya akan diperiksa penggunaannya
oleh staff keuangan. Masing-masing faktur terdiri dari 3 lembar halaman
yang mempunyai warna berbeda-beda. Lembar pertama berwarna putih
diberikan pada konsumen yang membeli barang secara tunai. Faktur lembar
kedua berwarna merah muda digunakan untuk konsumen yang membeli
barang namun pembayarannya tidak pada saat pembelian. Faktur lembar
kedua digunakan sebagai bukti penerimaan barang. Bila konsumen tidak
membayar pada saat itu, konsumen yang mengambil barang harus
menandatangani faktur lembar pertama sampai lembar ketiga. Konsumen
35
tersebut menerima faktur lembar kedua sedangkan lembar pertama akan
disimpan oleh Staff Penjualan dan Inventori (Staff PI) selama konsumen
tersebut belum melakukan pembayaran. Faktur ketiga berwarna kuning
digunakan untuk arsip pabrik. Faktur lembar ketiga akan diperiksa oleh
staff keuangan.
Untuk konsumen yang sering dan membeli barang dalam jumlah
banyak, barang dapat diretur apabila ada cacat produksi (misal: bocor),
maka barang tersebut akan ditukar dengan barang yang sama sesuai dengan
jumlah barang yang diretur. Namun barang yang akan diretur tersebut harus
dalam keadaan bersih, sebelumnya tidak diisikan bahan-bahan yang dapat
menghambat proses pengolahan kembali barang tersebut. Barang
berkualitas baik yang sudah dibeli tidak bisa ditukar tambah atau
dikembalikan dengan uang atau barang lain. Bila ada retur maka jumlah
barang dalam stok akan dikurangi secara manual.
Akhir bulan, Staff PI akan menghitung secara manual penjualan
selama satu bulan. Kemudian hasil perhitungan penjualan beserta
persediaan barang pada akhir bulan tersebut akan dilaporkan pada owner.
3.1.1.2 Gambaran Umum Sistem Baru
Persediaan setiap jenis barang akan dicatat dengan menggunakan
komputer melalui sistem informasi penjualan dan inventori yang akan
dibuat.
36
Transaksi penjualan dicatat oleh Staff PI melalui komputer,
memanfaatkan sistem informasi penjualan dan inventori yang akan dibuat.
Faktur penjualan akan dicetak melalui printer, dibuat dengan rangkap dua.
Lembar pertama berwarna putih digunakan untuk konsumen yang membeli
secara tunai dan lembar kedua berwarna merah muda digunakan untuk
konsumen yang membeli barang namun pembayarannya dilakukan
kemudian. Konsumen yang membeli barang namun pembayarannya
dilakukan kemudian, harus menandatangani faktur rangkap dua tersebut.
Faktur lembar kedua akan diberikan ke konsumen sebagai bukti penerimaan
barang sedangkan lembar pertama akan disimpan oleh Staff PI selama
konsumen tersebut belum melakukan pembayaran.
Apabila ada retur penjualan maka retur akan dicatat oleh Staff PI
menggunakan komputer dan akan secara otomatis mengurangi stok barang
yang bersangkutan (karena barang yang di-retur adalah barang yang
berkualitas kurang baik maka tidak dapat dijual kepada konsumen yang
lain). Retur penjualan tidak mengurangi jumlah barang pada transaksi
penjualan, hanya akan mengurangi stok karena adanya penggantian barang
kepada konsumen.
Akhir bulan, sistem akan membantu Staff PI dalam menghitung
penjualan selama satu bulan tersebut.
Sistem akan membantu manager pabrik dalam pembuatan laporan.
Laporan dibuat secara otomatis oleh sistem. Manager pabrik menyiapkan
laporan dan membuat perencanaan berdasarkan laporan tersebut.
37
Sistem Informasi penjualan dan inventori berbasis web ini
memungkinkan owner untuk memantau dan menerima laporan hasil
penjualan dan retur secara langsung.
3.1.2 Use Case
Fungsi-fungsi sistem yang akan dibuat dapat digambarkan secara umum
dalam use case diagram yang dapat dilihat pada gambar 3.1.
45
3.2.1.2 Logical Database Design
Relational model dari ER Diagram setelah di-normalisasi dapat dilihat pada
gambar 3.8.
46
Gambar 3.8 Relational Model (setelah normalisasi)
* *
* ** *
**
**
**
** **
**
* *
*
**
**
**
**
Staff PI KodeStaffPI NamaStaffPI AlamatStaffPI KotaStaffPI NoTelpSTaffPI Pasword
Barang KodeBarang NamaBarang Satuan HargaProduksi HargaJual JumlahBarang StokMinimum StokMaksimum
Konsumen KodeKonsumen NamaKonsumen AlamatKonsumen KotaKonsumen NoTelpKonsumen
Masuk TanggalPemasukan KodePemasukan KodeStaffPI
DetailMasuk KodePemasukan KodeBarang JumlahBarang
Jual TanggalPenjualan KodePenjualan KodeStaffPI KodeKonsumen Discount TotalHarga
DetailJual KodePenjualan KodeBarang JumlahBarang HargaSatuan
ReturJual TanggalRetur KodeRetur KodePenjualan KodeKonsumen KodeBarang JumlahBarang KodeStaffPI
*
47
3.2.1.3 Physical Database Design
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
property palett. Klik kanan pilih smart triggers pilih when-mouse-
click masukkan perintah yang akan dijalankan bila gambar tersebut di-
klik. Perintah yang ada pada trigger image item dapat dilihat pada
lampiran b.
Untuk Membuat button pada datablok DB_TOOL:
Klik button dan tempatkan pada canvas. Ubah nama dan label dari
button. Klik kanan pilih trigger When-Button-Pressed dan isikan
perintah-perintah jika button tersebut ditekan. Perintah-perintah yang
ada pada trigger button dapat dilihat pada lampiran b.
6. Di bawah FRM_BARANG terdapat trigger yang akan dijalankan
sesuai dengan kejadian terhadap form. Contoh: trigger When-New-
Form-Instance merupakan trigger yang akan dijalankan setiap form
tersebut dijalankan. Trigger ini akan mempengaruhi proses
berjalannya suatu form. Untuk membaca data dari database pada saat
form dijalankan, perlu adanya perintah execute_query pada trigger
70
New-Form-Instance. Perintah pada trigger When-New-Form-Instance
dapat dilihat pada penjelasan form barang.
7. Simpan form yang dibuat ke folder yang lain. Karena bila tidak
disimpan, akan ada pesan kesalahan karena pada address/alamat file
yang ditampilkan yaitu mengacu pada folder penyimpanan file
sementara.
8. Untuk menjalankan form, sebelumnya jalankan dulu OC4J Instance
yaitu dengan cara start OC4J Instance pada menu Forms Developer
dan bila sudah selesai pilih shut down OC4J Instance. Kemudian
pastikan application URL dan Web Browser Locationnya benar yaitu
dengan cara klik edit, pilih preference, pilih runtime. Pada
application URL klik Default dan pada browser location pilih lokasi
dari web browser berupa aplikasi dari browser yang digunakan.
9. Jalankan form dengan meng-klik run form.
Form Login (FRM_LOGON)
1. Buat form baru, klik dua kali form. Klik kanan module1 dibawah
node form, pilih property palett untuk mengubah property dari form.
Pada nama, ubah module1 menjadi FRM_LOGON.
2. Klik 2 kali pada canvas atau klik canvas kemudian klik tanda tambah
yang berwarna hijau. Ubah nama pada canvas menjadi C_Login
dengan menampilkan property palett.
3. Klik 2 kali pada parameter. Ubah nama menjadi USER_ID_,
parameter data type menjadi Char, dan maksimum length menjadi 30.
71
4. Buat datablok DB_Login yang berisi 2 buah teks item untuk
menampung masukan dari user berupa username dan password dan 3
buah button yaitu button connect, cancel, dan exit secara manual.
Perintah-perintah yang terdapat pada trigger button connect dapat
dilihat pada lampiran B
5. Di bawah FRM_LOGON pada object navigator buat trigger When-
New-Form-Instance dan ON-LOGON. Perintah trigger dapat dilihat
pada lampiran B.
6. Buat alert a_fail_connect. Klik 2 kali pada alert, ubah nama alert
menjadi a_fail_connect. Pada title masukkan connection failed dan
pada message masukkan invalid username/password. Alert style pilih
stop dan button 1 label diisi OK. Button lain dikosongkan. Default
alert button pilih button 1.
7. Buat prosedur CENTER dan SELECT_USER. Perintah dalam
prosedur CENTER dan SELECT_USER dapat dilihat pada lampiran
B.
8. Simpan form yang dibuat ke folder yang lain. Karena bila tidak
disimpan, akan ada pesan kesalahan karena pada address yang
ditampilkan yaitu merupakan folder penyimpanan file sementara.
9. Jalankan form, sebelumnya jalankan terlebih dahulu OC4J Instance
Form Jual (FRM_JUAL)
1. Buat form baru, beri nama FRM_JUAL.
72
2. Klik kanan pada window, pilih property palett untuk mengubah
properti window. Pada nama ubah module1 menjadi W_Jual.
3. Klik 2 kali pada canvas atau klik canvas kemudian klik tanda tambah
yang berwarna hijau. Ubah nama pada canvas menjadi C_Jual
dengan menampilkan property palett.
4. Buat 3 buah datablok, datablok pertama menampung masukan dari
user (nama datablok: Jual), datablok kedua menampilkan data barang
(nama: DetailJual), dan yang ketiga merupakan datablok kontrol yang
berisi tombol-tombol untuk menampilkan atau mengubah data (nama:
DB_TOOL).
Cara membuat datablok Jual:
Klik dua kali datablok, pilih use datablock wizard. Klik next, pilih
table/view klik next. Klik browse pilih Jual. Masukkan field yang
tersedia sebagai database item. Klik next, masukkan nama dari
datablok, yaitu Jual. 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_Jual. Klik next pilih
item yang akan ditampilkan. Klik next, atur prompt atau label dari
masing-masing item/field. Klik next pilih bentuk yang akan
ditampilkan. Pilih bentuk form. klik next dan klik finish.
73
Cara membuat datablok DetailJual:
Klik dua kali datablok, pilih use datablock wizard. Klik next, pilih
table/view klik next. Klik browse pilih DetailJual. Masukkan field
yang tersedia sebagai database item. Klik next pilih create
relationship karena detailjual merupakan tabel detail dari tabel
master-detail. Datablok jual merupakan tabel master. Klik create
relationship untuk membuat relasi master-detail secara otomatis. Klik
Ok. Akan tampil mana yang sebagai master item dan mana yang
sebagai detail item. Klik next, masukkan nama dari datablok, yaitu
DetailJual. 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 item yang belum
ditampilkan datablok Jual. Klik next, atur prompt atau label dari
masing-masing item/field. Klik next pilih bentuk yang akan
ditampilkan, pilih bentuk tabular. Klik next masukkan jumlah record
yang akan ditampilkan misal: 5. Klik finish. Trigger ON-CLEAR-
DETAILS dan prosedur yang berkaitan dengan master-detail
(CHECK_PACKAGE_FAILURE,
CLEAR_ALL_MASTER_DETAILS,dan
QUERY_MASTER_DETAILS) akan terbentuk dengan sendirinya.
Pada datablok Jual sebagai master terisi relasi yang terbentuk. Klik
kanan pada relasi pilih property palett. Pada delete record behaviour,
pilih cascade, yaitu untuk menghapus record detail bila record master
74
dihapus. Perintah-perintah trigger ON-CLEAR-DETAILS, dan
prosedur:
CHECK_PACKAGE_FAILURE,
CLEAR_ALL_MASTER_DETAILS, dan
QUERY_MASTER_DETAILS dapat dilihat pada lampiran B.
Cara membuat DB_TOOL:
Buat datablok baru secara manual. Ubah nama datablok dengan
property palett. Klik kanan pada datablok yang dibuat pilih layout
editor.
Klik image item dan tempatkan pada canvas, dikelompokkan sebagai
datablok DB_TOOL. Klik kanan pada image item, ubah nama dari
property palett. Klik kanan pilih smart triggers pilih When-Mouse-
Click masukkan perintah yang akan dijalankan bila gambar tersebut
di-klik.
Adapun perintah-perintah pada image item dapat dilihat pada
lampiran B.
5. Di bawah FRM_Jual terdapat trigger yang akan dijalankan sesuai
dengan kejadian terhadap form. Contoh: trigger When-New-Form-
Instance merupakan trigger yang akan dijalankan setiap form tersebut
dijalankan. Trigger ini akan mempengaruhi proses berjalannya suatu
form. Untuk membaca data dari database pada saat form dijalankan,
perlu adanya perintah execute_query pada trigger New-Form-
75
Instance. Perintah pada trigger When-New-Form-Instance dapat
dilihat pada penjelasan form Jual.
6. Untuk membuat List Of Value (LOVs) bisa dengan cara klik 2 kali
LOVs kemudian klik kanan dan pilih LOVs wizard. Pilih new record
group based on a query, klik next. Klik build SQL Query pilih tabel
yang berelasi dengan record yang akan ditampilkan. Misalnya untuk
LOVs StaffPI, tabel yang digunakan adalah tabel StaffPI dan tabel
Jual. Pilih field yang akan termasuk dalam record group, misal
NamaStaffPI dari tabel StaffPI dan KodeStaffPI dari tabel Jual. Klik
next. Pilih item kolom dari record group yang akan ditampilkan
dalam LOVs, pilih semua. Klik next. Klik finish. Ubah nama record
group dengan menampilkan property palett dari record group yang
bersangkutan. Tampilkan property palett dari LOVs yang baru
dibuat. Ubah nama LOVs menjadi LOV_STAFFPI. Klik column
mapping properties, pada return item klik browse dan pilih item yang
akan mengandung LOVs (misal item teks pada datablok Jual).
Automatic display diganti Yes. Tampilkan property palett dari item
teks yang mau diisikan LOVs. Pada List Of Values isikan nama
LOVs yang dimaksud (dalam contoh ini: LOV_STAFFPI).
7. Simpan form yang dibuat ke folder yang lain. Karena bila tidak
disimpan, akan ada pesan kesalahan karena pada address file yang
ditampilkan yaitu merupakan folder penyimpanan file sementara.
76
8. Jalankan form, sebelumnya jalankan dulu OC4J Instance yaitu
dengan cara start OC4J Instance pada menu Forms Developer dan
bila sudah selesai pilih shut down OC4J Instance.
Form Menu (FRM_MENU)
Langkah-langkah pembuatan form menu hampir sama dengan form-form
lainnya hanya pada menu module yang ditampilkan property palett
FRM_MENU diisikan lokasi penyimpanan file menu yang akan
dijalankan. File menu yang dijalankan adalah file menu yang sudah
dikompilasi, yaitu yang ekstensinya .mmx bukan .mmb.
Menu yang sudah dikompilasi disimpan dalam file berekstensi .mmx.
Untuk form menu dibutuhkan parameter USER_ID_ untuk dilewatkan
pada saat pemanggilan. Form menu akan dipanggil bila user berhasil
login ke dalam sistem, maka form menu membutuhkan parameter yang
sama pada form login (FRM_LOGON).
Langkah-langkah pembuatan form staffpi, konsumen, returjual, dan form
masuk identik dengan langkah-langkah pembuatan form barang dan jual
hanya perlu disesuaikan dengan kebutuhan masing-masing form.
4.2.2.2 Pembuatan Laporan
Langkah-langkah pembuatan laporan (sebagai contoh laporan Penjualan)
sebagai berikut:
77
Laporan Penjualan (RPT_JUAL)
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:
Gambar 4.5 Form Input Data Staff PI
begin set_window_property('W_STAFFPI',title,'Input Data Staff Penjualan & Inventory '); 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('STAFFPI'); execute_query; last_record; GO_BLOCK('DB_STAFFPI'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
87
d. Form Input Data Konsumen
Form input data konsumen merupakan form untuk mencatat data dari
Konsumen PT. Sanitas-Cirebon. Form Input Data Konsumen dapat dilihat
pada gambar 4.6.
Perintah yang akan dijalankan pada waktu Form Input Data Konsumen
dijalankan:
begin set_window_property('W_KONSUMEN',title,'Input Data Konsumen '); 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('KONSUMEN'); execute_query; last_record; GO_BLOCK('DB_KONSUMEN'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
88
Gambar 4.6 Form Input Data Konsumen
e. Form Input Data Barang
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;
begin set_window_property('W_Masuk',title,'Transaksi Pemasukan Barang'); READ_IMAGE_FILE('E:\TA\PROGRAM1\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('MASUK'); execute_query; last_record; GO_BLOCK('DETAILMASUK'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
92
Gambar 4.8 Form Transaksi Pemasukan Barang
g. Form Transaksi Penjualan Barang
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
Barang dijalankan:
Gambar 4.9 Form Transaksi Penjualan Barang
begin set_window_property('W_JUAL',title,'Transaksi Penjualan Barang'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_new.bmp','ANY','db_tool.img_new'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_delete.bmp','ANY','db_tool.img_delete'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_save.bmp','ANY','db_tool.img_save'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_close.bmp','ANY','db_tool.img_close'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_first.bmp','ANY','db_tool.img_first'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_next.bmp','ANY','db_tool.img_next'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_prev.bmp','ANY','db_tool.img_prev'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_last.bmp','ANY','db_tool.img_last'); GO_BLOCK('JUAL'); execute_query; last_record; GO_BLOCK('DETAILJUAL'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
95
h. Form Transaksi Retur Penjualan Barang
Form Transaksi Retur Penjualan Barang merupakan form untuk mencatat
Transaksi Retur Penjualan Barang. Form Transaksi Retur Penjualan
Barang dapat dilihat pada gambar 4.10.
Untuk penambahan transaksi penjualan barang, setelah user meng-klik
image New, maka field TanggalRetur akan langsung terisi tanggal saat
transaksi retur penjualan barang diinputkan. KodeRetur tidak secara
otomatis terisi karena 1 KodeRetur bukan merupakan Primary Key dan
bisa terdiri atas banyak jenis barang (terjadi redundansi).
Perintah yang digunakan untuk men-generate Tanggal Penjualan secara
otomatis adalah:
Perintah tersebut terdapat pada trigger When-Mouse-Click pada image
New.
KodeStaffPI, KodePenjualan, dan Kode Konsumen, KodeBarang
merupakan LOVs, user diminta untuk memilih. KodeKonsumen akan
langsung terisi bila user memilih KodePenjualan. Yang merupakan input
bagi user hanyalah JumlahBarang dan KodeRetur.
BEGIN GO_BLOCK('RETURJUAL'); CREATE_RECORD; select sysdate into :jual.tanggalretur from dual; END;
96
Perintah yang akan dijalankan pada waktu Form Transaksi Retur
Penjualan Barang dijalankan:
Gambar 4.10 Form Transaksi Retur Penjualan Barang
begin set_window_property('W_RETUR',title,'Transaksi Retur Barang'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_new.bmp','ANY','db_tool.img_new'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_delete.bmp','ANY','db_tool.img_delete'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_save.bmp','ANY','db_tool.img_save'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_close.bmp','ANY','db_tool.img_close'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_first.bmp','ANY','db_tool.img_first'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_next.bmp','ANY','db_tool.img_next'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_prev.bmp','ANY','db_tool.img_prev'); READ_IMAGE_FILE('E:\TA\PROGRAM1\image\tool_last.bmp','ANY','db_tool.img_last'); GO_BLOCK('RETURJUAL'); execute_query; last_record; GO_BLOCK('DB_RETURJUAL'); execute_query; last_record; GO_BLOCK('DB_TOOL'); end;
97
i. Parameter Input Tanggal untuk Pembuatan Laporan
Desain parameter input tanggal untuk pembuatan laporan dapat dilihat
pada gambar 4.11.
Gambar 4.11 Parameter Input Tanggal untuk Pembuatan Laporan
j. Faktur Penjualan
Faktur penjualan merupakan bukti fisik dari transaksi penjualan. Faktur
penjualan dibuat rangkap 2. Lembar pertama akan diberikan pada
konsumen yang membeli barang secara tunai, lembar kedua akan
disimpan sebagai arsip. Contoh Faktur Penjualan dapat dilihat pada
gambar 4.12 Faktur Penjualan.
98
Gambar 4.12 Faktur Penjualan
k. Laporan Penjualan
Format laporan penjualan dapat dilihat pada gambar 4.13
99
Gambar 4.13 Laporan Penjualan
l. Laporan Persediaan Barang
Format laporan persediaan barang dapat dilihat pada gambar 4.14.
100
Gambar 4.14 Laporan Persediaan Barang
m. Laporan Barang Terjual
Format laporan barang terjual dapat dilihat pada gambar 4.15.
101
Gambar 4.15 Laporan Barang Terjual
n. Laporan Konsumen Yang Membeli Barang
Format laporan konsumen yang membeli barang dapat dilihat pada
gambar 4.16.
102
Gambar 4.16 Laporan Konsumen yang Membeli Barang
o. Laporan Retur Penjualan
Format laporan retur penjualan dapat dilihat pada gambar 4.17.
103
Gambar 4.17 Laporan Retur Penjualan
BAB V ANALISIS HASIL
Secara umum, Sistem Informasi Penjualan dan Inventori berbasis Web dapat
berfungsi dengan baik sehingga tidak menutup kemungkinan dapat digunakan dalam
kondisi yang sesungguhnya. Adapun kelebihan dan kekurangan dari sistem adalah
sebagai berikut:
5.1 Kelebihan Sistem
Kelebihan dari sistem yang dibuat adalah sebagai berikut:
1. Adanya batasan hak akses user yang berfungsi membagi tugas dan
kewenangan dari user.
2. KodePenjualan dan KodePemasukan di-generate secara otomatis,
sehingga user tidak perlu mengingat KodePenjualan atau KodePemasukan
yang terakhir digunakan, serta mencegah adanya kesalahan dalam
penentuan KodePenjualan atau KodePemasukan
3. Perhitungan dan penyimpanan nilai total setelah dikurangi discount akan
mempermudah karena tidak perlu menghitung secara manual. Nilai total
tersebut tidak akan berubah bila ada perubahan harga jual barang karena
sudah disimpan dalam field tersendiri dan juga bila sewaktu-waktu
diperlukan, data tersebut dapat dipergunakan tanpa harus melakukan
perhitungan terlebih dahulu.
4. User tidak dapat memasukkan atau mengupdate jumlah barang pada
transaksi penjualan atau retur penjualan melebihi jumlah barang yang
tersedia.
105
5. Sistem dibuat berbasis Web sehingga dapat diakses melalui jaringan
intranet maupun internet.
5.2 Kekurangan Sistem
Kekurangan dari sistem yang dibuat adalah sebagai berikut:
1. KodePenjualan dan KodePemasukan yang batal, menjadi tidak terpakai.
2. Belum adanya peringatan bila pada transaksi retur penjualan dimasukkan
data yang berbeda dari yang seharusnya (transaksi penjualan yang
bersangkutan dengan retur tersebut) karena pencatatan retur tidak
mempunyai primary key sehingga menyebabkan terjadinya redudansi. Oleh
karena itu tidak dapat direlasikan 1 kode retur hanya untuk 1 kode
penjualan.
3. Belum adanya peringatan bagi user bila user memasukkan atau
mengupdate jumlah barang pada transaksi penjualan atau retur penjualan
melebihi dari jumlah barang yang tersedia.
4. Laporan belum dapat diakses langsung dari sistem, tetapi melalui program
Reports Developernya karena waktu yang terbatas bagi penulis dalam
mengembangkan sistem.
BAB VI KESIMPULAN DAN SARAN
6.1 Kesimpulan
Sistem yang sudah dibuat cukup dapat bekerja dengan baik, sehingga tidak
menutup kemungkinan dapat digunakan dalam kondisi yang sesungguhnya.
Namun masih ada beberapa kekurangan, diantaranya adalah belum dapatnya
laporan diakses secara langsung melalui sistem yang dibuat dan akan adanya
kode pemasukan dan kode penjualan yang tidak terpakai.
6.2 Saran
1. Laporan dapat diakses dari sistem secara langsung untuk memudahkan
user.
2. Sistem dikembangkan lagi agar dapat diakses melalui internet untuk
memperluas wilayah pemasaran dan juga bisa berlaku untuk bidang usaha
lain dari PT. Sanitas-Cirebon.
DAFTAR PUSTAKA
Atzeni, Polo, Stefano, Ceri, Stefano, Paraboschi, and Riccardo, Torlone. (2000).
Database Systems Concepts, Languages and Architectures. England: The
McGraw-Hill Companies.
Febrian, Jack, Andayani, Farida. (2002). Kamus Komputer dan Istilah teknologi
Informasi. Bandung: CV. Informatika.
Hutabarat, Bernaridho I.. (2002). Pemrograman Oracle PL/SQL. Yogyakarta: Andi
Offset.
Pemrograman Menggunakan Oracle Developer Tingkat Lanjut. Yogyakarta: X-
Oerang Technology dan Penerbit Andi.
Whitten, Jeffery L., Bentley, Lonnie D., Dittman, Kevin C. (2004) System Analysis
& Design Methods. England: The McGraw-Hill Companies.
108
LAMPIRAN
109
LAMPIRAN A
Listing Perintah Pembuatan Tabel Pada Database
TABEL STAFFPI
CREATE TABLE "STAFFPI" (KODESTAFFPI VARCHAR2(5), NAMASTAFFPI VARCHAR2(50) NOT NULL, ALAMATSTAFFPI VARCHAR2(75), KOTASTAFFPI VARCHAR2(30), NOTELPSTAFFPI VARCHAR2(15), PASWORD VARCHAR2(10), CONSTRAINT STAFFPI_KODESTAFFPI_PK PRIMARY KEY (KODESTAFFPI)) )
TABEL BARANG
CREATE TABLE BARANG (KODEBARANG VARCHAR2(10), NAMABARANG VARCHAR2(30), SATUAN VARCHAR2(5), JUMLAHBARANG NUMBER(5,0), HARGAPRODUKSI NUMBER(5,), HARGAJUAL NUMBER(5,0), STOKMINIMUM NUMBER(5,0), STOKMAKSIMUM NUMBER(5,0), CONSTRAINT BARANG_KODEBARANG_PK PRIMARY KEY (KODEBARANG),
CONSTRAINT CK_JUMLAHBARANG CHECK (JumlahBarang >=0) )
TABEL KONSUMEN
CREATE TABLE "KONSUMEN" (KODEKONSUMEN VARCHAR2(10), NAMAKONSUMEN VARCHAR2(50), ALAMATKONSUMEN VARCHAR2(75), KOTAKONSUMEN VARCHAR2(50), NOTELPKONSUMEN VARCHAR2(15), CONSTRAINT KONSUMEN_KODEKONSUMEN_PK PRIMARY KEY (KODEKONSUMEN) )
TABEL MASUK
CREATE TABLE MASUK (TANGGALPEMASUKAN DATE, KODEPEMASUKAN NUMBER(10,0), KODESTAFFPI VARCHAR2(5), CONSTRAINT MASUK_KODEPEMASUKAN_PK PRIMARY KEY (KODEPEMASUKAN),
CONSTRAINT MASUK_KODESTAFFPI_FK FOREIGN KEY (KODESTAFFPI)
REFERENCES STAFFPI (KODESTAFFPI) )
TABEL DETAILMASUK CREATE TABLE DETAILMASUK (KODEPEMASUKAN NUMBER(10,0), KODEBARANG VARCHAR2(10), JUMLAHBARANG NUMBER(5,0), CONSTRAINT DETAILMASUK_KODEBARANG_FK FOREIGN KEY (KODEBARANG)
REFERENCES BARANG (KODEBARANG), CONSTRAINT DETAILMASUK_KODEPEMASUKAN_FK FOREIGN KEY (KODEPEMASUKAN)
REFERENCES MASUK (KODEPEMASUKAN) ON DELETE CASCADE )
TABEL JUAL
CREATE TABLE JUAL (TANGGALPENJUALAN DATE, KODEPENJUALAN NUMBER(10,0), KODESTAFFPI VARCHAR2(5), KODEKONSUMEN VARCHAR2(10), DISCOUNT NUMBER(3,0), TOTALHARGA NUMBER(10,0), CONSTRAINT JUAL_KODEPENJUALAN_PK PRIMARY KEY (KODEPENJUALAN),
CONSTRAINT JUAL_KODESTAFFPI_FK FOREIGN KEY (KODESTAFFPI
REFERENCES STAFFPI (KODESTAFFPI), CONSTRAINT JUAL_KODEKONSUMEN_FK FOREIGN KEY (KODEKONSUMEN)
REFERENCES KONSUMEN (KODEKONSUMEN) ) TABEL DETAILJUAL
CREATE TABLE DETAILJUAL (KODEPENJUALAN NUMBER(10,0), KODEBARANG VARCHAR2(10), JUMLAHBARANG NUMBER(5,0), HARGASATUAN NUMBER(5,0), CONSTRAINT DETAILJUAL_KODEBARANG_FK FOREIGN KEY (KODEBARANG)
REFERENCES "BARANG" (KODEBARANG), CONSTRAINT DETAILJUAL_KODEPENJUALAN_FK FOREIGN KEY (KODEPENJUALAN)
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');
execute_query; GO_BLOCK('BARANG'); last_record; GO_BLOCK('DB_BARANG'); execute_query; GO_BLOCK('DB_TOOL'); END;
111
Trigger WHEN-IMAGE-CLICK
IMG_DELETE – untuk menghapus
record
BEGIN GO_BLOCK('BARANG'); delete_record; commit_form; GO_BLOCK('DB_BARANG'); execute_query;
END;
Trigger WHEN-IMAGE-CLICK
IMG_CLOSE – untuk keluar dari
form
exit_form;
Trigger WHEN-IMAGE-CLICK
IMG_PREV – untuk menampilkan
record sebelumnya
BEGIN GO_BLOCK(BARANG); previous_record;
END;
Trigger WHEN-IMAGE-CLICK
IMG_NEXT – untuk menampilkan
record berikutnya
BEGIN GO_BLOCK(:Barang); next_record;
END; Trigger WHEN-IMAGE-CLICK
IMG_FIRST – untuk menampilkan
record pertama
BEGIN GO_BLOCK(:Barang); first_record;
END; Trigger WHEN-IMAGE-CLICK
IMG_LAST – untuk menampilkan
record terakhir
BEGIN GO_BLOCK(:Barang); last_record;
END;
Perintah-perintah pada trigger button Cancel Trigger When-Button-Pressed
PB_Cancel – Button untuk
membatalkan pemasukan record baru
BEGIN abort_query; GO_BLOCK('BARANG'); previous_record;
END;
Perintah pada trigger button
clear
Trigger When-Button-Pressed
PB_Clear – untuk mengosongkan
nilai dari tiap-tiap field
BEGIN
:BARANG.KODEBARANG := NULL;
:BARANG.NAMABARANG := NULL;
:BARANG.SATUAN := NULL;
:BARANG.JUMLAHBARANG := NULL;
:BARANG.HARGAPRODUKSI:= NULL;
:BARANG.HARGAJUAL := NULL;
:BARANG.STOKMINIMUM := NULL;
:BARANG.STOKMAKSIMUM := NULL;
END;
Perintah trigger dalam form login (FRM_LOGON)
Trigger pada button connect :
Trigger WHEN-BUTTON-PRESSED
DECLARE pl_id Paramlist; pl_name VARCHAR2(10) := ‘tempdata'; n_alert number;
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
Open_Form('E:\TA\PROGRAM\FORM\FRM_MENU_M.fmx',no_activate, no_session,pl_id); Exit_form;
end if; Open_Form('E:\TA\PROGRAM\FORM\FRM_MENU.fmx',no_activate, no_session,pl_id); Exit_form; else
n_Alert:=show_Alert('a_fail_connect');
end if; END;
Trigger ON-ERROR
DECLARE errnum NUMBER := ERROR_CODE; n_alert number;
BEGIN if errnum = 40301 THEN
n_alert := show_Alert('a_fail_connect');
end if; END;
Trigger pada button Cancel :
Trigger When-Button-Pressed
BEGIN :DB_LOGIN.TEXT_USER_NAME := NULL; :DB_LOGIN.TEXT_PASSWORD := NULL; end;
Trigger pada button Exit :
Trigger When-Button-Pressed
exit_form;
Trigger When-New-Form-Instance
DECLARE vUser VARCHAR2(80); vPassword VARCHAR2(80); Connect 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 '); CENTER('window1');
END;
Trigger ON-LOGON
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; 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;
top related