bab iv rancangan sistem dan program usulan · 40 bab iv rancangan sistem dan program usulan 4.1....
TRANSCRIPT
40
BAB IV
RANCANGAN SISTEM DAN PROGRAM USULAN
4.1. Analisis Kebutuhan Perangkat Lunak
Sebuah program komputer tanpa terasosiasi dengan dokumentasinya maka
belum disebut perangkat lunak (software), berikut ini adalah analisa kebutuhan
software aplikasi yang penulis usulkan:
4.1.1. Tahapan Analisis
Aplikasi Point of Sale untuk Koperasi Pegawai Bank Indonesia (KOPEBI)
terhubung pada jaringan intranet atau Local Area Network (LAN) Bank
Indonesia. Sistem ini dirancang menggunakan software Dreamweaver CS 3,
bahasa Program : PHP, Database Server : MySQL, Database Tools :
PhpMyAdmin dimana kasir dan administrator bisa melakukan transaksi dan proses
cetak laporan.
Berikut merupakan spesifikasi kebutuhan (system requirement) dari sistem
Aplikasi Point of Sale:
Halaman Kasir
A1 Kasir dapat menginput transaksi penjualan barang KOPEBI
A2 Kasir dapat melihat laporan penjualan harian barang KOPEBI
A3 Kasir dapat mengganti password atas user sendiri
41
Halaman Administrator
B1. Administrator dapat mengelola data pengguna
B2. Administrator dapat mengelola data barang
B3. Administrator dapat mengelola data Supplier
B4. Administrator dapat mengelola data Customer
B5. Administrator dapat mengelola data penjualan
B6. Administrator dapat mengelola data pembelian
B7. Administrator dapat melihat dan mencetak semua laporan
4.1.2. Use Case Diagram
Diagram use case digunakan untuk mendeskripsikan apa yang seharusnya
dilakukan oleh sistem. Berikut ini merupakan desain usulan Use Case Diagram
sistem point of sale pada Koperasi Pegawai Bank Indonesia.
1. Use Case Diagram Halaman Kasir
Gambar IV.1.
Use Case Diagram Halaman Kasir
uc Use Case Model
Kasir
Login kasir
Logout
Ganti password
Kembali
Update
password
Pilih Menu
Penjualan
Tampil data
penjualan
Input data
penjualan
Cari kode
customer & Kode
barang
tambah data
Selesai/Simpan
Cetak
Batal
Pilih Menu
Laporan
Tampil Laporan
Penjualan
Pilih Tgl Transaksi &
Cari Kode Customer
Tampilkan
Kembali
Cetak
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«include» «extend»
«extend»
«extend» «extend»
«include»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
42
Tabel IV.1
Deskripsi Use Case Diagram Halaman Kasir
Use Case Name Halaman Kasir
Requirement A1-A3
Goal Kasir dapat memproses transaksi
apabila ada customer yang ingin
membeli
Pre-conditions User telah melakukan login
Post-conditions Sistem melakukan validasi pada
proses login
Failed end condition User salah memasukan username
dan/atau password level kasir
Primary Actor Kasir
Main Flow / Basic Path 1. Kasir memasukkan username
beserta password pada form login
2. Sistem melakukan proses validasi
3. Sistem menampilkan pesan pesan
4. Kasir masuk ke ruang beranda dan
siap memproses transaksi atau
cetak laporan harian
Invariant -
2. Use Case Diagram Halaman Administrator
Gambar IV.2.
Use Case Diagram Halaman Administrator
class Use Case Model
Administrator
Login
Mengelola Data
Pengguna
Mengelola Data
Barang
Mengelola Data
Customer
Mengelola Data
Penjualan
Mencetak
Laporan
Tambah
Edit
Hapus
Cari
Kembali
Logout
Mengelola Data
Pembelian
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«include»
«include»
«include»
«include»
«include»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
43
Tabel IV.2.
Deskripsi Use Case Diagram Halaman Administrator
Use Case Name Administrator
Requirement B1-B7
Goal Administrator dapat mengelola data
master, transaksi dan laporan
Pre-conditions Administrator telah login
Post-conditions Mengelola data master, transaksi dan
laporan
Failed end conditions Administrator salah memasukan
username dan password level
administrasi
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator dapat mengelola Data
Pengguna
2. Administrator dapat mengelola data
barang
3. Administrator dapat mengelola data
Supplier
4. Administrator dapat mengelola data
Customer
5. Administrator dapat mengelola data
penjualan
6. Administrator dapat mengelola data
pembelian
7. Administrator dapat melihat,
mencetak semua Laporan
Invariant -
3. Use Case Diagram Halaman Administrator mengelola Data Pengguna
Gambar IV.3.
Use Case Diagram Kelola Data Pengguna Halaman Administrator
class Use Case Model
Admin
LoginPilih Data
Pengguna
Tampil Data
Pengguna
Edit
Hapus
TambahKembali
Update
Kembali
Tampilan Edit
Pengguna
«extend»
«include»
«extend»
«extend»
«extend»
«include»
«extend»
«extend»
«extend»
44
Tabel IV.3.
Deskripsi Use Case Diagram Kelola Data Pengguna Halaman Administrator
Use Case Name Mengelola Data Pengguna
Requirement B1
Goal Administrator dapat mengelola data
pengguna berdasarkan level pengguna
Pre-conditions Administrator telah login
Post-conditions Data pengguna bertambah atau ter-
update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
pengguna
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data
pengguna
2. Administrator menambahkan data
pengguna aplikasi
3. Administrator mengupdate level
pengguna serta password atau
perubahan username
Invariant 1b.Admin merubah username dan
password pengguna
4. Use Case Diagram Halaman Administrator mengelola Data Barang
Gambar IV.4.
Use Case Diagram Kelola Data Barang Halaman Administrator
class Use Case Model
Admin
Pilih Data
Barang
Tampilan Data
Barang
Login
Kembali Simpan
Tambah Barang
Cari
Tambah Kategori
Barang
Edit
Hapus
KembaliUpdate
Kembali
Tambah
Logout
Tampilan Kategori
Barang
«extend»
«include» «extend»
«extend»
«extend» «extend»
«extend» «include»
«extend» «extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
45
Tabel IV.4.
Deskripsi Use Case Diagram Kelola Data Barang Halaman Administrator
Use Case Name Mengelola Data Barang
Requirement B2
Goal Administrator dapat mengelola data
barang serta menambah kategori
barang
Pre-conditions Administrator telah login
Post-conditions Data barang bertambah atau ter-update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
barang
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data barang
2. Administrator menambahkan dan
merubah data barang
3. Administrator menambah dan
merubah kategori barang
Invariant -
5. Use Case Diagram Halaman Administrator mengelola Data Supplier
Gambar IV.5.
Use Case Diagram Kelola Data Supplier Halaman Administrator
uc Use Case Kelola Data Supplierl
Admin
Login Pilih Data
Supplier
Tampilan Data
Supplier
Tambah
Supplier
Form Input
Supplier Baru
Kembali
Simpan
Edit Supplier
Form Edit
Supplier
Simpan
Logout
Kembali
«extend»
«include»
«extend»
«include»
«extend»
«extend»
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
46
Tabel IV.5.
Deskripsi Use Case Diagram Kelola Data Supplier Halaman Administrator
Use Case Name Mengelola Data Supplier
Requirement B3
Goal Administrator dapat mengelola data
Supplier
Pre-conditions Administrator telah login
Post-conditions Data supplier bertambah atau ter-
update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
supplier
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data
supplier
2. Administrator menambahkan dan
merubah data supplier
Invariant -
6. Use Case Diagram Halaman Administrator mengelola Data Customer
Gambar IV.6.
Use Case Diagram Kelola Data Customer Halaman Administrator
class Use Case Model
Admin
Login Pilih Data
Customer
Tampilan Data
Customer
Tambah
Customer
Form Input
Customer Baru
Kembali
Simpan
Edit Customer
Form Edit
Customer
Simpan
Logout
Kembali
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
«include» «extend»
«extend»
«include»
«extend» «extend»
47
Tabel IV.6.
Deskripsi Use Case Diagram Kelola Data Customer Halaman Administrator
Use Case Name Mengelola Data Customer
Requirement B4
Goal Administrator dapat mengelola data
Customer
Pre-conditions Administrator telah login
Post-conditions Data customer bertambah atau ter-
update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
customer
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data
customer
2. Administrator menambahkan data
customer
3. Administrator merubah data
customer
Invariant -
7. Use Case Diagram Halaman Administrator mengelola Data Penjualan
Gambar IV.7.
Use Case Diagram Kelola Data Penjualan Halaman Administrator
class Use Case Model
Admin
Login Pilih Data
Penjualan
Tampil Data
Penjualan
Tambah
Penjualan
Barang
Form Tambah
Penjualan Barang
Cari Kode
Customer &
Kode Barang
Tambah
Transaksi
Tampilan
Transaksi
CetakBatalSelesai
Edit Data
Penjualan
Tampil Form Edit
Penjualan
CetakBatal
Selesai
Hapus
Logout
Kembali
Kembali
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
«extend» «include»
«extend»
«extend»
«include»
«extend»«extend» «extend»
«extend»
«include»
«extend»
«extend» «extend»«extend»
48
Tabel IV.7.
Deskripsi Use Case Diagram Kelola Data Penjualan Halaman Admin
Use Case Name Mengelola Data Penjualan
Requirement B5
Goal Administrator dapat mengelola data
Penjualan
Pre-conditions Administrator telah login
Post-conditions Data penjualan bertambah atau ter-
update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
penjualan
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data
penjualan
2. Administrator menambahkan data
penjualan
3. Administrator mengupdate data
penjualan berupa merubah dan
menghapus data serta membatalkan
transaksi penjualan
Invariant -
8. Use Case Diagram Halaman Administrator Mengelola Data Pembelian
Gambar IV.8.
Use Case Diagram Kelola Data Pembelian Halaman Administrator
uc Use Case Mengelola Data Pembelian
Admin
Login Pilih Data
Pembelian
Tampil Data
Pembelian
Tambah
Pembelian
Barang
Form Tambah
Pembelian Barang
Cari Kode Supplier &
Kode Barang
Tambah
Transaksi
Tampilan
Transaksi
CetakBatalSelesai
Edit Data
Pembelian
Tampil Form Edit
Pembelian
CetakBatal
Selesai
Hapus
Logout
Kembali
Kembali
«extend»
«include»
«extend» «include»
«extend»
«extend»
«include»
«extend»«extend»«extend»
«extend»
«include»
«extend» «extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
49
Tabel IV.8.
Deskripsi Use Case Diagram Kelola Data Pembelian Halaman Admin
Use Case Name Mengelola Data Pembelian
Requirement B6
Goal Administrator dapat mengelola data
Pembelian dari Supplier
Pre-conditions Administrator telah login
Post-conditions Data pembelian bertambah atau ter-
update
Failed end conditions Gagal menambah, mengedit,
menghapus dan mengupdate data
pembelian
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat data
pembelian
2. Administrator menambahkan data
pembelian
3. Administrator mengupdate data
pembelian berupa merubah dan
menghapus data serta membatalkan
transaksi pembelian
Invariant -
9. Use Case Diagram Halaman Administrator Mengelola Data Laporan
Gambar IV.9.
Use Case Diagram Kelola Laporan Halaman Administrator
class Use Case Model
Admin
Login
Pilih Laporan
Data Barang
Pilih Laporan
Data Customer
Pilih Laporan
Penjualan
Tampilan Cetak
Lap. Barang
Tampilkan
Kembali
Cetak
Tampilan Data
Customer
Kembali
Cetak
Pilih Tanggal &
Kode Barang
Tampilan Cetak Lap.
Data penjualan
Tampilan
Laporan
Penjualan
Kembali
Cetak
Logout
Tampilan Laporan
Data Barang
Tampilkan
Laporan
«extend»
«extend»
«extend»
«include»
«include»
«include»
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
50
Tabel IV.9.
Deskripsi Use Case Diagram Menu Laporan Halaman Administrator
Use Case Name Melihat dan mencetak semua laporan
pada aplikasi
Requirement B7
Goal Administrator dapat mengelola data
Penjualan
Pre-conditions Administrator telah login
Post-conditions Mencetak laporan sesuai kebutuhan
pada aplikasi
Failed end conditions Gagal mencetak laporan
Primary Actor Administrator
Main Flow / Basic Path 1. Administrator melihat dan
mencetak laporan data barang
2. Administrator menambahkan data
penjualan
3. Administrator mengupdate data
penjualan berupa merubah dan
menghapus data serta membatalkan
transaksi penjualan
Invariant -
4.1.3. Activity Diagram
Activity Diagram menggambarkan worlflow (aliran kerja) atau aktivitas dari
sebuah sistem atau proses bisnis, decision yang mungkin terjadi dan bagaimana
mereka berakhir. Activity Diagram juga dapat menggambarkan proses paralel
yang mungkin terjadi pada beberapa eksekusi. Berikut ini merupakan desain
usulan Diagram Activity Aplikasi Point Of Sale pada KOPEBI:
51
1. Activity Diagram Login Halaman Kasir
Gambar IV.10.
Activity Diagram Login Halaman Kasir
class Business Process Model
DatabaseAplikasi SistemKasir
Mulai
Username dan
Password
Request Validasi
Login ValidBeranda Kasir
Salah
Benar
52
2. Activity Diagram Penjualan Halaman Kasir
Gambar IV.11.
Activity Diagram Penjualan Halaman Kasir
class Business Process Model
Sistem AplikasiKasirCustomer
Mulai
Menyerahkan
Barang yang akan
dibeli ke kasir
Tampil Form
Penjualan
Cari Kode
Customer &
Barang
Menginformasikan
Jumlah bayarPembayaran
Memilih Barang
yang Akan dibeli
Tambah
Transaksi
Penjualan
Tampil Jumlah
biaya yang
harus dibayar
Input
Pembayaran
Proses
Transaksi
Cetak StrukMemberikan Struk
ke CustomerMenerima
Struk
T
Y
T
Y
T
Y
53
3. Activity Diagram Mengelola Data Pengguna Halaman Administrator
Gambar IV.12.
Activity Diagram Mengelola Data Pengguna Halaman Administrator
class Kelola Data Pengguna
Sistem AplikasiAdministrator
Mulai
Pilih Data
Customer
Tampil Form Data
Customer
Tambah Data
Customer
Decision
Input Data
Customer
merge
Selesai/Simpan
Data
Decision
Edit Data Customer
Tampil Form Edit
Hapus
Edit
merge
T
Y
(edit)
(tambah)
Y
54
4. Activity Diagram Mengelola Data Barang Halaman Administrator
Gambar IV.13.
Activity Diagram Mengelola Data Barang Halaman Administrator
class Kelola Data Barang
Sistem AplikasiAdministrator
Mulai
Pilih Data
Barang
Tampil Form Data
Barang
Tambah Data
Barang
Decision
Input Data Barang
Selesai/Simpan
Data
Decision
Edit Data Barang
Tampil Form Edit
Hapus
Edit
(tambah)
Y
merge
T
Y
(edit)
(up
da
te d
ata
)
55
5. Activity Diagram Mengelola Data Supplier Halaman Administrator
Gambar IV.14.
Activity Diagram Mengelola Data Supplier Halaman Administrator
act Activ ity Kelola Data Supplier
Sistem AplikasiAdministrator
Mulai
Pilih Data
Supplier
Tampil Form Data
Supplier
Tambah Data
Supplier
Decision
Input Data Supplier
merge
Selesai/Simpan
Data
Decision
Edit Data Supplier
Tampil Form Edit
Hapus
Edit
(tambah)
Y
merge
T
Y
(edit)
56
6. Activity Diagram Mengelola Data Customer Halaman Administrator
Gambar IV.15.
Activity Diagram Mengelola Data Customer Halaman Administrator
class Kelola Data Customer
Sistem AplikasiAdministrator
Mulai
Pilih Data
Customer
Tampil Form Data
Customer
Tambah Data
Customer
Decision
Input Data
Customer
merge
Selesai/Simpan
Data
Decision
Edit Data Customer
Tampil Form Edit
Hapus
Edit
(tambah)
Y
merge
T
Y
(edit)
57
7. Activity Diagram Mengelola Data Penjualan Halaman Administrator
Gambar IV.16.
Activity Diagram Mengelola Data Penjualan Halaman Administrator
class Kelola Data Penjualan Halaman Admin
Sistem AplikasiAdministratorCustomer
Mulai
Menyerahkan
Barang yang akan
dibeli ke User
Tampil Form
Penjualan
Cari Kode
Customer &
Barang
Menginformasikan
Jumlah bayarPembayaran
Memilih Barang
yang Akan dibeli
Tambah
Transaksi
Penjualan
Tampil Jumlah
biaya yang
harus dibayar
Input
Pembayaran
Proses
Transaksi
Cetak StrukMemberikan Struk
ke Customer
Memberikan
Struk ke
Customer
T
Y
T
Y
Y
T
Posisi Backup Kasir
58
8. Activity Diagram Mengelola Data Pembelian Halaman Administrator
Gambar IV.17.
Activity Diagram Mengelola Data Pembelian Halaman Administrator
act Actiiv ity Kelola Data Pembelian
Sistem AplikasiAdministratorSupplier
Mulai
Mengirim Barang
Berdasarkan Surat
Permintaan Pembelian
Cek Jumlah
Barang Sesuai
SPP
Input Transaksi Pembelian
(Tambah Data)Tampil Form
Pembelian
Cari Kode Supplier &
Kode Barang
Tampil Jumlah
PembayaranMemproses
Pembayaran
Proses Transaksi
Cetak FakturFaktur
Pembelian
untuk Arsip
Y
T
Y
T
59
9. Activity Diagram Mengelola Data Laporan Halaman Administrator
Gambar IV.18.
Activity Diagram Mengelola Data Laporan Halaman Administrator
class Kelola Data Laporan
Sistem AplikasiAdministrator
Mulai
Pilih Lap. Data
Barang
Decision Tampil Form
Lap. Data
Barang
Pilih Lap. Data
Customer
Tampil Lap. Data
Customer
Decision
Pilih Lap. Data
Supplier
Tampil Lap. Data
Supplier
Selesai
PrintDecision
Pilih Lap. Data
Penjualan
Decision Tampil Lap.
Penjualan
Pilih Lap. Data
Pembelian
DecisionTampil Lap. Data
Pembelian
T
Y
T
Y
T
Y
Y
T
Y
T
Y
Y
T
T
Y
TT
Y
T
60
4.2. Desain
Menjelaskan tentang desain database, desain software architecture dan
desain interface dari sistem yang dibuat. Tahap ini mentranslasi kebutuhan
perangkat lunak dari tahap analisis kebutuhan ke representasi desain agar dapat
diimplementasikan menjadi program pada tahap selanjutnya.
4.2.1. Database
Desain database menjelaskan hubungan antar data dalam basis data yang
terdiri dari object - object dasar yang mempunyai hubungan atau relasi antar object
–object tersebut. Dalam ERD hubungan atau relasi dapat terdiri dari sejumlah
entitas yang disebut dengan derajat relasi. ERD yang ada pada sistem ini sebagai
berikut:
61
1. Entity Relationship Diagram Aplikasi POS pada KOPEBI
Customer
kode
telp
nama
alamat
departemen
penjualandetail
nomor
idjualdetail
kodebarang
Qty
Harga Jual
Satuan
Memproses
transaksi
barang
stok hargajual
kode nama
stokmak
stokmin
satuan
letak
mengecek
dan mencari
memiliki kategori
idkategori
M
M
M
transaksi penjualan
user data
userid nama
password level
nomor
tanggal
kodecustomer
keterangan
userid
total
namabarang
Melakukan
Melakukan
M1
1M
hargabeli
transaksi pembelian
kodesupplier
nomor
tanggal
keterangan
userid
id
Melakukan
MM
Supplier
kode
teleponkota
1
pembeliandetail
nomor
idbelidetail
kodebarang
qty
hargabeli
Satuan
M
namabarang
namaalamat
Melakukan
1
Memproses
transaksi
Update
M
1
1
1
1
1
Gambar IV.19.
Entity Relationship Diagram
62
2. Logical Record Structure
User Data
UserID*
Nama
Password
Level
Barang
Kode*
Nama
Kategori**
Letak
Stok
Satuan
HargaBeli
HargaJual
StokMin
StokMak
Kategori
Barang
IdKategori*
Kategori
Penjualan
Nomor*
Tanggal
KodeCustomer **
Keterangan
Total
UserID**
Penjualan Detail
IdJualDetail*
Nomor**
KodeBarang **
NamaBarang
Qty
Satuan
HargaJual
Customer
Kode*
Nama**
Alamat**
Departemen
Telepon
1
M
1
M
1
M
1
M
1
M
Nomor*
Tanggal
KodeSupplier **
Keterangan
Total
UserID**
Pembelian
Pembelian Detail
IdBeliDetail*
Nomor**
KodeBarang **
NamaBarang
Qty
Satuan
HargaBeli
1
M
1
M1
M
Supplier
Kode*
Nama**
Alamat**
Kota
Telepon
1
M
Gambar IV.20.
Logical Record Structure
3. Spesifikasi File
Spesifikasi File menjelaskan tentang file-file yang akan digunakan dalam
rancangan aplikasi website yang di ajukan dan berguna sebagai media
penyimpanan data dari proses yang terjadi pada rancangan aplikasi. Penulis
membuat satu database yang bernama “pos.db” dengan spesifikasi file sebagai
berikut:
63
a. Spesifikasi File Tabel Barang
Nama Database : pos
Nama File : Tabel Barang
Akronim : barang.MYD
Tipe File : File Master
Akses File : Random
Panjang Record : 178 Byte
Software : MySQL
Kunci Field : kode
Tabel IV.10.
Spesifikasi Tabel Barang
No Elemen
Data
Nama
Field
Tipe
Data Size Keterangan
1
2
3
4
5
6
7
8
9
10
Kode
Nama
Kategori
Satuan
HargaBeli
HargaJual
Letak
Stok
StokMin
StokMak
kode
nama
kategori
satuan
hargabeli
hargajual
letak
stok
stokmin
stokmak
Varchar
Varchar
Varchar
Varchar
Double
Double
Varchar
Integer
Integer
Integer
10
35
30
20
-
-
50
11
11
11
Kode Barang; Primary Key
Nama Barang
Kategori; Foreign Key
Satuan Unit
Harga Beli Barang
Harga Jual Barang
Letak / Tempat Barang
Stok Barang
Stok Minimum Barang
Stok Maksimum Barang
64
b. Spesifikasi File Tabel Kategori Barang
Nama Database : pos
Nama File : Tabel Kategori Barang
Akronim : kategori.MYD
Tipe File : File Master
Akses File : Random
Panjang Record : 61 Byte
Kunci Field : IdKategori
Tabel IV.11.
Spesifikasi Tabel Kategori barang
No Elemen Data Nama
Field
Tipe
Data Size Keterangan
1
2
IdKategori
Kategori
idkategori
kategori
Integer
Varchar
11
50
Kode Kategori; Primary
Key
Kategori Barang
c. Spesifikasi File Tabel Supplier
Nama Database : pos
Nama File : Tabel Supplier
Akronim : supplier.MYD
Tipe File : File Master
Akses File : Random
Panjang Record : 145 Byte
Kunci Field : kode
65
Tabel IV.12.
Spesifikasi Tabel Supplier
No Elemen
Data Nama Field
Tipe
Data Size Keterangan
1
2
3
4
5
Kode
Nama
Alamat
Kota
Telepon
kode
nama
alamat
kota
telepon
Varchar
Varchar
Varchar
Varchar
Varchar
10
35
50
30
20
Primary Key
d. Spesifikasi File Tabel Customer
Nama Database : pos
Nama File : Tabel Customer
Akronim : customer.MYD
Tipe File : File Master
Akses File : Random
Panjang Record : 145 Byte
Kunci Field : nomor
Tabel IV.13.
Spesifikasi Tabel Customer
No Elemen
Data Nama Field
Tipe
Data Size Keterangan
1
2
3
4
5
Kode
Nama
Alamat
Departemen
Telepon
kode
nama
alamat
departemen
telepon
Varchar
Varchar
Varchar
Varchar
Varchar
10
35
50
30
20
Primary Key
66
e. Spesifikasi File Tabel Penjualan
Nama Database : pos
Nama File : Tabel Penjualan
Akronim : penjualan.MYD
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 65 Byte
Kunci Field : nomor
Tabel IV.14.
Spesifikasi Tabel Penjualan
No Elemen Data Nama Field Tipe Data Size Keterangan
1
2
3
4
5
6
7
Nomor
KodeCustomer
Tanggal
Keterangan
Total
JumlahBayar
UserID
nomor
kodecustomer
tanggal
keterangan
total
jumlahbayar
userid
Varchar
Varchar
Date
Varchar
Double
Double
Varchar
10
10
ShortDate
35
-
-
10
Nomor Transaksi;
Primary Key
Kode Customer;
Foreign Key
Tanggal Penjualan
Keterangan
Jumlah yang Harus Dibayar
Jumlah Pembayaran
ID Pengguna / User;
Foreign Key
f. Spesifikasi File Tabel Penjualan Detail
Nama Database : pos
Nama File : Tabel Penjualan
Akronim : penjualandetail.MYD
67
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 97 Byte
Kunci Field : IdJualDetail
Tabel IV.15.
Spesifikasi Tabel Penjualan Detail
No Elemen Data Nama Field
Tipe
Data Size Keterangan
1
2
3
4
5
6
7
IdJualDetail
Nomor
KodeBarang
NamaBarang
Satuan
Qty
HargaJual
Idjualdetail
nomor
kodebarang
namabarang
satuan
qty
hargajual
Integer
Varchar
Varchar
Varchar
Varchar
Integer
Double
11
10
10
35
20
11
-
ID Detail; Primary Key
Nomor Penjualan; Foreign Key
Kode Barang; Foreign Key
Nama Barang
Satuan Barang
Jumlah Barang
Harga Jual Barang
g. Spesifikasi File Tabel Pembelian
Nama Database : pos
Nama File : Tabel Pembelian
Akronim : pembelian.MYD
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 65 Byte
Kunci Field : nomor
68
Tabel IV.16.
Spesifikasi Tabel Pembelian
No Elemen Data Nama Field Tipe Data Size Keterangan
1
2
3
4
5
7
Nomor
KodeSupplier
Tanggal
Keterangan
Total
UserID
nomor
kodesupplier
tanggal
keterangan
total
userid
Varchar
Varchar
Date
Varchar
Double
Varchar
10
10
ShortDate
35
-
10
Nomor Transaksi;
Primary Key
Kode Customer;
Foreign Key
Tanggal Penjualan
Keterangan
Jumlah total
ID Pengguna / User;
Foreign Key
h. Spesifikasi File Tabel Pembelian Detail
Nama Database : pos
Nama File : Tabel Pembelian
Akronim : pembeliandetail.MYD
Tipe File : File Transaksi
Akses File : Random
Panjang Record : 97 Byte
Kunci Field : IdJualDetail
69
Tabel IV.17.
Spesifikasi Tabel Pembelian Detail
No Elemen Data Nama Field
Tipe
Data Size Keterangan
1
2
3
4
5
6
7
IdBeliDetail
Nomor
KodeBarang
NamaBarang
Satuan
Qty
HargaBeli
Idbelidetail
nomor
kodebarang
namabarang
satuan
qty
hargabeli
Integer
Varchar
Varchar
Varchar
Varchar
Integer
Double
11
10
10
35
20
11
-
ID Detail; Primary Key
Nomor Penjualan; Foreign Key
Kode Barang; Foreign Key
Nama Barang
Satuan Barang
Jumlah Barang
Harga Beli Barang
i. Spesifikasi File Tabel User
Nama Database : pos
Nama File : Tabel User
Akronim : userdata.MYD
Tipe File : File Master
Akses File : Random
Panjang Record : 10 Byte
Kunci Field : id_jadwal
Tabel IV.18.
Spesifikasi Tabel User
No Elemen Data Nama Field Tipe Data Size Keterangan
1
2
UserID
Nama
UserID
Nama
Varchar
Varchar
Varchar
20
35
Kode Pengguna; Primary Key
Nama Pengguna
70
3
4
Password
Level
Password
Level
Varchar 20
15
Password
Level Pengguna
4.2.2. Software Architecture
Metodologi berorientasi objek adalah suatu strategi pembangunan
perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan
objek yang berisi data dan operasi yang diberlakukan terhadapnya. Adapun
struktur kode yang diusulkan dalam penyusunan program ini sebagai berikut:
1. Component Diagram
Diagram komponen memperlihatkan organisasi serta kebergantungan
sistem/perangkat lunak pada komponen-komponen yang telah ada sebelumnya.
Diagram ini berhubungan dengan diagram kelas dimana komponen secara tipikal
dipetakan kedalam satu atau lebih kelas, antarmuka serta kolaborasi. Hubungan
antara Komponen (component) dengan kelas adalah bahwa komponen merupakan
subsistem berisi kelas-kelas yang bekerja sama merealisasikan antarmuka yang
diinstruksikan:
71
Gambar IV.21.
Component Diagram
2. Deployment Diagram
Diagram Deployment (Deployment Diagram) bersifat statis, diagram ini
memperlihatkan konfigurasi saat aplikasi di jalankan (run-time), memuat simpul-
simpul beserrta komponen-komponen yang ada didalamnya. Diagram ini sangat
berguna saat aplikasi kita berlaku sebagai aplikasi yang dijalankan pada banyak
mesin (distributed computing).
72
Gambar IV.22.
Deployment Diagram
4.2.3. User Interface
Rancangan layar atau user interface merupakan salah satu komponen dari
sistem yang dirancang berfungsi sebagai sarana komunikasi antara user dan
program sistem yang nantinya akan digunakan. Dibawah ini merupakan user
interface pada Sistem Aplikasi POS pada Koperasi Pegawai Bank Indonesia
(KOPEBI).
1. Halaman Login level kasir atau admin
Pengguna aplikasi dengan level kasir atau administrator harus melakukan
login terlebih dahulu untuk dapat menginput atau mengecek data-data serta
mencetak laporan pada aplikasi ini. Jika login berhasil maka menu-menu yang
sesuai dengan level data user akan tampilkan.
class Deployment Diagram
Network (LAN)
User
Application
Database Serv er
mysql
inetgw-proxy
php
73
Gambar IV.23.
Implementasi Rancangan Antar Muka Login
2. Halaman Beranda Kasir
Halaman ini berfungsi sebagai halaman untuk penggunaan aplikasi dalam
level kasir yang terdiri dari menu penjualan untuk menambah transaksi dan
laporan penjualan barang.
Gambar IV.24.
Halaman Beranda Kasir
74
3. Halaman Kasir Menu Penjualan Barang
Halaman ini berfungsi sebagai halaman untuk kasir dalam menginput
transaksi penjualan dari customer atau pegawai yang berbelanja di Koperasi
Pegawai Bank Indonesia (KOPEBI).
Gambar IV.25.
Halaman Kasir Menu Penjualan Barang
4. Halaman Administrator Menu Data Barang
Halaman ini berfungsi untuk menampilkan data barang sudah diinput ke
dalam database. Administrator dapat menambahkan data barang baru, termasuk
menambah atau merubah kategori barang.
75
Gambar IV.26.
Halaman Administrator Menu Data Barang
Gambar IV.27.
Halaman Administrator Menu Kategori Barang
76
5. Halaman Administrator Menu Data Pengguna
Halaman ini berfungsi untuk menampilkan data user / pengguna aplikasi
yang sudah diinput ke dalam database. Administrator dapat menambahkan
pengguna baru, memilih level pengguna serta merubah atau mengupdate data dan
menghapus pengguna aplikasi POS ini.
Gambar IV.28.
Halaman Administrator Menu Data Pengguna
6. Halaman Administrator Menu Data Supplier
Halaman ini berfungsi sebagai halaman untuk administrator untuk
menambah, meng-update atau menghapus data supplier yang masih dan akan
menjadi rekanan KOPEBI dalam pengadaan barang-barang di KOPEBI.
77
Gambar IV.29.
Halaman Administrator Menu Data Supplier
7. Halaman Administrator Menu Penjualan Barang
Halaman ini berfungsi sebagai halaman untuk administrator sebagai
fungsinya membackup kasir dalam menginput transaksi penjualan dari customer
atau pegawai yang berbelanja di Koperasi Pegawai Bank Indonesia (KOPEBI).
Gambar IV.30.
Halaman Administrator Menu Penjualan Barang
78
8. Halaman Administrator Menu Pembelian Barang
Halaman ini berfungsi sebagai halaman bagi administrator untuk menambah
transaksi pembelian dari supplier sesuai dengan faktur pembelian yang diberikan
oleh supplier berdasarkan dari surat permintaan pembelian dari KOPEBI.
Gambar IV.31.
Halaman Administrator Menu Pembelian Barang
Gambar IV.32.
Halaman Administrator Transaksi Pembelian
79
9. Halaman Administrator Menu Laporan Data Barang
Halaman ini berfungsi untuk melihat dan mencetak laporan data barang
yang tersedia di Koperasi Pegawai Bank Indonesia (KOPEBI), adapun rancangan
antarmukanya adalah sebagai berikut:
Gambar IV.33.
Halaman Administrator Menu Laporan Data Barang
10. Halaman Administrator Menu Laporan Data Supplier
Halaman ini berfungsi untuk melihat dan mencetak laporan data supplier
yang menyuplai barang baik makanan, alat tulis kantor, dan barang-barang lain ke
KOPEBI.
Gambar IV.34.
Halaman Administrator Menu Laporan Data Supplier
80
11. Halaman Administrator Menu Laporan Data Customer
Halaman ini berfungsi untuk melihat dan mencetak laporan data customer
dalam hal ini yaitu pegawai yang bekerja di Bank Indonesia, adapun rancangan
antarmukanya adalah sebagai berikut:
Gambar IV.35.
Halaman Administrator Menu Laporan Data Customer
12. Halaman Administrator Menu Laporan Data Penjualan
Halaman ini berfungsi untuk melihat dan mencetak semua laporan penjualan
serta laporan berdasarkan waktu dan kode customer. Adapun tampilan
antarmukanya adalah sebagai berikut:
Gambar IV.36.
Halaman Administrator Menu Laporan Data Penjualan
81
4.2. Code Generation
Metodologi berorientasi objek merupakan suatu cara bagaimana sistem
perangkat lunak dibangun melalui pendekatan objek secara sistematis. Berikut ini
merupaka bahasa pemrograman berorientasi objek yang penulis gunakan untuk
membuat aplikasi persediaan elektrikal:
1. Form Index untuk Login
<?php
@session_start();
require_once("inc/config.php");
require_once("inc/functions.php");
if(isset($_SESSION['gliese581netjspos']) && $_SESSION['gliese581netjspos']
== 1) redirect_to("home.php");
if(isset($_POST['submit'])){
$uid=addslashes(strtolower(trim($_POST['USERID'])));
$pass=addslashes($_POST['PASSWORD']);
$q = mysql_query("select * from userdata where userid='$uid' and
password='$pass' limit 1", $koneksi);
if(mysql_num_rows($q) != 0){
$u = mysql_fetch_array($q);
$_SESSION['gliese581netjspos'] = 1;
$_SESSION['UIDPOS'] = $u['userid'];
$_SESSION['DPOS'] = 0;
$_SESSION['LEVELPOS'] = $u['level'];
$_SESSION['TGL1'] = date("d-m-Y");
$_SESSION['TGL2'] = date("d-m-Y");
session_start();
redirect_to("home.php");
} else {
redirect_to("index.php?e=1");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="copyright" content="2012 <?php get_perusahaan(); ?>. All
Rights Reserved." />
<title>Point of Sale - <?php get_perusahaan(); ?></title>
82
<meta name="description" content="Pengolahan Data Barang (Inventory) di
<?php get_perusahaan(); ?>" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
div#top {
height: 110px;
}
input#USERID, input#PASSWORD {
text-align: center;
padding: 8px 4px;
width: 300px;
border: 1px solid #bbb;
}
</style>
</head>
<body>
<?php require_once("_top.php"); ?>
<div id="middle" style="border:0px double #069; background:#FFF
url(images/gradient_gray_2.png) top left
repeat-x; width:580px; border-bottom-left-radius: 20px; border-bottom-right-
radius: 20px; margin: 39px auto 16px auto;
padding:24px 0 40px 0; box-shadow: 0 5px 8px #444;">
<div class="">
<h2 class="title" style="margin-top:16px;"> Login Pengguna</h2><br
/><br />
<div class="mid" style="background:#fff repeat; width:400px; margin: 0
auto; border: 8px double #777; border-radius:16px; padding:28px 0;">
<?php if(isset($_GET['e'])){?>
<p style="text-align:center; margin-bottom:16px; color:#FF0000;">User
ID dan Password tidak sesuai!</p>
<?php } ?>
<form id="form1" name="form1" method="post" action="index.php"
style="text-align:center">
<p><strong>User ID:</strong></p>
<p>
<input name="USERID" type="text" id="USERID" style="border-
radius:6px;" value="" size="50" />
</p>
<p> </p>
<p><strong>Password:</strong></p>
<p><input name="PASSWORD" type="password" id="PASSWORD"
style="border-radius:6px;" value="" size="50" /></p>
<p> </p>
<p><input class="newcontent" style="cursor:pointer;" name="submit"
type="submit" value=" LOGIN " /></p>
</form>
</div>
</div>
83
</div>
<?php require_once("_footer.php"); ?>
</div>
</body>
</html>
2. Form Index Menu Penjualan
<?php
@session_start();
require_once("../inc/config.php");
require_once("../inc/functions.php");
if(!isset($_SESSION['gliese581netjspos'])) redirect_to("../index.php");
$tipe = "penjualan";
$konten = ucfirst($tipe);
$userid = $_SESSION['UIDPOS'];
if(isset($_GET['batal'])){
if(isset($_SESSION['DPOS']) && $_SESSION['DPOS'] == 1){
if($_SESSION['UIDPOS'] != 'a') { redirect_to("../disabled.php"); }
}
$kodejual = addslashes(trim($_GET['batal']));
$qd = mysql_query("select * from penjualandetail where
nomor='$kodejual'", $koneksi);
if(mysql_num_rows($qd) != 0){
while($rcd = mysql_fetch_array($qd)){
$iss = mysql_query("update barang set stok=stok+$rcd[qty]
where kode='$rcd[kodebarang]'",$koneksi);
}
}
$iss = mysql_query("delete from penjualandetail where
nomor='$kodejual'",$koneksi);
$iss = mysql_query("delete from penjualan where
nomor='$kodejual'",$koneksi);
reset_increment("penjualan");
redirect_to("jual.php");
}
if(isset($_GET['nomor'])){
$kodejual = addslashes(trim($_GET['nomor']));
if(isset($_GET['d'])){
if(isset($_SESSION['DPOS']) && $_SESSION['DPOS'] == 1){
if($_SESSION['UIDPOS'] != 'a') { redirect_to("../disabled.php"); }
}
$kh = (int)$_GET['d'];
$kb = get_data("penjualandetail","kodebarang","idjualdetail",$kh);
$qb = get_data("penjualandetail","qty","idjualdetail",$kh);
$u = mysql_query("update barang set stok=stok+$qb where
kode='$kb'", $koneksi);
84
if($u) $qd = mysql_query("delete from penjualandetail where
idjualdetail='$kh' limit 1");
$tot =
get_total("hargajual*qty","penjualandetail","nomor='$kodejual'");
$h = mysql_query("update penjualan set total='$tot',
jumlahbayar='$tot' where nomor='$kodejual'", $koneksi);
redirect_to("jual.php?nomor=$kodejual");
}
$qd = mysql_query("select * from penjualan where nomor='$kodejual' limit
1", $koneksi);
if(mysql_num_rows($qd) != 0){
$dd = mysql_fetch_array($qd);
$kodes = $dd['kodecustomer'];
$namas = get_data("customer","nama","kode",$dd['kodecustomer']);
$tglp = set_date_from_db($dd['tanggal']);
$kets = $dd['keterangan'];
$bayar = $dd['jumlahbayar'];
if ($bayar !=0){
$kembali = $bayar - $dd['total'];
} else {
$kembali = 0;
}
} else {
$kodes = "";
$namas = "";
$tglp = date("d-m-Y");
$kets = "";
}
} else {
$kodes = "";
$namas = "";
$tglp = date("d-m-Y");
$kets = "";
}
if(isset($_POST['insert'])){
if(isset($_GET['nomor'])){
$kodejual = addslashes(trim($_GET['nomor']));
$kodes = addslashes(trim($_POST['KODES']));
$ket = addslashes(trim($_POST['KET']));
$tgl = addslashes(trim($_POST['TGL']));
$jumb = (int)addslashes(trim($_POST['JUMB']));
if($kodes != "" && $tgl != ""){
$tgl = set_date_to_db($tgl);
$h = mysql_query("update penjualan set tanggal='$tgl',
kodecustomer='$kodes',
keterangan='$ket', userid='$userid', jumlahbayar='$jumb' where
nomor='$kodejual'", $koneksi);
}
85
}
redirect_to("index.php");
}
if(isset($_POST['faktur'])){
if(isset($_GET['nomor'])){
$kodejual = addslashes(trim($_GET['nomor']));
$kodes = addslashes(trim($_POST['KODES']));
$ket = addslashes(trim($_POST['KET']));
$tgl = addslashes(trim($_POST['TGL']));
$jumb = (int)addslashes(trim($_POST['JUMB']));
if($kodes != "" && $tgl != ""){
$tgl = set_date_to_db($tgl);
$h = mysql_query("update penjualan set tanggal='$tgl',
kodecustomer='$kodes',
keterangan='$ket', userid='$userid', jumlahbayar='$jumb' where
nomor='$kodejual'", $koneksi);
redirect_to("../laporan/faktur.php?nomor=$kodejual&tipe=penjualan");
} else {
redirect_to("index.php");
}
} else {
redirect_to("index.php");
}
}
if(isset($_POST['ADD'])){
$qk = mysql_query("select concat('PJ',lpad((coalesce(max(id),0)+1),8,0))
as kode from penjualan", $koneksi);
if(mysql_num_rows($qk) != 0){
$dk = mysql_fetch_array($qk);
$kode = $dk['kode'];
}
$kodes = addslashes(trim($_POST['KODES']));
$ket = addslashes(trim($_POST['KET']));
$tgl = addslashes(trim($_POST['TGL']));
$kodeb = addslashes(trim($_POST['KODEB']));
$namab = addslashes(trim($_POST['NAMAB']));
$qty = (int)addslashes(trim($_POST['QTY']));
$stokb = get_data("barang","stok","kode",$kodeb);
$satuan = addslashes(trim($_POST['SATUAN']));
$hbeli = (float)get_data("barang","hargabeli","kode",$kodeb);
$hargajual = (float)addslashes(trim($_POST['HARGA']));
if($hargajual < $hbeli){
if(isset($_GET['nomor'])){
redirect_to("jual.php?s=4&nomor=$_GET[nomor]");
} else {
redirect_to("jual.php?s=4");
}
86
}
$sb = (int)get_data("barang","stok","kode",$kodeb);
$stmin = (int)get_data("barang","stokmin","kode",$kodeb);
if($stmin!=0){
if(($sb - $qty) < $stmin){
if(isset($_GET['nomor'])){
redirect_to("jual.php?s=3&nomor=$_GET[nomor]&sm=$stmin");
} else {
redirect_to("jual.php?s=3&sm=$stmin");
}
}
}
if($kodes != "" && $tgl != "" && $kodeb != ""){
if(($stokb-$qty) < 0){
if(isset($_GET['nomor'])){
redirect_to("jual.php?s=2&nomor=$_GET[nomor]");
} else {
redirect_to("jual.php?s=2");
}
}
$tgl = set_date_to_db($tgl);
if(isset($_GET['nomor'])){
$kodejual = addslashes(trim($_GET['nomor']));
$h = mysql_query("update penjualan set tanggal='$tgl',
kode='$kodes',
keterangan='$ket', userid='$userid' where nomor='$kodejual'",
$koneksi);
} else {
$kodejual = $kode;
$h = mysql_query("insert into penjualan (nomor, tanggal,
kodecustomer, keterangan)
values('$kodejual','$tgl','$kodes','$ket')", $koneksi);
}
$i = mysql_query("insert into penjualandetail (nomor, kodebarang,
namabarang, qty, satuan, hargajual)
values('$kodejual','$kodeb','$namab','$qty','$satuan','$hargajual')", $koneksi);
if($i){
$u = mysql_query("update barang set stok=stok-$qty where
kode='$kodeb'", $koneksi);
}
$tot =
get_total("hargajual*qty","penjualandetail","nomor='$kodejual'");
$h = mysql_query("update penjualan set total='$tot',
jumlahbayar='$tot' where nomor='$kodejual'", $koneksi);
if($h){
redirect_to("jual.php?s=1&nomor=$kodejual");
87
} else {
redirect_to("jual.php?s=0&nomor=$kodejual");
}
} else {
if(isset($_GET['nomor'])){
redirect_to("jual.php?s=0&nomor=$_GET[nomor]");
} else {
redirect_to("jual.php?s=0");
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Penjualan Barang</title>
<link rel="stylesheet" href="../css/editor.css">
<link href="../thickbox/thickbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../scripts/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../thickbox/thickbox.js"></script>
<style type="text/css">
input.textshort, input.textshort2, input.text, textarea, select {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort {
width: 300px;
}
input.textshort2 {
width: 120px;
}
select {
width: 400px;
cursor: pointer;
}
textarea {
overflow: hidden;
height: 75px;
}
div.konten-items2 {
padding: 16px 32px;
88
background: #eee;
border-radius: 8px;
border: 3px solid #888;
}
input.textshort1 {
text-align: left;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table tr.header td {
text-align: center;
font-weight: bold;
background: #036;
color: #fff;
}
table.t input[type="text"] {
border: none;
}
input.textshort3 {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort21 {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table td.center {
text-align: center;
}
table td a {
color: #090;
}
table tr.isi {
background: #FFC;
}
</style>
<style type="text/css">
input.textshort, input.textshort2, input.text, textarea, select {
text-align: left;
89
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort {
width: 300px;
}
input.textshort2 {
width: 120px;
}
select {
width: 400px;
cursor: pointer;
}
textarea {
overflow: hidden;
height: 75px;
}
div.konten-items2 {
padding: 16px 32px;
background: #eee;
border-radius: 8px;
border: 3px solid #888;
}
input.textshort1 {
text-align: left;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table.t {
border: 1px solid #ccc;
}
table.t tr td {
border: 0px solid #ddd;
}
table tr.header td {
text-align: center;
font-weight: bold;
background: #036;
color: #fff;
}
table.t input[type="text"] {
border: none;
border: 1px solid #bbb;
}
input.textshort3 {
90
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort21 {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table td.center {
text-align: center;
}
table td a {
color: #090;
}
table tr.isi {
background: #FFC;
}
</style>
<script type="text/javascript">
$(function(){
$("#JUMB").keyup(function(){
var $subt = parseInt($("#JUMB").val()) - parseInt($("#GT").val());
$("#KB").val($subt);
});
});
</script>
</head>
<body>
<?php require_once("../inc/date-input.php"); ?>
<h1 class="samples" style="float:right; margin-top:16px;"><a
href="index.php"><< Kembali</a></h1>
<h1 class="samples" style="float:left; margin-top:16px;"><?php echo
$konten; ?> Barang </h1>
<?php
if(isset($_GET['s'])){
if($_GET['s'] == 1){
} elseif($_GET['s'] == 3) {
echo "<div class='satuan'>Jumlah barang kurang dari stok
minimum yang telah ditentukan!<br />
Stok minimum: " . $_GET['sm'] . "</div>";
} elseif($_GET['s'] == 2) {
91
echo '<div class="satuan">Data gagal disimpan. Stok Barang
tidak mencukupi!</div>';
} elseif($_GET['s'] == 4) {
echo '<div class="satuan">Data gagal disimpan. Harga jual
harus lebih besar dari harga beli!</div>';
} else {
echo '<div class="satuan">Data gagal disimpan. Data belum
lengkap!</div>';
}
}
?>
<br style="clear:both;" />
<div class="konten-items">
<form action="" method="post">
<table width="100%" border="0" cellpadding="1" cellspacing="0">
<tr>
<td width="6%">Tanggal:</td>
<td width="20%"><input value="<?php echo $tglp;?>"
class="textshort2" name="TGL" type="text" id="TGL" size="35"
maxlength="35" /></td>
<td width="11%">Customer | <a class="thickbox"
href="../load/customer.php?width=960&height=400">Cari:</a></td>
<td width="63%"><input name="KODES" type="text"
class="textshort2" id="KODES" value="<?php echo $kodes;?>" size="35"
maxlength="35" readonly="readonly" />
<input name="NAMAS" value="<?php echo $namas;?>" type="text"
disabled="disabled" class="textshort" id="NAMAS" size="35" maxlength="35"
/></td>
</tr>
<tr>
<td><input name="TRAN" type="hidden" id="TRAN" value="JUAL"
/></td>
<td valign="top"><em>dd-mm-yyyy</em></td>
<td>Keterangan:</td>
<td><input class="text" value="<?php echo $kets;?>" name="KET"
type="text" id="KET" size="35" maxlength="35" /></td>
</tr>
</table>
<p>
<table width="100%" height="0" border="1" cellpadding="3"
cellspacing="0" class="t">
<tr class="header">
<td width="14%" height="30" align="center"
valign="middle"><strong>Kode Barang | <a class="thickbox"
href="../load/barang.php?width=960&height=400">Cari</a></strong></td>
<td width="29%" align="center" valign="middle"><strong>Nama
Barang</strong></td>
92
<td width="6%" align="center"
valign="middle"><strong>QTY</strong></td>
<td width="14%" align="center"
valign="middle"><strong>Satuan</strong></td>
<td width="15%" align="center" valign="middle"><strong>Harga
Jual</strong></td>
<td width="22%" align="center" valign="middle">Sub Total</td>
<td width="22%" align="center"
valign="middle"><strong>Action</strong></td>
</tr>
<tr>
<td height="0"><input name="KODEB" type="text" class="textshort2"
id="KODEB" readonly="readonly" /></td>
<td><input style="width:250px;" name="NAMAB" type="text"
class="textshort ro" id="NAMAB" readonly="readonly" /></td>
<td><input name="QTY" type="text" class="textshort2 angka" id="QTY"
style="text-align:right; width:50px;" /></td>
<td><input name="SATUAN" style="width:90px" type="text"
class="textshort2 ro" id="SATUAN" readonly="readonly" /></td>
<td><input name="HARGA" type="text" class="textshort2 angka"
id="HARGA" style="text-align:right" /></td>
<td class="center"><input name="SUBTOTAL" type="text"
class="textshort2 angka" id="SUBTOTAL" style="text-align:right"
readonly="readonly" /></td>
<td class="center"><input type="submit" name="ADD" id="ADD"
value="ADD" /></td>
</tr>
<?php
if(isset($_GET['nomor'])){
$kodejual = trim($_GET['nomor']);
$qisi = mysql_query("select * from penjualandetail where
nomor='$kodejual' order by kodebarang asc", $koneksi);
if(mysql_num_rows($qisi) != 0){
$mulai = 1;
while($disi = mysql_fetch_array($qisi)){
$nama = get_data("barang","nama","kode",$disi['kodebarang']);
?>
<tr class="isi">
<td><?php echo $disi['kodebarang']; ?></td>
<td><?php echo $nama; ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['qty']); ?></td>
<td><?php echo $disi['satuan']; ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['hargajual']); ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['hargajual'] * $disi['qty']); ?></td>
93
<td class="center"><a onclick="return confirm('Hapus data
ini?');"
href="jual.php?nomor=<?php echo $disi['nomor']; ?>&d=<?php
echo $disi['idjualdetail']; ?>">DEL</a></td>
</tr>
<?php } ?>
<tr>
<td colspan="4" align="right" style="background:#111;color:#FFF;font-
weight:bold;">GRAND TOTAL :</td>
<td colspan="2" style="text-align:right;background:#933; color:#FFF;font-
weight:bold;">
<input value="<?php echo
get_total("hargajual*qty","penjualandetail","nomor='$kodejual'"); ?>"
type="hidden" name="GT" id="GT" /> <?php echo
easy_number_format(get_total("hargajual*qty","penjualandetail","nomor='$kod
ejual'")); ?></td>
</tr>
<tr>
<td colspan="4" align="right" style="font-weight:bold;">JUMLAH BAYAR :
</td>
<td colspan="2" style="text-align:right;background:#933; color:#FFF;font-
weight:bold;"><input name="JUMB" value="<?php echo $bayar; ?>"
id="JUMB" type="text" class="textshort2 angka" style="width:220px; text-
align:right; font-weight:bold;" /></td>
</tr>
<tr>
<td colspan="4" align="right" style="font-weight:bold;">KEMBALI :</td>
<td colspan="2" style="text-align:right;background:#933; color:#FFF;font-
weight:bold;"><input name="KB" type="text" disabled="disabled"
class="textshort2 angka" id="KB" value="<?php echo $kembali; ?>"
style="width:220px; text-align:right; font-weight:bold;" readonly="readonly"
/></td>
</tr>
<?php }} ?>
</table>
<input style="padding:4px 22px;margin: 8px 0 0 0px" name="insert"
type="submit" class="btnsave2" id="insert" value="Selesai" />
<?php if(isset($_GET['nomor'])){ ?>
<a href="jual.php?batal=<?php echo $_GET['nomor']; ?>" onclick="return
confirm('Batalkan transaksi ini?');" style="padding:4px 22px;margin: 8px 0 0
4px; float:right" class="btnred">Batalkan Transaksi</a>
<div style="float:right">
<input style="padding:4px 22px;margin: 8px 0 0 0px" name="faktur"
type="submit" class="btnsave2" id="faktur" value="Cetak Faktur" />
</div>
<!-- <a href="../laporan/faktur.php?nomor=<?php echo $_GET['nomor'];
?>&tipe=penjualan" style="padding:4.5px 22px;margin: 8px 0 0 0px;
float:right" class="btnsave2">Cetak Faktur</a> -->
94
<?php } ?>
<div class="clear"></div>
</p>
</form>
</div>
</body>
</html>
3. Form Tambah Barang Menu Administrator
<?php
@session_start();
require_once("../inc/config.php");
require_once("../inc/functions.php");
if(!isset($_SESSION['gliese581netjspos'])) redirect_to("../index.php");
$tipe = "barang";
$konten = ucfirst($tipe);
if(isset($_POST['insert'])){
$kode = addslashes(trim($_POST['KODE']));
$nama = addslashes(trim($_POST['JUDUL']));
$satuan = addslashes(trim($_POST['SATUAN']));
$kategori = addslashes(trim($_POST['KATEGORI']));
$letak = addslashes(trim($_POST['LETAK']));
$hargabeli = (float)$_POST['HARGABELI'];
$hargajual = (float)$_POST['HARGAJUAL'];
$stokmin = (int)$_POST['SM'];
$stokmak = (int)$_POST['SX'];
if($stokmak!=0 && $stokmin!=0){
if($stokmak < $stokmin) redirect_to("news.php?s=4");
}
if (cek_data("barang","kode",$kode)==1) redirect_to("new.php?s=5");
if($kode != "" && $nama != "" && $satuan != "" && $kategori != "Pilih
Kategori..." && $hargabeli > 0 && $hargajual > 0){
$i = mysql_query("insert into barang (kode, nama, kategori,
satuan, letak, hargabeli, hargajual, stokmin,
stokmak)
values('$kode','$nama','$kategori','$satuan','$letak','$hargabeli',
'$hargajual',$stokmin, $stokmak)", $koneksi);
if($i){
redirect_to("new.php?s=1");
} else {
redirect_to("new.php?s=0");
}
} else {
redirect_to("new.php?s=0");
}
95
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="<?php echo $base; ?>/scripts/jquery-
1.8.3.min.js"></script>
<script type="text/javascript" src="<?php echo $base;
?>/scripts/global.js"></script>
<title><?php echo $konten; ?> Baru</title>
<link rel="stylesheet" href="../css/editor.css">
<style type="text/css">
input.textshort, input.text, textarea, select {
text-align: left;
padding: 8px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 8px;
}
input.textshort {
width: 300px;
}
select {
width: 400px;
cursor: pointer;
}
textarea {
overflow: hidden;
height: 75px;
}
div.konten-items2 {
padding: 16px 32px;
background: #eee;
border-radius: 8px;
border: 3px solid #888;
}
</style>
</head>
<body>
<h1 class="samples" style="float:right; margin-top:16px;"><a href="<?php
echo $base; ?>/barang/index.php"><< Kembali</a></h1>
<h1 class="samples" style="float:left; margin-top:16px;">Barang Baru
</h1>
<?php
if(isset($_GET['s'])){
96
if($_GET['s'] == 1){
$pesan = "Data berhasil disimpan.";
} elseif($_GET['s'] == 0){
$pesan = "Data gagal disimpan. Data belum lengkap!";
} elseif($_GET['s'] == 4){
$pesan = "Data gagal disimpan. Stok maksimum harus lebih besar
dari stok minimum barang!";
} elseif($_GET['s'] == 5){
$pesan = "Data gagal disimpan. Kode yang diinput sudah ada!";
}
?>
<div class="satuan"><?php echo $pesan; ?></div>
<?php } ?>
<br style="clear:both;" />
<div class="konten-items">
<form action="" method="post" enctype="multipart/form-data">
<p>
<strong>Kode Barang * :</strong><br />
<input name="KODE" type="text" class="textshort" id="KODE"
size="35" maxlength="35" />
<strong><br />
Nama Barang * :</strong><br />
<input class="text" name="JUDUL" type="text" id="JUDUL" size="50"
maxlength="50" /><br />
<strong>Kategori Barang * :</strong><br />
<select name="KATEGORI" id="KATEGORI">
<option>Pilih Kategori...</option>
<?php
$q = mysql_query("select * from kategori order by id asc",
$koneksi);
if(mysql_num_rows($q) !=0 ){
while($data = mysql_fetch_array($q)){
$nama = html($data['kategori']);
echo "<option>$nama</option>";
}}
?>
</select>
+ <a href="kategori/index.php">Kategori Baru</a><br />
<strong>Satuan * :</strong><br />
<input class="textshort" name="SATUAN" type="text" id="SATUAN"
size="35" maxlength="20" /><br />
<strong>Letak Barang :</strong><br />
<input class="textshort" name="LETAK" type="text" id="LETAK"
size="35" maxlength="20" /><br />
<strong>Harga Beli * :</strong><br />
97
<input class="textshort angka" name="HARGABELI" type="text"
id="HARGABELI" size="35" />
*Hanya angka, contoh: 10000<br />
<strong>Harga Jual * :</strong><br />
<input class="textshort angka" name="HARGAJUAL" type="text"
id="HARGAJUAL" size="35" />
*Hanya angka, contoh: 15000<br />
<strong>Stok Minimum * :</strong><br />
<input class="textshort angka" name="SM" type="text" id="SM"
size="35" />
*Hanya angka, contoh: 10. <em>Isi dengan angka 0 jika barang tidak memiliki
stok minimum</em>.<br />
<strong>Stok Maksimum * :</strong><br />
<input class="textshort angka" name="SX" type="text" id="SX" size="35" />
*Hanya angka, contoh: 10. <em>Isi dengan angka 0 jika barang tidak memiliki
stok maksimum.</em><br />
<input name="insert" type="submit" class="btnsave2" id="insert"
style="margin: 8px 0 0 0px;" value="Simpan" />
<!--<input name="reset" type="reset" class="btnsave2" id="reset"
style="margin: 8px 0 0 0px;" value="Reset" />-->
<div class="clear"></div>
</p>
<input type="hidden" name="tipe" id="tipe" value="<?php echo $tipe;
?>" />
</form>
</div>
</body>
</html>
4. Form Tambah Customer Halaman Administrator
<?php
@session_start();
require_once("../inc/config.php");
require_once("../inc/functions.php");
if(!isset($_SESSION['gliese581netjspos'])) redirect_to("../index.php");
$tipe = "customer";
$konten = ucfirst($tipe);
if(isset($_POST['insert'])){
$kode = addslashes(trim($_POST['KODE']));
$nama = addslashes(trim($_POST['NAMA']));
$kota = addslashes(trim($_POST['KOTA']));
$alamat = addslashes(trim($_POST['ALAMAT']));
$telepon = $_POST['TELEPON'];
if (cek_data("customer","kode",$kode)==1) redirect_to("new.php?s=2");
98
if($kode != "" && $nama != ""){
$i = mysql_query("insert into customer (kode, nama, kota, alamat,
telepon)
values('$kode','$nama', '$kota','$alamat','$telepon')", $koneksi);
if($i){
redirect_to("new.php?s=1");
} else {
redirect_to("new.php?s=0");
}
} else {
redirect_to("new.php?s=0");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $konten; ?> Baru</title>
<link rel="stylesheet" href="../css/editor.css">
<style type="text/css">
input.textshort, input.text, textarea, select {
text-align: left;
padding: 8px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 8px;
}
input.textshort {
width: 300px;
}
select {
width: 400px;
cursor: pointer;
}
textarea {
overflow: hidden;
height: 75px;
}
99
div.konten-items2 {
padding: 16px 32px;
background: #eee;
border-radius: 8px;
border: 3px solid #888;
}
input.textshort1 { text-align: left;
padding: 8px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 8px;
}
</style>
<script type="text/javascript" src="<?php echo $base; ?>/scripts/jquery-
1.8.3.min.js"></script>
<script type="text/javascript" src="<?php echo $base;
?>/scripts/global.js"></script>
</head>
<body>
<h1 class="samples" style="float:right; margin-top:16px;"><a
href="index.php"><< Kembali</a></h1>
<h1 class="samples" style="float:left; margin-top:16px;"><?php echo
$konten; ?> Baru </h1>
<?php
if(isset($_GET['s'])){
if($_GET['s'] == 1){
$pesan = "Data berhasil disimpan.";
} elseif($_GET['s'] == 2){
$pesan = "Data gagal disimpan. Kode yang diinput sudah ada!";
} else {
$pesan = "Data gagal disimpan. Data belum lengkap!";
}
?>
<div class="satuan"><?php echo $pesan; ?></div>
<?php } ?>
<br style="clear:both;" />
<div class="konten-items">
<form action="" method="post">
<p>
<strong>Kode Customer * :</strong><br />
<input class="textshort" name="KODE" type="text" id="KODE"
size="35" maxlength="35" />
100
<strong><br />
Nama Customer * :</strong><br />
<input class="text" name="NAMA" type="text" id="NAMA" size="35"
maxlength="35" />
<br />
<strong>Alamat:</strong><br />
<input class="text" name="ALAMAT" type="text" id="ALAMAT"
size="35" maxlength="35" /><br />
<strong>Kota:</strong><br />
<input class="textshort" name="KOTA" type="text" id="KOTA"
size="35" maxlength="35" /><br />
<strong>Telepon / Fax:</strong><br />
<input class="textshort" name="TELEPON" type="text" id="TELEPON"
size="35" maxlength="35" />
<br /><br />
<input name="insert" type="submit" class="btnsave2" id="insert"
style="margin: 8px 0 0 0px;" value="Simpan <?php echo $konten; ?>" />
<div class="clear"></div>
</p>
<input type="hidden" name="tipe" id="tipe" value="<?php echo $tipe;
?>" />
</form>
</div>
</body>
</html>
5. Form Index Menu Pembelian
<?php
@session_start();
require_once("../inc/config.php");
require_once("../inc/functions.php");
if(!isset($_SESSION['gliese581netjspos'])) redirect_to("../index.php");
$tipe = "pembelian";
$konten = ucfirst($tipe);
$userid = $_SESSION['UIDPOS'];
if(isset($_GET['batal'])){
if(isset($_SESSION['DPOS']) && $_SESSION['DPOS'] == 1){
if($_SESSION['UIDPOS'] != 'a') { redirect_to("../disabled.php"); }
}
$kodebeli = addslashes(trim($_GET['batal']));
$qd = mysql_query("select * from pembeliandetail where
nomor='$kodebeli'", $koneksi);
if(mysql_num_rows($qd) != 0){
while($rcd = mysql_fetch_array($qd)){
101
$iss = mysql_query("update barang set stok=stok-$rcd[qty] where
kode='$rcd[kodebarang]'",$koneksi);
}
}
$iss = mysql_query("delete from pembeliandetail where
nomor='$kodebeli'",$koneksi);
$iss = mysql_query("delete from pembelian where
nomor='$kodebeli'",$koneksi);
reset_increment("pembelian");
redirect_to("beli.php");
}
if(isset($_GET['nomor'])){
$kodebeli = addslashes(trim($_GET['nomor']));
if(isset($_GET['d'])){
if(isset($_SESSION['DPOS']) && $_SESSION['DPOS'] == 1){
if($_SESSION['UIDPOS'] != 'a') { redirect_to("../disabled.php"); }
}
$kh = (int)$_GET['d'];
$kb = get_data("pembeliandetail","kodebarang","idbelidetail",$kh);
$qb = get_data("pembeliandetail","qty","idbelidetail",$kh);
$u = mysql_query("update barang set stok=stok-$qb where
kode='$kb'", $koneksi);
if($u) $qd = mysql_query("delete from pembeliandetail where
idbelidetail='$kh' limit 1");
$tot =
get_total("hargabeli*qty","pembeliandetail","nomor='$kodebeli'");
$h = mysql_query("update pembelian set total='$tot' where
nomor='$kodebeli'", $koneksi);
redirect_to("beli.php?nomor=$kodebeli");
}
$qd = mysql_query("select * from pembelian where nomor='$kodebeli'
limit 1", $koneksi);
if(mysql_num_rows($qd) != 0){
$dd = mysql_fetch_array($qd);
$kodes = $dd['kodesupplier'];
$namas = get_data("supplier","nama","kode",$dd['kodesupplier']);
$tglp = set_date_from_db($dd['tanggal']);
$kets = $dd['keterangan'];
} else {
$kodes = "";
$namas = "";
$tglp = date("d-m-Y");
$kets = "";
}
} else {
102
$kodes = "";
$namas = "";
$tglp = date("d-m-Y");
$kets = "";
}
if(isset($_POST['insert'])){
if(isset($_GET['nomor'])){
$kodebeli = addslashes(trim($_GET['nomor']));
$kodes = addslashes(trim($_POST['KODES']));
$ket = addslashes(trim($_POST['KET']));
$tgl = addslashes(trim($_POST['TGL']));
if($kodes != "" && $tgl != ""){
$tgl = set_date_to_db($tgl);
$h = mysql_query("update pembelian set tanggal='$tgl',
kodesupplier='$kodes',
keterangan='$ket', userid='$userid' where nomor='$kodebeli'",
$koneksi);
}
}
redirect_to("index.php");
}
if(isset($_POST['ADD'])){
$qk = mysql_query("select concat('PB',lpad((coalesce(max(id),0)+1),8,0))
as kode from pembelian", $koneksi);
if(mysql_num_rows($qk) != 0){
$dk = mysql_fetch_array($qk);
$kode = $dk['kode'];
}
$kodes = addslashes(trim($_POST['KODES']));
$ket = addslashes(trim($_POST['KET']));
$tgl = addslashes(trim($_POST['TGL']));
$kodeb = addslashes(trim($_POST['KODEB']));
$namab = addslashes(trim($_POST['NAMAB']));
$qty = (int)addslashes(trim($_POST['QTY']));
$satuan = addslashes(trim($_POST['SATUAN']));
$hargabeli = (float)addslashes(trim($_POST['HARGA']));
$sb = (int)get_data("barang","stok","kode",$kodeb);
$stmak = (int)get_data("barang","stokmak","kode",$kodeb);
if($stmak!=0){
103
if(($sb + $qty) > $stmak){
if(isset($_GET['nomor'])){
redirect_to("beli.php?s=2&nomor=$_GET[nomor]&sm=$stmak");
} else {
redirect_to("beli.php?s=2&sm=$stmak");
}
}
}
if($kodes != "" && $tgl != "" && $kodeb != ""){
$tgl = set_date_to_db($tgl);
if(isset($_GET['nomor'])){
$kodebeli = addslashes(trim($_GET['nomor']));
$h = mysql_query("update pembelian set tanggal='$tgl',
kode='$kodes',
keterangan='$ket', userid='$userid' where nomor='$kodebeli'",
$koneksi);
} else {
$kodebeli = $kode;
$h = mysql_query("insert into pembelian (nomor, tanggal,
kodesupplier, keterangan)
values('$kodebeli','$tgl','$kodes','$ket')", $koneksi);
}
$i = mysql_query("insert into pembeliandetail (nomor, kodebarang,
namabarang, qty, satuan, hargabeli)
values('$kodebeli','$kodeb','$namab','$qty','$satuan','$hargabeli')", $koneksi);
if($i){
$u = mysql_query("update barang set stok=stok+$qty where
kode='$kodeb'", $koneksi);
}
$tot =
get_total("hargabeli*qty","pembeliandetail","nomor='$kodebeli'");
$h = mysql_query("update pembelian set total='$tot' where
nomor='$kodebeli'", $koneksi);
if($h){
redirect_to("beli.php?s=1&nomor=$kodebeli");
} else {
redirect_to("beli.php?s=0&nomor=$kodebeli");
}
} else {
if(isset($_GET['nomor'])){
redirect_to("beli.php?s=0&nomor=$_GET[nomor]");
104
} else {
redirect_to("beli.php?s=0");
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pembelian Barang</title>
<link rel="stylesheet" href="../css/editor.css">
<link href="../thickbox/thickbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../scripts/jquery-
1.8.3.min.js"></script>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../thickbox/thickbox.js"></script>
<style type="text/css">
input.textshort, input.textshort2, input.text, textarea, select {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort {
width: 300px;
}
input.textshort2 {
width: 120px;
}
select {
width: 400px;
cursor: pointer;
}
textarea {
overflow: hidden;
height: 75px;
}
div.konten-items2 {
105
padding: 16px 32px;
background: #eee;
border-radius: 8px;
border: 3px solid #888;
}
input.textshort1 {
text-align: left;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table tr.header td {
text-align: center;
font-weight: bold;
background: #036;
color: #fff;
}
table.t input[type="text"] {
border: none;
}
input.textshort3 {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
input.textshort21 {
text-align: left;
padding: 6px 4px;
width: 560px;
border: 1px solid #bbb;
margin-bottom: 0;
}
table td.center {
text-align: center;
}
table td a {
color: #090;
}
table tr.isi {
background: #FFC;
106
}
</style>
</head>
<body>
<?php require_once("../inc/date-input.php"); ?>
<h1 class="samples" style="float:right; margin-top:16px;"><a
href="index.php"><< Kembali</a></h1>
<h1 class="samples" style="float:left; margin-top:16px;"><?php echo
$konten; ?> Barang </h1>
<?php
if(isset($_GET['s'])){
if($_GET['s'] == 1){
} elseif($_GET['s'] == 2) {
echo "<div class='satuan'>Jumlah barang yang dibeli melebihi
stok maksimum yang telah ditentukan!<br />
Stok maksimum: " . $_GET['sm'] . "</div>";
} else {
echo '<div class="satuan">Data gagal disimpan. Data belum
lengkap!</div>';
}
}
?>
<br style="clear:both;" />
<div class="konten-items">
<form action="" method="post">
<table width="100%" border="0" cellpadding="1" cellspacing="0">
<tr>
<td width="6%">Tanggal:</td>
<td width="20%"><input value="<?php echo $tglp;?>"
class="textshort2" name="TGL" type="text" id="TGL" size="35"
maxlength="35" /></td>
<td width="11%">Supplier | <a class="thickbox"
href="../load/supplier.php?width=960&height=400">Cari:</a></td>
<td width="63%"><input name="KODES" type="text"
class="textshort2" id="KODES" value="<?php echo $kodes;?>" size="35"
maxlength="35" readonly="readonly" />
107
<input name="NAMAS" value="<?php echo $namas;?>" type="text"
disabled="disabled" class="textshort" id="NAMAS" size="35"
maxlength="35" /></td>
</tr>
<tr>
<td><input name="TRAN" type="hidden" id="TRAN" value="BELI"
/></td>
<td valign="top"><em>dd-mm-yyyy</em></td>
<td>Keterangan:</td>
<td><input class="text" value="<?php echo $kets;?>" name="KET"
type="text" id="KET" size="35" maxlength="35" /></td>
</tr>
</table>
<p>
<table width="100%" height="0" border="1" cellpadding="3"
cellspacing="0" class="t">
<tr class="header">
<td width="14%" height="30" align="center"
valign="middle"><strong>Kode Barang | <a class="thickbox"
href="../load/barang.php?width=960&height=400">Cari</a></strong></td
>
<td width="29%" align="center" valign="middle"><strong>Nama
Barang</strong></td>
<td width="6%" align="center"
valign="middle"><strong>QTY</strong></td>
<td width="14%" align="center"
valign="middle"><strong>Satuan</strong></td>
<td width="15%" align="center" valign="middle"><strong>Harga
Beli</strong></td>
<td width="22%" align="center" valign="middle">Sub Total</td>
<td width="22%" align="center"
valign="middle"><strong>Action</strong></td>
</tr>
<tr>
<td height="0"><input name="KODEB" type="text" class="textshort2"
id="KODEB" readonly="readonly" /></td>
<td><input style="width:250px;" name="NAMAB" type="text"
class="textshort ro" id="NAMAB" readonly="readonly" /></td>
<td><input name="QTY" type="text" class="textshort2 angka" id="QTY"
style="text-align:right; width:50px;" /></td>
<td><input name="SATUAN" style="width:90px" type="text"
class="textshort2 ro" id="SATUAN" readonly="readonly" /></td>
<td><input name="HARGA" type="text" class="textshort2 angka"
id="HARGA" style="text-align:right" /></td>
<td class="center"><input name="SUBTOTAL" type="text"
class="textshort2 angka" id="SUBTOTAL" style="text-align:right"
readonly="readonly" /></td>
108
<td class="center"><input type="submit" name="ADD" id="ADD"
value="ADD" /></td>
</tr>
<?php
if(isset($_GET['nomor'])){
$kodebeli = trim($_GET['nomor']);
$qisi = mysql_query("select * from pembeliandetail where
nomor='$kodebeli' order by kodebarang asc", $koneksi);
if(mysql_num_rows($qisi) != 0){
$mulai = 1;
while($disi = mysql_fetch_array($qisi)){
$nama = get_data("barang","nama","kode",$disi['kodebarang']);
?>
<tr class="isi">
<td><?php echo $disi['kodebarang']; ?></td>
<td><?php echo $nama; ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['qty']); ?></td>
<td><?php echo $disi['satuan']; ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['hargabeli']); ?></td>
<td style="text-align:right"><?php echo
easy_number_format($disi['hargabeli'] * $disi['qty']); ?></td>
<td class="center"><a onclick="return confirm('Hapus data ini?');"
href="beli.php?nomor=<?php echo $disi['nomor']; ?>&d=<?php
echo $disi['idbelidetail']; ?>">DEL</a></td>
</tr>
<?php } ?>
<tr>
<td colspan="5" style="background:#111;color:#FFF;font-
weight:bold;">GRAND TOTAL</td>
<td style="text-align:right;background:#933; color:#FFF;font-
weight:bold;">
<?php if(isset($_GET['nomor'])){
$nomor = addslashes(trim($_GET['nomor']));
echo
easy_number_format(get_total("hargabeli*qty","pembeliandetail","nomor='$
nomor'"));
} else {
echo 0;
}
?>
</td>
</tr>
<?php }} ?>
</table>
109
<input style="padding:4px 22px;margin: 8px 0 0 0px" name="insert"
type="submit" class="btnsave2" id="insert" value="Selesai" />
<?php if(isset($_GET['nomor'])){ ?>
<a href="beli.php?batal=<?php echo $_GET['nomor']; ?>"
onclick="return confirm('Batalkan transaksi ini?');" style="padding:4.5px
22px;margin: 8px 0 0 4px; float:right" class="btnred">Batalkan
Transaksi</a>
<a href="../laporan/faktur.php?nomor=<?php echo $_GET['nomor'];
?>&tipe=pembelian" style="padding:4.5px 22px;margin: 8px 0 0 0px;
float:right" class="btnsave2">Cetak Faktur</a>
<?php } ?>
<div class="clear"></div>
</p>
</form>
</div>
</body>
</html>
4.4. Testing
1. Form Login
Tabel IV.19.
Hasil Pengujian Black Bok Testing Form Login
No Skenario Pengujian Test Case Hasil Yang
Diharapkan
Hasil
Pengujia
n
Kesi
m
pulan
1 Mengosongkan semua
isian data login
Administrator untuk
username dan password
lalu klik „Login‟
Username:
(kosong)
Password:
(kosong)
Sistem akan
menolak akses
login dan
menampilkan pesan
“UserID dan
Password tidak
sesuai”
Sesuai
harapan
Valid
2 Mengisi salah satu isian
data login Administrator
untuk username, lalu klik
„Login‟
Username:
(admin)
Password:
(kosong)
Sistem akan
menolak akses
login dan
menampilkan pesan
“UserID dan
Password tidak
sesuai”
Sesuai
harapan
Valid
3
Mengisi salah satu isian
data login Administrator
Username:
(kosong)
Sistem akan
menolak akses
Sesuai
harapan
Valid
110
untuk password, lalu klik
„Login‟
Password:
(admin)
login dan
menampilkan pesan
“UserID dan
Password tidak
sesuai”
4 Menginput semua isian
data login untuk
Administrator dengan
benar, lalu klik „Login
Username:
(admin)
Password:
(admin)
Sistem akan
menerima akses
login dan
menampilkan
halaman pengguna
Sesuai
harapan
Valid
2. Form Index Menu Penjualan
Tabel IV.20.
Hasil Pengujian Black Bok Testing Form Index Menu Penjualan
No Skenario Pengujian Test Case Hasil Yang
Diharapkan
Hasil
Pengujia
n
Kesi
m
pulan
1 Menambah action dalam
satu transaksi tetapi tidak
input kode barang
klik add
action
tanpa cari
kode
barang
Sistem akan
menolak update
data dan
menampilkan pesan
“Data gagal
disimpan. Data
belum lengkap!”
Sesuai
harapan
Valid
2 Menambah transaksi atas
barang yang melampaui
stok minimum
Cari kode
barang
(stok
minimum),
lalu tekan
add action
Sistem akan
menolak update
data dan
menampilkan pesan
“Data gagal
disimpan. Stok
Barang tidak
mencukupi”
Sesuai
harapan
Valid
111
3. Form Tambah Barang Menu Administrator
Tabel IV.21.
Hasil Pengujian Black Box Testing Form Tambah Barang
No Skenario Pengujian Test Case Hasil Yang
Diharapkan
Hasil
Pengujia
n
Kesi
m
pulan
1 Menambah data barang
dengan menginput kode
barang yang sudah ada
Masukan
kode
barang
yang sudah
ada
Sistem akan
menolak update
data dan
menampilkan pesan
"Data gagal
disimpan. Kode
yang diinput sudah
ada
Sesuai
harapan
Valid
4. Form Tambah Customer Menu Administrator
Tabel IV.22.
Hasil Pengujian Black Box Testing Form Tambah Customer Menu Admin
No Skenario Pengujian Test Case Hasil Yang
Diharapkan
Hasil
Pengujia
n
Kesi
m
pulan
1 Menambah data customer
dengan menginput kode
barang yang sudah ada
Masukan
kode
customer
yang sudah
ada
Sistem akan
menolak update
data dan
menampilkan pesan
"Data gagal
disimpan. Kode
yang diinput sudah
ada
Sesuai
harapan
Valid
112
5. Form Index Menu Pembelian
Tabel IV.23.
Hasil Pengujian Black Box Testing Form Index Menu Pembelian
No Skenario Pengujian Test Case Hasil Yang
Diharapkan
Hasil
Pengujia
n
Kesi
m
pulan
1 Menambah action dalam
satu transaksi tetapi tidak
input kode barang
klik add
action
tanpa cari
kode
barang
Sistem akan
menolak update
data dan
menampilkan pesan
“Data gagal
disimpan. Data
belum lengkap!”
Sesuai
harapan
Valid
2 Menambah transaksi atas
barang yang melampaui
stok maksimum
Cari kode
barang
(stok
maksimum
), lalu
tekan add
action
Sistem akan
menolak update
data dan
menampilkan pesan
“Jumlah barang
yang dibeli
melebihi stok
maksimum…”
Sesuai
harapan
Valid
4.5. Support
Dalam Pembuatan Aplikasi Belanja yang akan membantu pembeli dan
pengguna aplikasi dalam hal ini administrator dan kasir untuk memproses
transaksi serta mengelola data-data dan membuat laporan untuk ini penulis
menggunakan program Dreamweaver CS 6 untuk membuat aplikasi, untuk
mengoperasikan program tersebut diperlukan spesifikasi komputer yang cukup
tinggi, untuk mendukung pembuatan aplikasi kebutuhan hardware yang di
perlukan meliputi: Processor, memory, monitor, hard disk, keyboard, mouse dan
kebutuhan software yang diperlukan meliputi sistem oprasi software program
Dreamweaver CS 6 dan software database.
113
4.5.1. Publikasi Web
Sistem Aplikasi Point of Sale (pos) pada Koperasi Pegawai Bank
Indonesia menggunakan Local Area Network (LAN) yang dikelola oleh
Departemen Pengelola Sistem Informasi (DPSI) Bank Indonesia, sehingga tidak
memerlukan publikasi web untuk umum melainkan hanya internal anggota
KOPEBI. Aplikasi tersebut dapat diakses menggunakan proxy yang disediakan
oleh DPSI yaitu inetgw-proxy dengan port 8080 selama komputer atau laptop di
KOPEBI terhubung dengan kabel jaringan yang juga disediakan oleh DPSI Bank
Indonesia.
4.5.2. Spesifikasi Hardware dan Software
Tabel IV.24.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Operasi Windows 7
Processor IntelI CoreI i5-2400CPU @3.10 Ghz
RAM 2 gb
Harddisk 500 gb
CD-ROM DVD writing and reading
Monitor 16:9 Ratio LCD
Keyboard 108 Keys
Printer Laser Jet Printer
Mouse Standar
Browser Internet Explore, Mozilla Firefox, Google Chrome
Software Macromedia Dreamweaver, XAMPP, Microsoft
Visio, Enterprise Architect 7.5
Network Local Area Network (LAN), inetgw-proxy
port:8080
114
4.6. Spesifikasi Dokumen Sistem Usulan
1. Nama Dokumen : Struk
Fungsi : Sebagai bukti transaksi
Sumber : kasir
Tujuan : Customer
Media : Tampilan
Frekuensi : Setiap transaksi dilaksanakan
Format : Lampiran B1
2. Nama Dokumen : Faktur Pembelian
Fungsi : Sebagai bukti transaksi pembelian dari supplier
Sumber : administrasi
Tujuan : Pengurus KOPEBI
Media : Tampilan
Frekuensi : Setiap transaksi dilaksanakan
Format : Lampiran B2
3. Nama Dokumen : Laporan Data Barang
Fungsi : Sebagai pemberitahuan kepada administrator
posisi stok barang
Sumber : Admin
Tujuan : Pengurus KOPEBI
Media : Tampilan
Frekuensi : Setiap transaksi dilaksanakan
Format : Lampiran B3
4. Nama Dokumen : Laporan Data Supplier
115
Fungsi : Sebagai pemberitahuan data customer yang sering
bertransaksi di KOPEBI agar dapat diikuti promo
menarik
Sumber : Admin
Tujuan : Pengurus KOPEBI
Media : Tampilan
Frekuensi : Setiap selesai mengikuti ujian
Format : Lampiran B4
5. Nama Dokumen : Laporan Data Customer
Fungsi : Sebagai pemberitahuan data customer yang sering
bertransaksi di KOPEBI agar dapat diikuti promo
menarik
Sumber : Admin
Tujuan : Pengurus KOPEBI
Media : Tampilan
Frekuensi : Setiap selesai mengikuti ujian
Format : Lampiran B5
6. Nama Dokumen : Laporan Data Penjualan
Fungsi : Sebagai laporan untuk pengurus KOPEBI
Sumber : Admin
Tujuan : Pengurus dan Pengawas KOPEBI
Media : Tampilan
Frekuensi : Setiap bulan, triwulan dan tahunan
Format : Lampiran B6