36
4.1 Pembuatan Database pada Microsoft SQL Server 2000
Pembuatan database pada SQL Server menggunakan SQL Server
Enterprise Manager.
Gambar 4.1. SQL Server Enterprise Manager
4.2. Pembuatan Table
Untuk membuat tabel, dipilih ‘New Table’. Kemudian ‘Colum Name’ diisi
dengan nama field yang ada di rancangan tabel (Bab 3), demikian juga dengan
‘Data Type’ diisi sesuai dengan type nama field tersebut.
Gambar 4.2. Pembuatan Tabel
4.3. Pembuatan Strored Procedure
Untuk memudahkan proses input, update dan delete maka dibuat stored
procedure pada SQL Server dengan nama database “TA”. Stored procedure
berguna untuk mengatur pemasukkan, pengubahan dan penghapusan data pada
tabel-tabel. Stored procedure ini menggunakan variabel-variabel. Contoh stored
procedure untuk
- Proses input :
CREATE PROCEDURE addbarang (@Kodebrg char(5), @Namabrg char(50), @HrgJual money, @HrgBeli money, @Jml int ) AS
insert into barang values (@kodebrg, @namabrg, @HrgJual, @HrgBeli, @Jml)
- Proses Update :
CREATE PROCEDURE UpdateBarang (@kodebrg char(5), @namabrg char(50), @HrgJual money, @HrgBeli money, @Jml int ) AS
update barang set nama_barang=@namabrg, Hrg_Jual=@HrgJual, Hrg_Beli = @HrgBeli, Jumlah=@jml
where kode_barang=@kodebrg GO
- Proses Delete :
CREATE PROCEDURE deletebarang (@kodebrg char(5))
AS
declare @jml int
select @jml=jumlah from barang where kode_barang=@kodebrg if @jml>0
raiserror 15000 'Stok barang masih ada, data tidak bisa dihapus' else
delete barang where kode_barang=@kodebrg GO
4.4. Pembuatan Trigger
Pembuatan trigger bertujuan untuk mempermudah peng- update-an data
pada tabel. Trigger dibuat khusus dengan bahasa standar SQL untuk peng-
update-an tabel barupdate-ang. Trigger untuk peng- update-update-an tabel barupdate-ang ini dibuat pada
tabel-tabel antara lain : detail beli, detail jual, detail retur beli dan detail retur jual.
Trigger tersebut untuk proses insert, update, dan delete. Contoh trigger untuk
CREATE TRIGGER DetailBeliInsert ON dbo.DETAILBELI FOR INSERT
AS
Declare @jml int, @kodebarang char(5),@diskon dec Declare @Tanggal datetime
select @Tanggal=max(tanggal) from diskon group by tanggal
select @diskon=diskon from diskon where tanggal = @tanggal
select @jml= jml_beli from inserted
select @kodebarang=kode_barang from inserted
update barang set jumlah= jumlah+@jml, hrg_beli = hrg_jual-(hrg_jual*(@diskon/100)) where barang.kode_barang=@kodebarang
4.5. Koneksi Database
Database pada Microsoft SQL Server 2000 akan dihubungkan dengan
program yang ada pada Borland Delphi7 menggunakan komponen ADO
Connection, yang ada di Borland Delphi 7 (Gambar 4.3. Page ADO)
Gambar 4.3. Page ADO Connection
ADOConnectionStrored Procedure ADO Query
Pilih properti ConnectionString. Klik tanda [...], maka akan ditampilkan
Editor Conncection String (Gambar 4.4. Editor Connection String).
Gambar 4.4. Editor Connection String
Pilih Use Connection String. Klik tombol Build. Ditamplikan dialog Data
Link Properties.
Pilih Microsoft OLE DB Provider for SQL Server. Klik next. Pada page
connection dengan nama server istanaboneka\istanaboneka dan database server
“TA” (Gambar 4.6. Page Connection). Setelah itu dilakukan Test Connection,
setelah berhasil maka program pada Borland Delphi7 sudah terhubung dengan
database pada Microsoft SQL Server 2000.
Gambar 4.6. Page Connection
4.6. Implementasi Program
Tampilan awal program adalah form Login., pengecekan nama dan
password user. Hanya user yang telah dibuat yang bisa menjalankan program.
Menu utama yang lengkap terdiri dari Data, Transaksi dan Laporan. Isi
masing-masing menu dapat dijelaskan sebagai berikut :
- Menu “Data” , terdiri dari form “Barang” untuk mencatat data barang, form
“Customer” untuk mencatat data customer, form “Kasir” untuk mencatat data
kasir, form “Perubahan Harga” untuk mencatat perubahan harga baik naik
maupun turun, form “Perubahan Diskon” untuk mengatur diskon beli, dan form
“ Pengaturan User” untuk menambah user.
- Menu “Transaksi” terdiri dari form “Order Pembelian” untuk mencatat semua
pesanan barang ke supplier (Istana Boneka pusat) termasuk kode, nama, harga
dan jumlah barang, form “Pembelian” untuk mencatat semua transaksi
pembelian, form “Order Penjualan” untuk mencatat semua pesanan dari
pelanggan, form “Retur Pembelian” untuk mencatat semua transaksi retur
barang kepada supplier (Istana Boneka pusat), form “Retur Penjualan” untuk
mencatat semua transaksi retur dari pelanggan, form “Pembayaran Supplier”
untuk mencatat pembayaran ke supplier {Istana Boneka pusat) bila transaksi
pembelian dilakukan secara kredit, form “Pembayaran Customer” untuk
mencatat pembayaran dari pelanggan bila penjualan secara kredit.
- Menu “Laporan” terdiri dari form “Laporan Barang” berisi tentang semua data
barang, form “Laporan Customer” berisi tentang semua data customer, form
“Laporan Order Pembelian” berisi tentang semua data yang digunakan untuk
order ke supplier (Istana Boneka pusat) , form “Laporan Order Penjualan”
berisi tentang data-data pesanan customer, form “Laporan Pembelian” berisi
tentang semua data transaksi pembelian per nota, kode barang dan tanggal, form
“Laporan Penjualan” berisi tentang semua transaksi penjualan ke customer,
form “Laporan Retur Pembelian” berisi tentang semua data retur pembelian ke
supplier (Istana Boneka pusat) , form “Laporan Retur Penjualan” berisi tentang
laporan retur dari pelanggan, form “Laporan Perubahan Harga” berisi tentang
laporan data perubahan harga barang, form “Laporan Laba” berisi tentang
laporan keuntungan dari penjualan ke customer, form “Laporan Hutang Piutang
Supplier” berisi tentang informasi hutang piutang dengan supplier (Istana
Boneka pusat), form “Laporan Piutang Customer” berisi tentang laporan
piutang ke pelanggan.
4.6.1. Form Barang, Supplier, Customer, Kasir
Pada form barang yang harus diinputkan kode barang, nama barang dan
harga jual. Sedangkan harga beli dan jumlah barang akan secara otomatis
diinputkan pada saat transaksi pembelian.
Procedure yang digunakan pada keempat form dapat dilihat di bawah ini :
(sebagai salah satu contoh digunakan form barang)
- Procedure TFBrg.BAddClick : untuk menambahkan data baru ke dalam
database.
- Procedure TFBrg.BUpdateClick : untuk mengkoreksi data yang salah dalam
database.
- Procedure TFBrg.BDeleteClick : untuk menghapus data pada database.
- Procedure TFBrg.BPrintClick : untuk mencetak data.
- Procedure TFBrg.BBrowserClick : untuk menampilkan data yang data dalam
database.
- Procedure TFBrg.BCancelClick : untuk membatalkan.
- Procedure TFBrg.BExitClick : untuk keluar dari form barang.
4.6.2. Form Perubahan Harga
Pada form perubahan harga digunakan untuk mencatat perubahan harga
baik naik maupun turun. Pada satu nomor perubahan harga dapat mencatat
beberapa perubahan harga barang sekaligus. Perubahan harga barang yang naik
akan menyebabkan hutang kepada supplier, sedangkan bila perubahan harga turun
maka akan timbul piutang ke supplier. Harga awal dan stok akan otomatis muncul
sesuai dengan harga dan jumlah pada saat itu. Harga akhir diinputkan sesuai
dengan perubahan harga. Total didapat dari (harga akhir – harga awal) x stok. Bila
total negatif maka mengurangi hutang ke supplier(menambah piutang ke
supplier), bila positif maka akan menambah hutang ke supplier.
Procedure-procedure yang digunakan pada form perubahan harga antara
lain :
- Procedure TFPerbHrg.BAddClick(Sender: TObject) untuk menambahkan data
ke dalam database.
- Procedure TFPerbHrg.BPrintClick(Sender: TObject) untuk mencetak data
perubahan harga.
- Procedure TFPerbHrg.BBrowerClick(Sender: TObject ) untuk menampilkan
data perubahan harga yang sudah ada dalam database.
- Procedure TFPerbHrg.BExitClick(Sender: TObject) untuk keluar dari form
perubahan harga.
Contoh procedure TFPerbHrg.BAddClick :
procedure TFPerbHrg.BAddClick(Sender: TObject); begin
ADOCAddM.Execute(VarArrayOf([EPerubahan.Text,DTP.DateTime,Str ToCurr(ETotal.Text), StrToFloat(EDisc.Text)]));
ADOQTampil.First;
While not ADOQTampil.Eof do begin
ADOCAddD.Execute(VarArrayOf([EPerubahan.Text,ADOQTampil['KODE ’],ADOQTampil['Harga awal'], ADOQTampil['Harga Akhir'],
ADOQTampil['stok']])); ADOQtampil.Next; end; if StrToCurr(ETotal.Text) <> 0 then begin ADOCAddHutangPiutang.Execute(VarArrayOf([EPerubahan.Text,DTP .DateTime,StrToCurr(ENetto.Text),''])); end; Clear; end;
4.6.3. Form Perubahan Diskon
Form perubahan diskon untuk mengubah diskon beli. Procedure yang
digunakan antara lain :
- Procedure TFPerbDisc.BitBtn1Click(Sender: TObject) untuk menambah data
diskon.
Contoh procedure untuk menambah data diskon pada database :
procedure TFPerbDisc.BitBtn1Click(Sender: TObject);begin
ADOCAdd.Execute(vararrayof([tgl.DateTime,strtofloat(EDisc.Text)])) ;
end;
4.6.4. Form Pengaturan User
Form pengaturan user untuk menambah user. Contoh procedure untuk
menambah user :
procedure TFAddUser.BitBtn1Click(Sender: TObject); begin ADOCLogin.Execute; ADOCLogin.CommandText:='sp_adduser'+ ''''+edit1.Text+''''+','+ ''''+edit1.Text+''''+','+ ''''+ combobox1.Text +''''; ADOCLogin.Execute; Edit1.Text := ' '; Edit2.Text := ' '; combobox1.ItemIndex := -1; end;
4.6.5. Form Order Pembelian dan Order Penjualan
Form order pembelian dan order penjualan ini memiliki tampilan yang
hampir sama. Procedure yang digunakan pada kedua form ini adalah :
- Procedure TFOrderJual.BAddClick : untuk menyimpan data order ke dalam
database.
- Procedure TFOrderJual.BUpdateClick : untuk mengkoreksi data yang salah.
- Procedure TFOrderJual.BDeleteClick : untuk menghapus data dalam database.
Penjelasan procedure untuk menghapus dapat dilihat di bawah ini :
procedure TFOrderJual.BDeleteClick(Sender: TObject); begin
ADOQTampil.First;
While not ADOQTampil.Eof do begin
ADOCDeleteD.Execute(ENo.Text); ADOQtampil.Next;
ADOCDeleteM.Execute(ENo.Text); ClearForm;
end;
- Procedure TFOrderJual.BPrintClick : untuk mencetak data order pembelian/
penjualan.
- Procedure TFOrderJual.BBrowserClick : untuk melihat data yang sudah pernah
ada dalam database.
4.6.6. Form Pembelian
Form pembelian digunakan untuk memasukkan data transaksi pembelian.
Procedure yang digunakan pada form ini adalah :
- Procedure TFPembelian.BAddClick : menyimpan data pembelian ke dalam
database pembelian dan bila terjadi pembelian yang kredit maka akan disimpan
juga ke dalam database Hutang Piutang Supplier.
- Procedure TFPembelian.BUpdateClick : memperbaiki data-data yang telah
disimpan.
- Procedure TFPembelian.BDeleteClick : menghapus data-data yang sudah tidak
terpakai.
- Procedure TFPembelian.BPrintClick : untuk mencetak data pembelian.
Contoh procedure TFPembelian.BUpdate :
procedure TFPembelian.BUpdateClick(Sender: TObject); begin
if trim(EOrder.Text) = '' then
ADOCUpdateMBeli.Execute(VarArrayOf([EBeli.Text, ' ', trim(CBKodeSupp.Text), tgl.Date, StrToFloat(EDisc.Text), ETipe.Text,StrToCurr(ETotal.text)]))
else
ADOCUpdateMBeli.Execute(VarArrayOf([EBeli.Text,EOrder.Text, CBKodeSupp.Text, tgl.Date, StrToFloat(EDisc.Text),
ETipe.Text,
StrToCurr(ETotal.text)])); ADOCDeleteDBeli.Execute(EBeli.Text);
ADOQTampil.First;
While not ADOQTampil.Eof do begin ADOCAddDBeli.Execute(VarArrayOf([EBeli.Text, ADOQTampil['KODE'],ADOQTampil['HARGA'], ADOQTampil['JUMLAH']])); ADOQtampil.Next; end; if ETipe.Text = 'K' then ADOCAddHP.Execute(VarArrayOf([EBeli.Text,CBKodeSupp.Text, Tgl.DateTime,StrToCurr(ENetto.Text),'0', EJatuhTempo.Text,StrToInt(ELama.Text)])); ClearForm; end;
4.6.7. Form Penjualan
Form penjualan digunakan untuk transaksi penjualan ke customer.
Penjualan dapat secara tunai maupun kredit. Procedure yang digunakan antara
lain :
- Procedure TFPenjualan.BAddClick(Sender: TObject) untuk menambah data
penjualan.
- Procedure TFPenjualan.BUpdateClick(Sender: TObject) untuk mengubah data
penjualan yang salah.
- Procedure TFPenjualan.BDeleteClick(Sender: TObject) untuk menghapus data
penjualan yang tidak terpakai.
- Procedure TFPenjualan.BPrintClick(Sender: TObject) untuk mencetak data
penjualan dengan nomor nota tertentu. Untuk lebih jelasnya dapat dilihat
penjelasan berikut ini :
Procedure TFPenjualan.BPrintClick(Sender: TObject); begin
ADOQPrint1.SQL.Clear;
ADOQPrint1.SQL.Add('SELECT M.NO_JUAL, M.NO_ORDERJUAL, K.NAMA_KASIR, C.NAMA_CUSTOMER, '); ADOQPrint1.SQL.Add(' R.TGL_ORDERJUAL,R.TGL_DIAMBIL,
M.Total_Jual, (M.Tgl_jual+M.hari) as jatuhtempo, '); ADOQPrint1.SQL.Add(' R.TOTAL_ORDERJUAL, M.TGL_JUAL,
M.DISKON_JUAL, M.TIPE,M.HARI,m.tgl_pelunasan '); ADOQPrint1.SQL.Add('FROM MASTERJUAL M INNER JOIN
CUSTOMER C ON M.KODE_CUSTOMER = C.KODE_CUSTOMER INNER JOIN '); ADOQPrint1.SQL.Add('KASIR K ON M.KODE_KASIR = K.KODE_KASIR LEFT OUTER JOIN ');
ADOQPrint2.SQL.Add('FROM DETAILJUAL D INNER JOIN BARANG B ON D.KODE_BARANG = B.KODE_BARANG ');
ADOQPrint2.SQL.Add('Where No_Jual ='+''''+ EJual.Text + '''' ); ADOQPrint2.Open;
RvProject1.Execute; end;
4.6.8. Form Retur Pembelian dan Form Retur Penjualan
Kedua tampilan form ini kurang lebih sama. Yang membedakan form retur
pembelian digunakan bila terjadi retur barang ke supplier (Istana Boneka pusat),
sedangkan form retur penjualan digunakan bila ada customer yang me-retur
barang.
Procedure yang digunakan pada kedua form antara lain :
- Procedure TFReturBeli.BAddClick(Sender: TObject) untuk menambah data
retur ke database dan menambah data piutang ke supplier (Istana Boneka
pusat).
procedure TFReturBeli.BAddClick(Sender: TObject); begin
ADOCAddM.Execute(VarArrayOf([ERetur.Text,DTP.DateTime,
StrToFloat(EDisc.Text),StrToCurr(ETotal.Text)])); ADOQTampil.First;
While not ADOQTampil.Eof do begin ADOCAddD.Execute(VarArrayOf([ERetur.Text,ADOQTampil['KODE'], ADOQTampil['HARGA'],ADOQTampil['JUMLAH']])); end; ClearForm(); Tombol(True); end;
- Procedure TFReturBeli.BUpdateClick(Sender: TObject) untuk mengubah data
dalam database.
- Procedure TFReturBeli.BDeleteClick(Sender: TObject) untuk menghapus data
dalam database.
4.6.9. Form Pembayaran Supplier dan Pembayaran Customer
Form pembayaran supplier digunakan pada saat pembayaran ke supplier
(Istana Boneka pusat) sedangkan form pembayaran customer digunakan untuk
pembayaran dari customer. Untuk pembayarannya harus menginputkan nomor
nota yang akan dibayar.
Procedure-procedure yang digunakan pada kedua form tersebut antara
lain:
- Procedure TFBayarCust.BAddClick(Sender: TObject) untuk menambahkan
data.
- Procedure TFBayarCust.BUpdateClick(Sender: TObject) untuk mengubah data
bila ada kesalahan.
- Procedure TFBayarCust.BDeleteClick(Sender: TObject) untuk menghapus data
bila ada data yang tidak terpakai.
- Procedure TFBayarCust.BPrintClick(Sender: TObject) untuk mencetak data
pembayaran per nomor bayar.
- Procedure TFBayarCust.BExitClick(Sender: TObject) untuk keluar dari form.
4.6.10. Form Laporan Barang dan Laporan Customer
Laporan barang dapat dicetak semua atau per kode barang. Dengan
menginputkan kode barang kemudian menekan tombol “Cetak”, maka laporan
akan tampil. Porcedure yang digunakan pada kedua form adalah procedure
TFLapBrg.BitBtn1Click(Sender: TObject), yaitu untuk mencetak laporan sesuai
dengan permintaan user.
Contoh procedure untuk mencetak data barang berdasarkan kode barang :
procedure TFLapBrg.BitBtn1Click(Sender: TObject); begin
if radiobutton1.Checked = true then begin
ADOQBarang.SQL.Clear;
ADOQBarang.SQL.Add('Select * From barang '); ADOQBarang.SQL.Add('order by kode_barang'); ADOQBarang.Open;
end;
if radiobutton2.Checked = true then begin
ADOQBarang.SQL.Clear;
ADOQBarang.SQL.Add('Select * From Barang ');
ADOQBarang.SQL.Add('Where kode_barang >= '+''''+cb1.Text+ '''' + ' and kode_barang <= ' + '''' + cb2.Text + '''' ); ADOQBarang.SQL.Add('order by kode_barang ');
ADOQBarang.Open; end;
RvProject1.Execute; end;
4.6.11. Form Laporan Order Pembelian, Laporan Pembelian, dan Laporan Retur
Pembelian
Form laporan order pembelian, pembelian, dan retur pembelian dapat
dibedakan berdasarkan no nota, kode barang, dan tanggal. Dengan meng-
input-kan data yang ingin ditampilinput-kan, kemudian meneinput-kan tombol “Cetak”, maka
laporan akan tampil.
Procedure yang digunakan pada kedua form ini kurang lebih sama.
Contoh procedure untuk mencetak pada laporan order pembelian:
procedure TFLapOrderBeli.BitBtn1Click(Sender: TObject); begin
if RadioGroup1.ItemIndex=0 then {No Nota} begin
if radiobutton1.Checked=true then {Semua} begin
ADOQPrint1.SQL.Clear;
ADOQPrint1.SQL.Add('Select M.No_OrderBeli,
ADOQPrint1.SQL.Add('from MasterOrderBeli M '); ADOQPrint1.Open; ADOQPrint2.SQL.Clear; ADOQPrint2.SQL.Add('Select D.No_OrderBeli,D.Kode_Barang, B.Nama_Barang,D.Jml_OrderBeli,D.Hrg_OrderBeli, (D.Hrg_orderBeli*D.Jml_OrderBeli) as TOTAL'); ADOQPrint2.SQL.Add('From DetailOrderBeli D inner join Barang B on D.Kode_barang = B.Kode_Barang '); ADOQPrint2.Open;
RvOrderBeli.Execute; end
else
if radiobutton2.Checked=true then {Per Nomor} begin ADOQPrint1.SQL.Clear; ADOQPrint1.SQL.Add('Select M.No_OrderBeli, M.Tgl_OrderBeli,M.Total_OrderBeli '); ADOQPrint2.SQL.Clear; ADOQPrint2.SQL.Add('Select D.No_OrderBeli, D.Kode_Barang, B.Nama_Barang, D.Jml_OrderBeli,D.Hrg_OrderBeli,
(D.Hrg_orderBeli * D.Jml_OrderBeli) as TOTAL'); ADOQPrint2.SQL.Add('From DetailOrderBeli D inner join Barang B on D.Kode_barang = B.Kode_Barang '); ADOQPrint2.SQL.Add('Where No_OrderBeli >=' +''''+CB1.Text+''''+'and No_OrderBeli <= '+''''+CB2.Text+''''); ADOQPrint2.Open; RvOrderBeli.Execute; end; end;
if radiogroup1.ItemIndex =1 then {Per Kode} begin
if radiobutton3.Checked = true then {Semua} begin
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from barang '); adoquery3.Open;
D.JML_ORDERBELI, ');
adoquery4.SQL.Add('D.HRG_ORDERBELI, M.TGL_ORDERBELI, '); adoquery4.SQL.Add('(D.JML_ORDERBELI*D.HRG_ORDERBELI)as subtotal ');
adoquery4.SQL.Add('FROM MASTERORDERBELI M INNER JOIN'); adoquery4.SQL.Add(' DETAILORDERBELI D ON M.NO_ORDERBELI = D.NO_ORDERBELI '); adoquery4.SQL.Add('order by kode_barang '); adoquery4.Open; rvproject1.Execute; end else
if radiobutton4.Checked=true then {Per kode} begin
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from barang '); adoquery3.SQL.Add('where kode_barang >= '+''''+ cb3.Text+''''+'and kode_barang <= '+''''+cb4.Text+'''');
adoquery3.Open;
adoquery4.SQL.Add(' SELECT D.NO_ORDERBELI, D.KODE_BARANG, D.JML_ORDERBELI, ');
adoquery4.SQL.Add('D.HRG_ORDERBELI, M.TGL_ORDERBELI, '); adoquery4.SQL.Add('(D.JML_ORDERBELI*D.HRG_ORDERBELI)as subtotal ');
adoquery4.SQL.Add('FROM MASTERORDERBELI M INNER JOIN'); adoquery4.SQL.Add('DETAILORDERBELI D ON M.NO_ORDERBELI = D.NO_ORDERBELI '); adoquery4.SQL.Add('where d.kode_barang >= '+''''+ cb3.Text+''''+'and d.kode_barang<=' +''''+cb4.Text+''''); adoquery4.SQL.Add('order by kode_barang '); adoquery4.Open; rvproject1.Execute; end; end;
if RadioGroup1.ItemIndex=2 then {tanggal} begin
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select convert(char(10), m.tgl_orderbeli,103) as tgl ,
m.no_orderbeli from masterorderbeli m'); ADOQuery1.Open;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select convert(char(10),
m.tgl_orderbeli,103) as tgl, m.no_orderbeli, d.kode_barang, d.hrg_orderbeli, ');
ADOQuery2.SQL.Add(' d.jml_orderbeli, (d.jml_Orderbeli * d.hrg_orderbeli) as subtotal, b.nama_barang '); ADOQuery2.SQL.Add('from masterorderbeli m inner join detailorderbeli d on
d.no_orderbeli=m.no_orderbeli inner join barang b on '); ADOQuery2.SQL.Add(' d.kode_barang=b.kode_barang '); ADOQuery2.Open; RvProject2.Execute; end; end;
4.6.12. Form Laporan Order Penjualan, Laporan Penjualan, dan Laporan Retur
Penjualan
Form laporan order penjualan, penjualan, dan retur penjualan dapat
dibedakan berdasarkan nomor nota, kode barang, tanggal, dan customer. Khusus
laporan penjualan terdapat pilihan tipe penjualan tunai atau kredit. Dengan
meng-input-kan data yang ingin ditampilkan, kemudian menekan tombol “Cetak”, maka
laporan akan ditampilkan. Procedure yang digunakan pada ketiga form ini adalah
procedure TFLapReturJual.BitBtn1Click, yaitu untuk mencetak laporan sesuai
dengan permintaan user. Contoh procedure yang digunakan pada form ini hampir
sama dengan procedure pada sub bab 4.6.11. mengenai form order pembelian.
Form laporan perubahan harga proses menjalankan form ini adalah sama
dengan sub bab 4.6.12. Laporan dapat dibedakan berdasarkan nomor nota, kode
barang, dan tanggal. Procedure yang digunakan pada form ini adalah procedure
TFLapPH.BitBtn1Click, yaitu untuk mencetak laporan sesuai dengan keinginan
user. Contoh procedure yang digunakan pada form ini hampir sama dengan
procedure pada sub bab 4.6.11. mengenai form order pembelian.
4.6.14 Form Laporan Laba (Penjualan)
Form laporan laba, laporan dapat dibedakan berdasarkan tanggal. Ini
untuk memudahkan untuk mengetahui laba per periode. Procedure yang
digunakan pada form laporan laba adalah procedure TFLaba.BitBtn1Click yang
berguna untuk mencetak laporan.
4.6.15 Form Laporan Hutang Piutang Supplier
Form laporan hutang piutang dapat dibedakan berdasarkan data yang
sudah lunas atau belum, dan per tanggal. Procedure yang digunakan adalah
procedure TFLapHutangPiutang.BitBtn1Click untuk mencetak laporan sesuai
dengan keinginan user.
4.6.16 Form Laporan Piutang Customer
Form laporan perubahan harga proses menjalankan form ini adalah sama
dengan sub bab 4.6.12. Laporan dapat dibedakan berdasarkan nomor nota,
customer, dan tanggal. Procedure yang digunakan pada form ini adalah procedure
TFLapPH.BitBtn1Click, yaitu untuk mencetak laporan sesuai dengan keinginan
user. Contoh procedure yang digunakan pada form ini hampir sama dengan
procedure pada sub bab 4.6.11. mengenai form order pembelian.
4.6.17 Form Laporan Pembayaran Supplier dan Laporan Pembayaran Customer
Form laporan pembayaran supplier dan laporan pembayaran customer
didapat dibedakan berdasarkan no nota, customer, dan tanggal. Procedure yang
digunakan pada form ini adalah procedure TFLapPH.BitBtn1Click, yaitu untuk
mencetak laporan sesuai dengan keinginan user. Contoh procedure untuk
mencetak laporan pembayaran customer:
procedure TFLaporanBayarCustomer.BitBtn1Click(Sender: TObject); begin
if radiogroup1.ItemIndex = 0 then begin
if radiobutton3.Checked=true then {semua} begin
ADOQByrCustM.SQL.Clear;
ADOQByrCustM.SQL.Add('SELECT M.NO_BAYAR, M.TGL_BAYAR, M.KODE_CUSTOMER, ');
ADOQByrCustM.SQL.Add('M.TOTAL_BAYAR,c.nama_customer'); ADOQByrCustM.SQL.Add('FROM MASTERBAYARCUSTOMER M inner join customer c on c.kode_customer=masterbayarcustomer.kode_customer'); ADOQByrCustM.Open; ADOQByrCustD.SQL.Clear; ADOQByrCustD.SQL.Add('SELECT NO_BAYAR, detailbayarcustomer.NO_JUAL, JML_BAYAR, '); ADOQByrCustD.SQL.Add(' masterjual.tgl_jual ');
ADOQByrCustD.SQL.Add('FROM DETAILBAYARCUSTOMER D inner join masterjual on masterjual.no_jual=detailbayarcustomer.no_jual'); ADOQByrCustD.Open; RvProject1.Execute; end else if radiobutton4.Checked=true then begin ADOQByrCustM.SQL.Clear;
ADOQByrCustM.SQL.Add('SELECT M.NO_BAYAR, M.TGL_BAYAR, M.KODE_CUSTOMER, ');
ADOQByrCustM.SQL.Add('M.TOTAL_BAYAR,c.nama_customer '); ADOQByrCustM.SQL.Add('FROM MASTERBAYARCUSTOMER M inner join customer c on
c.kode_customer=masterbayarcustomer.kode_customer'); ADOQByrCustM.SQL.Add('where no_bayar >=
'+''''+cbnotaakhir.Text+''''); ADOQByrCustM.Open; ADOQByrCustD.SQL.Clear; ADOQByrCustD.SQL.Add('SELECT NO_BAYAR, detailbayarcustomer.NO_JUAL, JML_BAYAR, '); ADOQByrCustD.SQL.Add(' masterjual.tgl_jual ');
ADOQByrCustD.SQL.Add('FROM DETAILBAYARCUSTOMER inner join masterjual on masterjual.no_jual=detailbayarcustomer.no_jual'); ADOQByrCustD.SQL.Add('where no_bayar >= '+''''+cbnotaawal.Text+''''+'and no_bayar <= '+''''+cbnotaakhir.Text+''''); ADOQByrCustD.Open; RvProject1.Execute; end; end;
if radiogroup1.ItemIndex = 1 then {tanggal} begin
if radiobutton5.Checked = true then{Semua} begin ADOQTglM.SQL.Clear; ADOQTglM.SQL.Add('select convert(char(10), m.tgl_orderjual,103) as tgl, m.no_orderjual '); ADOQTglM.SQL.Add('from masterorderjual m '); ADOQTglM.Open; ADOQTglD.SQL.Clear; ADOQTglD.SQL.Add('select convert(char(10),m.tgl_orderjual,103) as tgl, m.no_orderjual, m.kode_customer, '); ADOQTglD.SQL.Add('d.kode_barang, d.hrg_orderjual, d.jml_orderjual, (d.jml_Orderjual * d.hrg_orderjual) as subtotal, '); ADOQTglD.SQL.Add(' b.nama_barang ');
ADOQTglD.SQL.Add('from masterorderjual m inner join
detailorderjual d on d.no_orderjual=m.no_orderjual '); ADOQTglD.SQL.Add('inner join barang b on
d.kode_barang=b.kode_barang '); ADOQTglD.Open;
RvProject1.Execute; end;
if radiobutton6.Checked = true then{Per Tanggal} begin ADOQTglM.SQL.Clear; ADOQTglM.SQL.Add('select convert(char(10),m.tgl_orderjual,103) as tgl, m.no_orderjual '); ADOQTglM.SQL.Add('from masterorderjual m '); ADOQTglM.SQL.Add('where m.tgl_orderjual >= convert(datetime,'+''''+edit1.Text+''''+ ',103) and m.tgl_orderjual <= convert(datetime,' +''''+edit2.Text+''''+',103)' ); ADOQTglM.Open; ADOQTglD.SQL.Clear; ADOQTglD.SQL.Add('select convert(char(10),m.tgl_orderjual,103) as tgl, m.no_orderjual, m.kode_customer, ');
ADOQTglD.SQL.Add('inner join barang b on
d.kode_barang=b.kode_barang '); ADOQTglD.Open; RvProject1.Execute; end; end; end;