4. implementasi sistem
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of 4. implementasi sistem
52 Universitas Kristen Petra
4. IMPLEMENTASI SISTEM
Pada bab 4 ini akan dijelaskan tentang implementasi interface,
implementasi Program dan urutan pembuatannya. Untuk pemrograman
menggunakan Borland Delphi 7.0. Untuk Database, digunakan Microsoft Access
2000.
4.1. Setting Koneksi Database
Pembuatan database pada Borland Delphi 7 memerlukan penyetingan
koneksi terlebih dahulu. Langkah pertama yaitu memilih komponen
ADOConnection.
Gambar 4.1. Komponen ADOConnection
Setelah itu untuk melakukan koneksi database, lakukan setting pada
komponen tersebut dengan cara masuk ke menu properties, pilih connection string
pada object Inspector.
Gambar 4.2. Object Inspector ADOConnection
Universitas Kristen Petra
53
Berikutnya akan terbuka ConnectionString yang digunakan untuk
memasukan string agar aplikasi dapat terhubung dengan database, user dapat
memasukan string secara manual atau dengan menekan tombol build.seperti yang
terlihat di Gambar 4.3.
Gambar 4.3. Connection String
Setelah tombol build ditekan maka akan keluar Data Link Properties yang
bertujuan untuk memilih jenis database yang dipakai, terdapat di tab provider,
tampilan dapat dilihat pada Gambar 4.4. Setelah itu pilih ”Microsoft Jet 4.0 OLE
DB Provider”.
Gambar 4.4. Data Link Properties – Provider
Universitas Kristen Petra
54
Proses terakhir yang harus dilakukan adalah memasukan nama server dan
nama database yang digunakan, setelah itu tombol test connection ditekan untuk
mencoba apakah nama server dan database yang dimasukan sudah benar apabila
benar maka akan keluar pesan seperti yang terlihat pada Gambar 4.5.
Gambar 4.5. Data Link Properties – Connection
4.2. Implementasi Interface
Setelah database terhubung dengan Program, dilakukan implementasi
interface terlebih dahulu. Implementasi interface adalah dengan membuat form-
form yang digunakan untuk desain dan peletakan isi Program di dalamnya. Setiap
form memiliki fungsi yang berbeda. Untuk mengetahui kegunaan setiap form,
dapat dilihat pada Tabel 4.1.
Universitas Kristen Petra
55
Tabel 4.1. Daftar Form dan Keterangannya
No Nama Form Fungsi
1 FormLogin
Form yang harus dijalankan ketika pertama kali menjalankan Program untuk memasukan username dan password
2 FormUtama Form yang digunakan sebagai main menu
3 FormCreateAccount Form untuk membuat account 4 FormChangePassword Form untuk menganti password 5 FormDeleteAccount Form untuk menghapus account
6 FormChart Form untuk membuat kode rekening baru dan melihat daftar kode rekening yang ada.
7 FormPeriode Form untuk menambah periode
8 FormSaldoAwal Form untuk memasukan saldo awal suatu kode rekening
9 FormMasterBarang Form untuk maintain data barang (tambah, ubah, hapus)
10 FormMasterSupplier Form untuk mantaian data supplier (tambah, ubah, hapus)
11 FormMasterCustomer Form untuk mantaian data customer (tambah, ubah, hapus)
12 FormPurchaseOrder Form untuk membuat purchase order.
13 FormPembelian Form untuk memasukan data pembelian baik langsung maupun menggunakan order pembelian.
14 FormReturPembelian Form untuk memasukan data retur pembelian baik retur berupa uang maupun barang.
15 FormPelunasanPembelian Form untuk mencatat data pembayaran hutang
16 FormPenerimaanBarang Form untuk mencatat data penerimaan retur barang
17 FormOrderCustomer Form untuk membuat order customer
18 FormPenjualan Form untuk memasukan data penjualan dan membuat faktur penjualan
19 FormPelunasanPenjualan Form untuk mencatat data pembayaran piutang
20 FormKasMasuk Form untuk mencatat penerimaan kas di tangan maupun kas di bank.
21 FormKasKeluar Form untuk mencatat pengeluaran kas di tangan maupun kas di bank.
22 FormMutasikas Form untuk mencatat mutasi kas. 23 FormCariSupplier Form untuk melihat data supplier.
Universitas Kristen Petra
56
Tabel 4.1. Daftar Form dan Keterangannya (sambungan)
No Nama Form Fungsi 24 FormCariCustomer Form untuk melihat data customer. 25 FormCariBarang Form untuk melihat data barang. 26 FormCariAkun Form untuk melihat data kode rekening. 27 FormArsipPembelian Form untuk melihat data pembelian 28 FormArsipPenjualan Form untuk melihat data penjualan
29 FormArsipReturPembelian Form untuk melihat data retur pembelian
30 FormArsipPO Form untuk melihat data purchase order
31 FormJurnalUmum Form untuk mencatat data jurnal umum dan penyesuaian
32 FormJurnalKoreksi Form untuk mengkoreksi jurnal yang telah dibuat sebelumnya
33 FormPemakaianBarang Form untuk mencatat data pemakaian barang
34 FormTutupBuku Form untuk proses tutup buku dan mempostingkan jurnal ke buku besar
35 FormLaporanStok Form untuk menampilkan laporan stok
36 FormLaporanPembelian Form untuk menampilkan laporan pembelian
37 FormLaporanReturPembelian Form untuk menampilkan laporan returpembelian
38 FormLaporanPenjualan Form untuk menampilkan laporan penjualan
39 FormLaporanHutang Form untuk menampilkan laporan hutang
40 FormLaporanPiutang Form untuk menampilkan laporan piutang
41 FormLaporanHPP Form untuk menampilkan laporan harga pokok penjualan
42 FormLaporanLabaRugi Form untuk menampilkan laporan laba-rugi
43 FormLaporanPerubahanModal Form untuk menampilkan laporan perubahan modal
44 FormLaporanNeraca Form untuk menampilkan laporan neraca
45 FormLaporanJurnalUmum Form untuk menampilkan laporan jurnal umum
46 FormLaporanJurnal PenerimaanKas
Form untuk menampilkan laporan jurnal pembelian
47 FormLaporanJurnal PengeluaranKas
Form untuk menampilkan laporan jurnal penerimaan kas
48 FormLaporanNeracaSaldo Form untuk menampilkan neraca saldo setelah penutupan.
Universitas Kristen Petra
57
Tabel 4.1. Daftar Form dan Keterangannya (sambungan)
No Nama Form Fungsi
48 FormPilihBukuBesar Form untuk menampilkan laporan jurnal pengeluaran kas
49 FormLaporanBukuBesar Form untuk memilih kode rekening mana yang akan ditampilkan
50 FormLaporanBukuBesar Form untuk menampilkan laporan buku besar.
51 FormCustomizeStatus Form untuk mengganti hak akses dari user.
4.3. Implementasi Program
Dalam implementasi Program akan dibahas beberapa procedure yang
penting yang terdapat pada form.
4.3.1. Login
SegmenProgram 4.1 digunakan untuk mengijinkan pengguna masuk ke
dalam menu utama. Pada form login ini akan di cek apakah username dan
password yang dimasukkan sudah sesuai dengan data yang terdapat pada
database yang sudah dimasukkan sebelumnya. Jika user memasukkan username
dan password yang salah, user tetap dihadapkan pada form login, sedangkan bila
user memasukkan username dan password yang benar maka form utama ( menu
utama ) dapat diakses. Selain itu, dari login juga ditentukan fitur mana yang bisa
dibuka dan tidak bisa dibuka sesuai dengan status dari username.
Segmen Program 4.1. Procedure Login procedure TFormLogin.ButtonOKClick(Sender: TObject); var mast : string; begin ADOQueryLogin.Close; ADOQueryLogin.Parameters.ParamValues['user']:=EditNama.Text; ADOQueryLogin.Parameters.ParamValues['pass']:=EditPassword.Text; ADOQueryLogin.open; if ADOQueryLogin.Eof then bsSkinMessage1.MessageDlg('Username/Password Salah',mterror,[mbok],0) else begin FormUtama.user:= ADOQueryLogin.FieldValues['username']; FormUtama.status:= ADOQueryLogin.FieldValues['status']; mast := '';
Universitas Kristen Petra
58
Segmen Program 4.1. Procedure Login (sambungan) //master mast := ADOQueryLogin.FieldValues['master']; showmessage(mast); if mast[1] = '1' then begin FormUtama.BuatUser1.Enabled := true; FormUtama.HapusUser1.Enabled := true; end else begin FormUtama.BuatUser1.Enabled := false; FormUtama.HapusUser1.Enabled := false; end; if mast[2] = '1' then FormUtama.SettingHakAkses1.Enabled := true else FormUtama.SettingHakAkses1.Enabled := false; if mast[3] = '1' then FormUtama.COA1.Enabled := true else FormUtama.COA1.Enabled := false; if mast[4] = '1' then FormUtama.Bahan1.Enabled := true else FormUtama.Bahan1.Enabled := false; if mast[5] = '1' then FormUtama.Supplier1.Enabled := true else FormUtama.Supplier1.Enabled := false; if mast[6] = '1' then FormUtama.Customer1.Enabled := true else FormUtama.Customer1.Enabled := false; //pembelian mast:=ADOQueryLogin.FieldValues['Pembelian']; if mast[1]='1' then formutama.PemesananBahanProduksi1.Enabled:=true else FormUtama.PemesananBahanProduksi1.Enabled := false; if mast[2]='1' then formutama.PembelianBarang1.Enabled:=true else FormUtama.PembelianBarang1.Enabled := false; if mast[3]='1' then formutama.ReturPembelian1.Enabled:=true else FormUtama.ReturPembelian1.Enabled := false; if mast[4] = '1' then FormUtama.PembayaranHutang1.Enabled := true else FormUtama.PembayaranHutang1.Enabled := false; if mast[5] = '1' then FormUtama.Penerimaan1.Enabled := true else FormUtama.Penerimaan1.Enabled := false; //penjualan mast:=ADOQueryLogin.FieldValues['Penjualan']; if mast[1]='1' then formutama.PemesananUdang1.Enabled:=true else FormUtama.PemesananUdang1.Enabled := false; if mast[2]='1' then formutama.Penjualan1.Enabled:=true else FormUtama.PembelianBarang1.Enabled := false; if mast[3]='1' then formutama.PelunasanPiutang1.Enabled:=true else FormUtama.PelunasanPiutang1.Enabled := false; //akuntasi mast:=ADOQueryLogin.FieldValues['akuntansi']; if mast[1]='1' then formutama.Kas1.Enabled:=true else FormUtama.Kas1.Enabled := false; if mast[2]='1' then formutama.JurnalEntry1.Enabled:=true else FormUtama.JurnalEntry1.Enabled := false; if mast[3]='1' then formutama.JurnalKoreksi1.Enabled:=true else FormUtama.JurnalKoreksi1.Enabled := false; if mast[4] = '1' then
Universitas Kristen Petra
59
Segmen Program 4.1. Procedure Login (sambungan) FormUtama.PemakaianBahanProduksi1.Enabled := true else FormUtama.PemakaianBahanProduksi1.Enabled := false; if mast[5] = '1' then FormUtama.utupBuku1.Enabled := true else FormUtama.utupBuku1.Enabled := false; //laporan mast:=ADOQueryLogin.FieldValues['laporan']; if mast[1]='1' then formutama.LaporanStok1.Enabled:=true else FormUtama.LaporanStok1.Enabled := false; if mast[2]='1' then formutama.LaporanPembelian1.Enabled:=true else FormUtama.LaporanPembelian1.Enabled := false; if mast[3]='1' then formutama.LaporanReturPembelian1.Enabled:=true else FormUtama.LaporanReturPembelian1.Enabled := false; if mast[4] = '1' then FormUtama.LaporanPenjualan1.Enabled := true else FormUtama.LaporanPenjualan1.Enabled := false; if mast[5] = '1' then FormUtama.LaporanHutang1.Enabled := true else FormUtama.LaporanHutang1.Enabled := false; if mast[6]='1' then formutama.LaporanPiutang1.Enabled:=true else FormUtama.LaporanPiutang1.Enabled := false; if mast[7]='1' then formutama.LaporanPemakaian1.Enabled:=true else FormUtama.LaporanPemakaian1.Enabled := false; if mast[8] = '1' then FormUtama.LaporanHargaPokokPenjualan1.Enabled := true else FormUtama.LaporanHargaPokokPenjualan1.Enabled := false; if mast[9] = '1' then FormUtama.LaporanJurnal1.Enabled := true else FormUtama.LaporanJurnal1.Enabled := false; if mast[10] = '1' then FormUtama.LaporanBukuBesar1.Enabled := true else FormUtama.LaporanBukuBesar1.Enabled := false; FormUtama.ShowModal; end; end;
4.3.2. Menambah Kode Rekening
Segmen Program 4.2 digunakan untuk mengenerate kode rekening baru
pada waktu tipe akun dipilih. Apabila tipe akun yang dipilih adalah aktiva dan
jenis lancar maka kode akun akan di generate dengan awal 11, digit pertama
untuk tipe akun dan digit 2 untuk jenis akun.
Segmen Program 4.2. Procedure Auto Generate Nomor Perkiraan Akuntasi procedure TFormChart.ComboboxTipeChange(Sender: TObject); var i : string; j : string; kodeCOA : string; hit : integer; begin i:=inttostr(ComboboxTipe.ItemIndex+1); if RadiogroupJenis.Visible then
Universitas Kristen Petra
61
Segmen Program 4.2. Procedure Auto Generate Nomor Perkiraan Akuntasi
(sambungan) j:=inttostr(RadiogroupJenis.ItemIndex+1) else j:='1'; kode:= i+j; ADOQueryAuto.Close; ADOQueryAuto.Parameters.ParamValues['kode']:= kode+'%'; ADOQueryAuto.Open; hit:=ADOQueryAuto.RecordCount+1; kodeCOA:=kode+FormUtama.addzero(hit,2); EditKode.Text:=kodeCOA; if ComboboxTipe.ItemIndex=0 then begin RadiogroupJenis.Items.Clear; RadiogroupJenis.Items.Add('Lancar'); RadiogroupJenis.Items.Add('Tetap'); RadiogroupJenis.Items.Add('Akumulasi Penyusutan'); RadiogroupJenis.ItemIndex:=0; bsSkinPanel1.Show; end else if ComboboxTipe.ItemIndex=5 then begin RadiogroupJenis.Items.Clear; RadiogroupJenis.Items.Add('Operasional'); RadiogroupJenis.Items.Add('nonoperasional'); RadiogroupJenis.ItemIndex:=0; bsSkinPanel1.Show; end else begin RadiogroupJenis.ItemIndex:=0; bsSkinPanel1.Hide; end;
end;
Segmen Program 4.3 digunakan untuk menambah data kode rekening
baru. Sebelum penyimpanan dilakukan pengecekan apakah nama akun pada kode
rekening sudah diisi, bila belum diisi maka penyimpanan tidak dapat dilakukan.
SegmenProgram 4.3. Procedure Penyimpanan Akun Baru procedure TFormChart.ButtonTambahClick(Sender: TObject); begin if EditNama.Text<>'' then begin ADOQueryAdd.Close; ADOQueryAdd.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryAdd.Parameters.ParamValues['pnama']:=EditNama.Text; ADOQueryAdd.Parameters.ParamValues['pposisi']:=RadioGroupPosisi.Items[RadioGroupPosisi.ItemIndex][1]; ADOQueryAdd.Parameters.ParamValues['ptipe']:=inttostr(ComboboxTipe.ItemIndex)+inttostr(RadiogroupJenis.ItemIndex); ADOQueryAdd.ExecSQL; FormShow(sender); end else bsSkinMessage1.MessageDlg('Nama Akun Masih Kosong',mtError,[mbOk],0); end;
Universitas Kristen Petra
62
4.3.3. Menambah Data Pembelian
Segmen Program 4.4 digunakan untuk menambah data pembelian terdapat
beberapa hal yang penting. Pada pembelian terdapat pembelian dengan purchase
order (pembelian tidak langsung) maupun pembelian tanpa purchase order
(pembelian langsung). Untuk pembelian tidak langsung sebelumnya harus
melakukan purchase order telebih dahulu. Data pembelian akan di masukan pada
Tabel pembelian, Tabel detail pembelian, dan Tabel hutang jika ada pembayaran
dari pembelian kredit. Penyimpanan data pembelian juga disertai dengan update
stok dan harga barang yang dibeli pada Tabel barang, serta penjurnalan otomatis
sesuai dengan transaksi yang kemudian akan dimasukan pada tabel jurnal.
Segmen Program 4.4. Procedure Penyimpanan Data Pembelian procedure TFormPembayaranPembelian.ButtonSimpanClick(Sender: TObject); var no,hargasatuansetelahdiskon : integer; dis : real; kodejurnal: string[8]; begin //insert ke Tabel pembelian ADOQueryInsertPembelian.Close; ADOQueryInsertPembelian.Parameters.ParamValues['pkodebeli']:=Label6.Caption; ADOQueryInsertPembelian.Parameters.ParamValues['pkodepo']:=FormPembelianLangsung.EditPO.Text; ADOQueryInsertPembelian.Parameters.ParamValues['pkodesup']:=FormPembelianLangsung.EditKode.Text; ADOQueryInsertPembelian.Parameters.ParamValues['ptglpesan']:=datetostr(FormPembelianLangsung.DateTimePicker1.Date); ADOQueryInsertPembelian.Parameters.ParamValues['ptgllunas']:=datetostr(FormPembelianLangsung.DateTimePicker2.Date); ADOQueryInsertPembelian.Parameters.ParamValues['ptotal']:=LabelTotal.Caption; if strtoint(Label9.Caption) = strtoint(EditHarga.EditText) then ADOQueryInsertPembelian.Parameters.ParamValues['plunas']:=True else ADOQueryInsertPembelian.Parameters.ParamValues['plunas']:=False; ADOQueryInsertPembelian.Parameters.ParamValues['pum']:=EditHarga.EditText; ADOQueryInsertPembelian.Parameters.ParamValues['pdis']:=Editdiscount.EditText; ADOQueryInsertPembelian.ExecSQL; //insert ke Tabel detail_Pembelian dis:=StrToInt(Editdiscount.EditText) /
Universitas Kristen Petra
63
Segmen Program 4.4. Procedure Penyimpanan Data Pembelian (sambungan) StrToInt(LabelTotal.Caption) ; dis:=1-dis; FormPembelianLangsung.ADOQueryDetailPO.Close; FormPembelianLangsung.ADOQueryDetailPO.Open; FormPembelianLangsung.ADOQueryDetailPO.First; while not FormPembelianLangsung.ADOQueryDetailPO.Eof do begin ADOQueryDetailPembelian.Close; ADOQueryDetailPembelian.Parameters.ParamValues['pkodebeli']:=Label6.Caption; ADOQueryDetailPembelian.Parameters.ParamValues['pkodebrg']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['kode_barang']; ADOQueryDetailPembelian.Parameters.ParamValues['pjumlah']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['jumlah_pesan']; ADOQueryDetailPembelian.Parameters.ParamValues['pharga']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['harga_satuan']; hargasatuansetelahdiskon:= Floor(FormPembelianLangsung.ADOQueryDetailPO.FieldValues['harga_satuan']*dis); ADOQueryDetailPembelian.Parameters.ParamValues['phrgbersih']:=hargasatuansetelahdiskon; ADOQueryDetailPembelian.ExecSQL; ADOQuerycekjumlahstok.Close; ADOQuerycekjumlahstok.Parameters.ParamValues['pkode']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['kode_barang']; ADOQuerycekjumlahstok.Open; //update harga dan stok barang ADOQueryUpdateBarang.Close; ADOQueryUpdateBarang.Parameters.ParamValues['pharga']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['harga_satuan']; ADOQueryUpdateBarang.Parameters.ParamValues['pkode']:=FormPembelianLangsung.ADOQueryDetailPO.FieldValues['kode_barang']; ADOQueryUpdateBarang.Parameters.ParamValues['pstok']:=inttostr(strtoint(FormPembelianLangsung.ADOQueryDetailPO.FieldValues['jumlah_pesan'])+strtoint(ADOQuerycekjumlahstok.FieldValues['stok'])); ADOQueryUpdateBarang.Parameters.ParamValues['pnominal']:=StrToInt(ADOQuerycekjumlahstok.FieldValues['nominal'])+(FormPembelianLangsung.ADOQueryDetailPO.FieldValues['jumlah_pesan']*hargasatuansetelahdiskon); ADOQueryUpdateBarang.ExecSQL; FormPembelianLangsung.ADOQueryDetailPO.Next; end; ADOQueryNomorKodeJurnal.Close; ADOQueryNomorKodeJurnal.Parameters.ParamValues['pkode']:='PB'; ADOQueryNomorKodeJurnal.Open;
Universitas Kristen Petra
64
Segmen Program 4.4. Procedure Penyimpanan Data Pembelian (sambungan) no:=ADOQueryNomorKodeJurnal.FieldValues['nomor']; kodejurnal:='PB'+FormUtama.addzero(no,6); //edit no di kode jurnal ADOQueryUpdateKodeJurnal.Close; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pnomor']:=no+1; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pkode']:='PB'; ADOQueryUpdateKodeJurnal.ExecSQL; //insert ke Tabel jurnal (pembelian D) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(FormPembelianLangsung.DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='5102'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='D'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(LabelTotal.Caption); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='PEMBELIAN '+Label6.Caption; ADOQueryInsertJurnal.ExecSQL; //insert pembayaran ke Tabel hutang jika ada if strtoint(EditHarga.EditText) > 0 then begin ADOQueryInsertPembayaran.Close; ADOQueryInsertPembayaran.Parameters.ParamValues['ptgl'] := datetostr(FormPembelianLangsung.DateTimePicker1.date); ADOQueryInsertPembayaran.Parameters.ParamValues['pkode'] := Label6.Caption; ADOQueryInsertPembayaran.Parameters.ParamValues['pjmlh'] := strtoint(EditHarga.EditText); ADOQueryInsertPembayaran.ExecSQL; //insert ke Tabel jurnal (kas K) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; DOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(FormPembelianLangsung.DateTimePicker1.Date); if comboboxvia.ItemIndex=0 then ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1101' else if comboboxvia.ItemIndex=1 then ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1102'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='K'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=EditHarga.EditText; ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='PEMBELIAN '+Label6.Caption; ADOQueryInsertJurnal.ExecSQL; end; if strtoint(EditHarga.EditText)=0 then bsSkinMessage1.MessageDlg('Pembayaran0',mtInformation,[mbOk],0);
Universitas Kristen Petra
65
Segmen Program 4.4. Procedure Penyimpanan Data Pembelian (sambungan) //insert ke Tabel jurnal (Diskon Pembelian K) if strtoint(EditDiscount.EditText)>0 then begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber'] := kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal'] := datetostr(FormPembelianLangsung.DateTimePicker1.date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode'] := '5104'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi'] := 'K'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo'] := strtoint(EditDiscount.EditText); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan'] := 'PEMBELIAN '+Label6.Caption; ADOQueryInsertJurnal.ExecSQL; end; //insert ke Tabel jurnal (Hutang Dagang K) if strtoint(LabelTotal.Caption)-strtoint(Editdiscount.EditText)-strtoint(EditHarga.EditText) > 0 then begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber'] := kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal'] := datetostr(FormPembelianLangsung.DateTimePicker1.date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode'] := '2101'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi'] := 'K'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo'] := strtoint(Label9.Caption)-strtoint(EditHarga.EditText); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan'] := 'PEMBELIAN '+Label6.Caption; ADOQueryInsertJurnal.ExecSQL; end; //update sudahtransaksi PO apabila pembelian Tidak langsung if FormPembelianLangsung.EditPO.Text <>'' then begin ADOQueryUpdatePO.Close; ADOQueryUpdatePO.Parameters.ParamValues['pkode']:=FormPembelianLangsung.EditPO.Text; ADOQueryUpdatePO.ExecSQL; end; //Finish back:=False; close; end;
Universitas Kristen Petra
66
Segmen Program 4.5 digunakan untuk menyimpan data pembayaran
hutang kepada supplier. Sebelum di simpan akan di cek terlebih dahulu apakah
jumlah yang diinputkan sudah benar, apabila jumlah pembayaran diinputkan lebih
besar dari sisa hutang maka data tidak bisa disimpan. Apabila jumlah pembayaran
benar maka data pelunasan pembelian akan dimasukan pada Tabel hutang dan
Tabel jurnal. Apabila sisa hutang langsung dilunasi maka status lunas pada Tabel
pembelian akan diupdate.
Segmen Program 4.5. Procedure Penyimpanan Pelunasan Pembelian procedure TFormPelunasanPembelian.ButtonSimpanClick(Sender: TObject); var kodejurnal :string[8]; no : integer; begin if (EditKode.Text='') then begin bsSkinMessage1.MessageDlg('Input masih kosong',mtError,[mbOk],0) end else if (strtoint(EditBayar.EditText)>strtoint(LabelSisa.Caption)) then bsSkinMessage1.MessageDlg('Input Jumlah Pembayaran ada yang salah',mtError,[mbOk],0) else if strtoint(EditBayar.EditText)>0 then begin ADOQueryInsertIntoHutang.Close; ADOQueryInsertIntoHutang.Parameters.ParamValues['ptgl']:= datetostr(DateTimePicker1.Date); ADOQueryInsertIntoHutang.Parameters.ParamValues['pkode']:= EditKode.Text; ADOQueryInsertIntoHutang.Parameters.ParamValues['pjumlah']:= EditBayar.EditText; ADOQueryInsertIntoHutang.ExecSQL; ADOQueryCekKodeJurnal.Close; ADOQueryCekKodeJurnal.Parameters.ParamValues['pkode'] := 'LL'; ADOQueryCekKodeJurnal.Open; no := ADOQueryCekKodeJurnal.FieldValues['nomor']; kodejurnal := 'LL'+FormUtama.addzero(ADOQueryCekKodeJurnal.FieldValues['nomor'],6); //update Nomor di KodeJurnal ADOQueryUpdateKodeJurnal.Close; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pkode'] := 'LL'; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pno'] := no+1; ADOQueryUpdateKodeJurnal.ExecSQL; //insert ke jurnal ( Hutang Dagang D) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date);
Universitas Kristen Petra
67
Segmen Program 4.5. Procedure Penyimpanan Pelunasan Pembelian
(sambungan) ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='2101'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='D'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(EditBayar.EditText); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='PEMBAYARAN'+EditKode.Text; ADOQueryInsertJurnal.ExecSQL; //insert ke jurnal ( Kas K) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); if ComboboxVia.ItemIndex=0 then ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1101' else ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1102'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='K'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(EditBayar.EditText); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='PEMBAYARAN'+EditKode.Text; ADOQueryInsertJurnal.ExecSQL; if strtoint(EditBayar.EditText) = strtoint(LabelSisa.Caption) then begin ADOQueryUpdatePembelian.Close; ADOQueryUpdatePembelian.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryUpdatePembelian.ExecSQL; bsSkinMessage1.MessageDlg(' HUTANG LUNAS',mtInformation,[mbok],0); end; FormShow(sender); end else begin bsSkinMessage1.MessageDlg('Jumlah Pembayaran 0',mtError,[mbOk],0); FormShow(sender);
Universitas Kristen Petra
68
4.3.4. Menambah Data Retur Pembelian
Ada beberapa procedure penting dalam retur pembelian. Procedure untuk
menyimpan data retur pembelian (Segmen Program 4.6.) dan untuk menerima
barang atau uang dari retur pembelian (Segmen Program 4.7 dan Segmen Program
4.8). Pada waktu SegmenProgram 4.6 dijalankan maka stok barang akan di update
pada Tabel barang sesuai dengan jumlah barang yang diretur. Kemudian data retur
pembelian seperti nomor retur, nota pembelian, supplier, total retur akan
dimasukan pada Tabel retur pembelian, sedangkan untuk barang yang diretur akan
dimasukan pada Tabel detail retur pembelian.
Segmen Program 4.6. Procedure Penyimpanan Retur Pembelian procedure TFormReturPembelian.ButtonSimpanClick(Sender: TObject); var kodejurnal : string[8]; no : integer; begin ADOQuery1.Close; ADOQuery1.Open; ADOQuery1.Last; if (ADOQuery1.RecordCount>0) and (DateTimePicker1.Date<=ADOQuery1.FieldValues['akhir_periode']) then bsSkinMessage1.MessageDlg('Tranksaksi pada periode ini sudah ditutup',mtError,[mbok],0) else begin if ADOQueryTempdetailretur.Eof then begin bsSkinMessage1.MessageDlg('Barang yang diretur belum diinputkan',mtError,[mbok],0); end else begin ADOQueryInsertRetur.Close; ADOQueryInsertRetur.Parameters.ParamValues['pkoderetur'] := label4.Caption; ADOQueryInsertRetur.Parameters.ParamValues['pkodebeli'] := EditKode.Text; ADOQueryInsertRetur.Parameters.ParamValues['ptgl'] := datetostr(DateTimePicker1.Date); ADOQueryCekSupplier.Close; ADOQueryCekSupplier.Parameters.ParamValues['pnama']:= Label5.Caption; ADOQueryCekSupplier.Open; ADOQueryInsertRetur.Parameters.ParamValues['pkodesup'] := ADOQueryCekSupplier.FieldValues['kode_supplier']; ADOQueryInsertRetur.Parameters.ParamValues['ptotal'] := DBText1.Caption; ADOQueryInsertRetur.ExecSQL; ADOQueryTempdetailretur.First; while not ADOQueryTempdetailretur.Eof do begin ADOQueryInsertDetail.Close; ADOQueryInsertDetail.Parameters.ParamValues['pkoderetur'] := label4.Caption; ADOQueryInsertDetail.Parameters.ParamValues['pkodebrg'] := ADOQueryTempdetailretur.FieldValues['kode_barang']; ADOQueryInsertDetail.Parameters.ParamValues['pjumlah'] := ADOQueryTempdetailretur.FieldValues['jumlah_retur'];
Universitas Kristen Petra
69
Segmen Program 4.6. Procedure Penyimpanan Retur Pembelian (sambungan) ADOQueryInsertDetail.Parameters.ParamValues['pharga'] := ADOQueryTempdetailretur.FieldValues['harga_satuan']; ADOQueryInsertDetail.ExecSQL; //update stok di Tabel barang ADOQuerycekjumlahstok.Close; ADOQuerycekjumlahstok.Parameters.ParamValues['pkode']:=LabelKode.Caption; ADOQuerycekjumlahstok.Open; ADOQueryUpdateBarang.Close; ADOQueryUpdateBarang.Parameters.ParamValues['pkode']:=LabelKode.Caption; ADOQueryUpdateBarang.Parameters.ParamValues['pstok']:=inttostr(strtoint(ADOQuerycekjumlahstok.FieldValues['stok'])-strtoint(ADOQueryTempdetailretur.FieldValues['jumlah_retur'])); ADOQueryUpdateBarang.Parameters.ParamValues['pnominal']:=StrToInt(ADOQuerycekjumlahstok.FieldValues['nominal'])-StrToInt(DBText1.Caption); ADOQueryUpdateBarang.ExecSQL; ADOQueryTempdetailretur.Next; end; end; end; end;
Pada waktu SegmenProgram 4.7 dijalankan maka stok barang akan di
update pada Tabel barang dan dicatat pada Tabel penerimaan retur dan Tabel
detail penerimaanretur.
Segmen Program 4.7. Procedure Penyimpanan Penerimaan Retur Barang. procedure TFormPenerimaanReturBarang.ButtonSimpanClick(Sender: TObject); var no : integer; kodejurnal : string; begin if not ADOQueryDetail.Eof then begin ADOQueryDetail.First; while not ADOQueryDetail.Eof do begin ADOQueryUpdateBarang.Close; ADOQueryUpdateBarang.Parameters.ParamValues['pkode']:=ADOQueryDetail.FieldValues['b.kode_barang']; ADOQueryUpdateBarang.Open; ADOQueryUpdateBarang.Edit; ADOQueryUpdateBarang.FieldValues['stok']:=ADOQueryUpdateBarang.FieldValues['stok']+ ADOQueryDetail.FieldValues['jumlah_retur'];
Universitas Kristen Petra
70
Segmen Program 4.7. Procedure Penyimpanan Penerimaan Retur Barang
(sambungan) ADOQueryUpdateBarang.FieldValues['nominal']:=strtoint(ADOQueryUpdateBarang.FieldValues['nominal'])+(strtoint(ADOQueryDetail.FieldVal ues['jumlah_retur'])*strtoint(ADOQueryDetail.FieldValues['d.harga_bersih'])); ADOQueryUpdateBarang.Post; ADOQueryDetail.Next; end; //insert ke penerimaan retur ADOQueryInsertPenerimaan.Close; ADOQueryInsertPenerimaan.Parameters.ParamValues['ptgl']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertPenerimaan.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryInsertPenerimaan.ExecSQL; // insert ke detail PenerimaanRetur ADOQueryInsertDetailPenerimaanRetur.Close; ADOQueryInsertDetailPenerimaanRetur.Parameters.ParamValues['ptgl']:=datetostr(DateTimePicker1.Date); ADOQueryInsertDetailPenerimaanRetur.Parameters.ParamValues['pkoderetur']:=EditKode.Text; ADOQueryInsertDetailPenerimaanRetur.Parameters.ParamValues['pkodebrg']:=ADOQueryDetail.FieldValues['b.kode_barang']; ADOQueryInsertDetailPenerimaanRetur.Parameters.ParamValues['pjml']:=ADOQueryDetail.FieldValues['jumlah_retur']; ADOQueryInsertDetailPenerimaanRetur.Parameters.ParamValues['pharga']:=ADOQueryDetail.FieldValues['d.harga_bersih']; ADOQueryInsertDetailPenerimaanRetur.ExecSQL; FormShow(sender); bsSkinMessage1.MessageDlg('Data Penerimaan Retur Barang Disimpan',mtInformation,[mbOk],0); end else bsSkinMessage1.MessageDlg('Nota Retur Tidak Valid',mtError,[mbOk],0); end;
Pada waktu Segmen Program 4.8 dijalankan maka akan di cek jumlah
hutang lebih besar/lebih kecil dari total retur jika lebih besar maka akan langsung
dilakukan pengurangan hutang tanpa pengembalian uang dan total beli akan
dikurangi dengan jumlah hutang kemudian status lunas pada Tabel pembelian
akan diupdate menjadi true. Jika jumlah hutang lebih kecil total retur maka total
Universitas Kristen Petra
71
retur akan di kurangi hutang sisanya akan dikembalikan berupa uang. Kemudian
akan dilakukan posting ke jurnal secara otomatis sesuai dengan kondisi.
Segmen Program 4.8. Procedure Penyimpanan Penerimaan Retur Uang procedure TFormPenerimaanReturUang.ButtonSimpanClick(Sender: TObject); var no: integer; kodejurnal : string; begin if not ADOQueryDetail.eof then begin ADOQueryCekKodeJurnal.Close; ADOQueryCekKodeJurnal.Parameters.ParamValues['pkode']:='LL'; ADOQueryCekKodeJurnal.open; no:=ADOQueryCekKodeJurnal.FieldValues['nomor']; kodejurnal:='LL'+FormUtama.addzero(no,6); //edit nomor kode jurnal ADOQueryUpdateKodeJurnal.Close; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pno']:=no+1; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pkode']:='LL'; ADOQueryUpdateKodeJurnal.ExecSQL; if strtoint(LabelPengembalianUang.Caption) > 0 then begin //insert ke jurnal ( Kas D) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); if comboboxvia.ItemIndex=0 then ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1101' else ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='1102'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='D'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(LabelPengembalianUang.Caption); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='Penerimaan Retur Pembelian '+ EditKode.Text; ADOQueryInsertJurnal.ExecSQL; end; if strtoint(LabelPengembalianHutang.Caption)>0 then begin // insert ke jurnal ( Hutang D ) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date);
Universitas Kristen Petra
72
Segmen Program 4.8. Procedure Penyimpanan Penerimaan Retur Uang
(sambungan) ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='2101'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='D'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(LabelPengembalianHutang.Caption); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='Penerimaan Retur Pembelian '+ EditKode.Text; ADOQueryInsertJurnal.ExecSQL; if ADOQueryInformasi.RecordCount>0 then begin ADOQueryUpdatePembelian.Close; ADOQueryUpdatePembelian.Parameters.ParamValues['pkode']:=ADOQueryInformasi.FieldValues['kode_beli']; ADOQueryUpdatePembelian.open; ADOQueryUpdatePembelian.Edit; ADOQueryUpdatePembelian.FieldValues['total_beli']:=strtoint(ADOQueryUpdatePembelian.FieldValues['total_beli'])-strtoint(LabelPengembalianHutang.Caption); ADOQueryUpdatePembelian.Post; end; if StrToInt(Labelyangmasih.Caption)<= strtoint(LabelTotalRetur.Caption) then begin ADOQueryUpdatePembelian.Close; ADOQueryUpdatePembelian.Parameters.ParamValues['pkode']:=ADOQueryInformasi.FieldValues['kode_beli']; ADOQueryUpdatePembelian.open; ADOQueryUpdatePembelian.Edit; ADOQueryUpdatePembelian.FieldValues['lunas']:=True; ADOQueryUpdatePembelian.Post; end; end; // insert ke jurnal ( Retur Pembelian K ) ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:='5103'; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:='K'; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=strtoint(LabelTotalRetur.Caption); ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:='Penerimaan Retur Pembelian '+ EditKode.Text; ADOQueryInsertJurnal.ExecSQL; //insert ke penerimaan retur ADOQueryInsertPenerimaan.Close; ADOQueryInsertPenerimaan.Parameters.ParamValues['ptgl']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertPenerimaan.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryInsertPenerimaan.ExecSQL; FormShow(sender); bsSkinMessage1.MessageDlg('Data Penerimaan Retur Uang Disimpan',mtInformation,[mbOk],0); end else bsSkinMessage1.MessageDlg('Nota Retur Tidak Valid',mtError,[mbOk],0); end;
Universitas Kristen Petra
73
4.3.5. Menyimpan Pemakaian Barang Secara FIFO
SegmenProgram 4.9 digunakan untuk memasukan data pemakaian barang
pada Tabel pemakaian barang. Data stok pada Tabel barang akan diupdate sesuai
pemakaian, serta pada Tabel detail pembelian akan di cek tanggal beli yang paling
awal untuk di ambil harga satuannya yang akan di masukkan pada Tabel
pemakaian barang.
Segmen Program 4.9. Procedure Pemakaian Barang FIFO procedure TFormPemakaianBarang.ButtonSimpanClick(Sender: TObject); var selesai : boolean; pakai,no : integer; jumlah : longint; kodejurnal : string[8]; begin jumlah:=0; if (EditKode.Text<>'') and (Editjumlah.EditText<>'') and (strtoint(Editjumlah.EditText)<= strtoint(LabelSisa.Caption)) then begin ADOQueryDetail_Pembelian.Close; ADOQueryDetail_Pembelian.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryDetail_Pembelian.open; ADOQueryDetail_Pembelian.First; selesai := False; pakai:=0; pakai := strtoint(Editjumlah.EditText); ADOQuerycekjumlahstok.Close; ADOQuerycekjumlahstok.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQuerycekjumlahstok.open; while not selesai do begin if ADOQueryDetail_Pembelian.FieldValues['jumlah_beli']-ADOQueryDetail_Pembelian.FieldValues['sudah_dipakai']>=pakai then begin selesai:=True; jumlah:=jumlah + pakai *ADOQueryDetail_Pembelian.FieldValues['harga_bersih']; ADOQueryUpdateDetailPembelian.Close; ADOQueryUpdateDetailPembelian.Parameters.ParamValues['psudah']:=ADOQueryDetail_Pembelian.FieldValues['sudah_dipakai']+pakai; ADOQueryUpdateDetailPembelian.Parameters.ParamValues['pkodebrg']:=EditKode.Text;
Universitas Kristen Petra
74
Segmen Program 4.9. Procedure Pemakaian Barang FIFO (sambungan) ADOQueryUpdateDetailPembelian.Parameters.ParamValues['pkodebeli']:=ADOQueryDetail_Pembelian.FieldValues['kode_beli']; ADOQueryUpdateDetailPembelian.ExecSQL; end else begin ADOQueryUpdateDetailPembelian.Close; ADOQueryUpdateDetailPembelian.Parameters.ParamValues['psudah']:=ADOQueryDetail_Pembelian.FieldValues['jumlah_beli']; ADOQueryUpdateDetailPembelian.Parameters.ParamValues['pkodebrg']:=EditKode.Text; ADOQueryUpdateDetailPembelian.Parameters.ParamValues['pkodebeli']:=ADOQueryDetail_Pembelian.FieldValues['kode_beli']; ADOQueryUpdateDetailPembelian.ExecSQL; pakai:=pakai-(ADOQueryDetail_Pembelian.FieldValues['jumlah_beli']-ADOQueryDetail_Pembelian.FieldValues['sudah_dipakai']); jumlah:=jumlah+(ADOQueryDetail_Pembelian.FieldValues['jumlah_beli']-ADOQueryDetail_Pembelian.FieldValues['sudah_dipakai']) * ADOQueryDetail_Pembelian.FieldValues['harga_bersih']; ADOQueryDetail_Pembelian.Next; end; end; ADOQueryInsertPemakaian.Close; ADOQueryInsertPemakaian.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertPemakaian.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryInsertPemakaian.Parameters.ParamValues['pjumlah']:=Editjumlah.EditText; ADOQueryInsertPemakaian.Parameters.ParamValues['pletak']:=ComboBox2.Tex ADOQueryInsertPemakaian.Parameters.ParamValues['pnominal']:=jumlah; ADOQueryInsertPemakaian.ExecSQL; ADOQueryUpdateBarang.Close; ADOQueryUpdateBarang.Parameters.ParamValues['pkode']:=EditKode.Text; ADOQueryUpdateBarang.Parameters.ParamValues['pstok']:=ADOQuerycekjumlahstok.FieldValues['stok']-strtoint(Editjumlah.EditText); ADOQueryUpdateBarang.Parameters.ParamValues['pnominal']:=StrToInt(ADOQuerycekjumlahstok.FieldValues['nominal'])-jumlah; ADOQueryUpdateBarang.ExecSQL; FormShow(sender); FormUtama.FormShow(sender); end else begin bsSkinMessage1.MessageDlg('Input data Pemakaian ada yang salah',mtError,[mbOk],0); Editjumlah.SetFocus; end;
end;
Universitas Kristen Petra
75
4.3.6. Penyimpanan Proses Penerimaan Kas
SegmenProgram 4.10 digunakan untuk menyimpan transaksi kas masuk
seperti pendapatan bunga, penambahan modal oleh pemilik (Investasi), dan lain-
lain ke Tabel jurnal.
Segmen Program 4.10. Procedure Penyimpanan Penerimaan Kas procedure TFormKasMasuk.ButtonOKClick(Sender: TObject); var kodejurnal : string[8]; no : integer; begin ADOQueryNomorKodeJurnal.Close; ADOQueryNomorKodeJurnal.Parameters.ParamValues['pkode']:='KM'; ADOQueryNomorKodeJurnal.Open; no:=ADOQueryNomorKodeJurnal.FieldValues['nomor']; kodejurnal:='KM'+FormUtama.addzero(no,6); ADOQueryUpdateKodeJurnal.Close; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pnomor']:=no+1; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pkode']:='KM'; ADOQueryUpdateKodeJurnal.ExecSQL; ADOQueryTempDebet.Close; ADOQueryTempDebet.Open; ADOQueryTempDebet.First; while not ADOQueryTempDebet.Eof do begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:=ADOQueryTempDebet.FieldValues['kode_akun']; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:=ADOQueryTempDebet.FieldValues['posisi']; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=ADOQueryTempDebet.FieldValues['saldo']; ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:=EditKeterangan.Text; ADOQueryInsertJurnal.ExecSQL; ADOQueryTempDebet.Next; end;
Universitas Kristen Petra
76
Segmen Program 4.10. Procedure Penyimpanan Penerimaan Kas (sambungan) ADOQueryTempKredit.Close; ADOQueryTempKredit.Open; ADOQueryTempKredit.First; while not ADOQueryTempKredit.Eof do begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:=ADOQueryTempKredit['kode_akun']; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:=ADOQueryTempKredit['posisi']; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=ADOQueryTempKredit['saldo']; ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:=EditKeterangan.Text; ADOQueryInsertJurnal.ExecSQL; ADOQueryTempKredit.Next; end; bsSkinMessage1.MessageDlg('Entry kas masuk berhasil',mtInformation,[mbOk],0); FormShow(sender); end;
4.3.7. Penyimpanan Pengeluaran Kas
SegmenProgram 4.11 digunakan untuk menyimpan data kas keluar ke
Tabel jurnal seperti pembayaran beban operasional,beban non operasional, dan
prive oleh pemilik.
Segmen Program 4.11. Procedure Penyimpanan Pengeluaran Kas procedure TFormKasKeluar.ButtonOKClick(Sender: TObject); var kodejurnal : string[8]; no : integer; begin ADOQueryNomorKodeJurnal.Close; ADOQueryNomorKodeJurnal.Parameters.ParamValues['pkode']:='KK'; ADOQueryNomorKodeJurnal.Open; no:=ADOQueryNomorKodeJurnal.FieldValues['nomor']; kodejurnal:='KK'+FormUtama.addzero(no,6); ADOQueryUpdateKodeJurnal.Close; ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pnomor']:=no+1;
Universitas Kristen Petra
77
Segmen Program 4.11. Procedure Penyimpanan Pengeluaran Kas (sambungan) ADOQueryUpdateKodeJurnal.Parameters.ParamValues['pkode']:='KK'; ADOQueryUpdateKodeJurnal.ExecSQL; ADOQueryTempDebet.Close; ADOQueryTempDebet.Open; ADOQueryTempDebet.First; while not ADOQueryTempDebet.Eof do begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:=ADOQueryTempDebet.FieldValues['kode_akun']; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:=ADOQueryTempDebet.FieldValues['posisi']; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=ADOQueryTempDebet.FieldValues['saldo']; ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:=EditKeterangan.Text; ADOQueryInsertJurnal.ExecSQL; ADOQueryTempDebet.Next; end; ADOQueryTempKredit.Close; ADOQueryTempKredit.Open; ADOQueryTempKredit.First; while not ADOQueryTempKredit.Eof do begin ADOQueryInsertJurnal.Close; ADOQueryInsertJurnal.Parameters.ParamValues['pnumber']:= kodejurnal; ADOQueryInsertJurnal.Parameters.ParamValues['ptanggal']:=DateToStr(DateTimePicker1.Date); ADOQueryInsertJurnal.Parameters.ParamValues['pkode']:=ADOQueryTempKredit['kode_akun']; ADOQueryInsertJurnal.Parameters.ParamValues['pposisi']:=ADOQueryTempKredit.FieldValues['posisi']; ADOQueryInsertJurnal.Parameters.ParamValues['psaldo']:=ADOQueryTempKredit['saldo']; ADOQueryInsertJurnal.Parameters.ParamValues['pketerangan']:=EditKeterangan.Text; ADOQueryInsertJurnal.ExecSQL; ADOQueryTempKredit.Next; end; bsSkinMessage1.MessageDlg('Entry kas keluar berhasil',mtInformation,[mbOk],0); FormShow(sender);
end;
Universitas Kristen Petra
78
4.3.8. Proses Tutup Buku
SegmenProgram 4.12 digunakan untuk mengupdate status tutup pada
Tabel periode yang saat itu sedang berlangsung menjadi true dan tanggal akhir
periode pada Tabel periode akan di cek apakah sama dengan tanggal hari ini jika
tidak sama akan disesuaikan dan tanggal awal periode otomatis akan disesuaikan
juga. Ketika periode sudah ditutup maka tidak akan ada data lagi yang
dimasukkan selama periode tersebut. Pada proses penutupan buku juga dilakukan
posting Tabel jurnal ke Tabel buku besar serta sisa persediaan barang yang ada
pada periode itu akan dimasukkan juga ke dalam Tabel buku besar sebagai
persediaan barang dagang periode berikutnya dan pengisian ke Tabel stok awal.
serta akan ditampilkan jurnal penutup pada akhir proses.
Segmen Program 4.12. Procedure Tutup Buku procedure TFormTutupBuku.ButtonOKClick(Sender: TObject); var saldoawal, saldodebet, saldokredit, beban : integer; periode : string[3]; tgl1,tgl2 : TDate; begin ADOQueryDelete.Close; ADOQueryDelete.ExecSQL; //Update periode ADOQueryPeriode.Close; ADOQueryPeriode.Open; periode:=ADOQueryPeriode.FieldValues['kode_periode']; ADOQueryPeriode.Edit; ADOQueryPeriode.FieldValues['akhir_periode']:=date(); ADOQueryPeriode.FieldValues['tutup']:=true; ADOQueryPeriode.Post; tgl1:=ADOQueryPeriode.FieldValues['awal_periode']; tgl2:=ADOQueryPeriode.FieldValues['akhir_periode']; ADOQueryPeriode.Next; ADOQueryPeriode.Edit; ADOQueryPeriode.FieldValues['awal_periode']:=date()+1; ADOQueryPeriode.Post; //Insert stok awal ADOQueryPeriode.Close; ADOQueryPeriode.Open; ADOQueryBarang.Close; ADOQueryBarang.Open; ADOQueryBarang.First; while not ADOQueryBarang.Eof do begin ADOQueryInsertStokAwal.Close; ADOQueryInsertStokAwal.Parameters.ParamValues['pkode']:=ADOQueryBarang.FieldValues['kode_barang']; ADOQueryInsertStokAwal.Parameters.ParamValues['pperiode']:=ADOQueryPeriode.FieldValues['kode_periode'];
Universitas Kristen Petra
79
Segmen Program 4.12. Procedure Tutup Buku (sambungan) ADOQueryInsertStokAwal.Parameters.ParamValues['pstokawal']:=ADOQueryBarang.FieldValues['stok']; ADOQueryInsertStokAwal.ExecSQL; ADOQueryBarang.Next; end; ADOQueryNominal.Close; ADOQueryNominal.Open; //insert sisa stok ADOQueryInsertSisaStock.Close; ADOQueryInsertSisaStock.Parameters.ParamValues['pperiode']:=periode; ADOQueryInsertSisaStock.Parameters.ParamValues['psisa']:=ADOQueryNominal.FieldValues['sisa']; ADOQueryInsertSisaStock.ExecSQL; // insert persediaan barang ke buku besar ADOQueryInsertBukuBesar.Close; ADOQueryInsertBukuBesar.Parameters.ParamValues['pkode']:='1104'; ADOQueryInsertBukuBesar.Parameters.ParamValues['pperiode']:=ADOQueryPeriode.FieldValues['kode_periode']; ADOQueryInsertBukuBesar.Parameters.ParamValues['psaldoawal']:=ADOQueryNominal.FieldValues['sisa']; ADOQueryInsertBukuBesar.ExecSQL; ADOQueryCOA.Close; ADOQueryCOA.Parameters.ParamValues['pkode']:='1%'; ADOQueryCOA.Open; ADOQueryCOA.First; while not ADOQueryCOA.Eof do begin ADOQueryJurnalDebet.Close; ADOQueryJurnalDebet.Parameters.ParamValues['pkode']:=ADOQueryCOA.FieldValues['kode_akun']; ADOQueryJurnalDebet.Parameters.ParamValues['ptgl1']:=DateToStr(tgl1); ADOQueryJurnalDebet.Parameters.ParamValues['ptgl2']:=DateToStr(tgl2); ADOQueryJurnalDebet.Open; if ADOQueryJurnalDebet.RecordCount=0 then saldodebet:=0 else saldodebet:=ADOQueryJurnalDebet.FieldValues['total']; ADOQueryJurnalKredit.Close; ADOQueryJurnalKredit.Parameters.ParamValues['pkode']:=ADOQueryCOA.FieldValues['kode_akun']; ADOQueryJurnalKredit.Parameters.ParamValues['ptgl1']:=DateToStr(tgl1); ADOQueryJurnalKredit.Parameters.ParamValues['ptgl2']:=DateToStr(tgl2); ADOQueryJurnalKredit.Open; if ADOQueryJurnalKredit.RecordCount=0 then saldokredit:=0 else saldokredit:=ADOQueryJurnalKredit.FieldValues['total']; ADOQuerySaldoAwal.Close; ADOQuerySaldoAwal.Parameters.ParamValues['pkode']:=ADOQueryCOA.FieldValues['kode_akun']; ADOQuerySaldoAwal.Parameters.ParamValues['pperiode']:=periode; ADOQuerySaldoAwal.Open; if ADOQuerySaldoAwal.RecordCount=0 then saldoawal:=0 else saldoawal:=ADOQuerySaldoAwal.FieldValues['saldo_awal']; //insert ke buku besar if ADOQueryCOA.FieldValues['kode_akun']<>'1104' then
begin ADOQueryInsertBukuBesar.Close;
Universitas Kristen Petra
80
Segmen Program 4.12. Procedure Tutup Buku (sambungan) ADOQueryInsertBukuBesar.Parameters.ParamValues['pkode']:=ADOQueryCOA.FieldValues['kode_akun']; ADOQueryInsertBukuBesar.Parameters.ParamValues['pperiode']:=ADOQueryPeriode.FieldValues['kode_periode']; if ADOQueryCOA.FieldValues['posisi']='D' then ADOQueryInsertBukuBesar.Parameters.ParamValues['psaldoawal']:=saldoawal+saldodebet-saldokredit else ADOQueryInsertBukuBesar.Parameters.ParamValues['psaldoawal']:=saldoawal+saldokredit-saldodebet; ADOQueryInsertBukuBesar.ExecSQL; end; ADOQueryCOA.Next; end; //jurnal penutup //insert pendapatan ADOQueryTotalPendapatan.Close; ADOQueryTotalPendapatan.Parameters.ParamValues['ptanggal1']:=DateToStr(tgl1); ADOQueryTotalPendapatan.Parameters.ParamValues['ptanggal2']:=DateToStr(tgl2); ADOQueryTotalPendapatan.Open; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='1'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:='Pendapatan'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=ADOQueryTotalPendapatan.FieldValues['total']; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=0; ADOQueryinserttemp.Parameters.ParamValues['pno']:='1'; ADOQueryinserttemp.ExecSQL; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='1'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:=' Ikhtisar laba/rugi'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=0; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=ADOQueryTotalPendapatan.FieldValues['total']; ADOQueryinserttemp.Parameters.ParamValues['pno']:=''; ADOQueryinserttemp.ExecSQL; //insert total beban beban :=0; ADOQueryTotalBeban.Close; ADOQueryTotalBeban.Parameters.ParamValues['ptanggal1']:=DateToStr(tgl1); ADOQueryTotalBeban.Parameters.ParamValues['ptanggal2']:=DateToStr(tgl2); ADOQueryTotalBeban.Open; ADOQueryPemakaian.Close; ADOQueryPemakaian.Parameters.ParamValues['ptanggal1']:=DateToStr(tgl1); ADOQueryPemakaian.Parameters.ParamValues['ptanggal2']:=DateToStr(tgl2);
Universitas Kristen Petra
81
Segmen Program 4.12. Procedure Tutup Buku (sambungan) ADOQueryPemakaian.Open; if ADOQueryPemakaian.RecordCount>0 then beban:=ADOQueryPemakaian.FieldValues['nominal']; while not ADOQueryTotalBeban.Eof do begin beban:=beban+ADOQueryTotalBeban.FieldValues['total']; ADOQueryTotalBeban.Next; end; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='2'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:='Ikhtisar laba/rugi'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=beban; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=0; ADOQueryinserttemp.Parameters.ParamValues['pno']:='2'; ADOQueryinserttemp.ExecSQL; ADOQueryTotalBeban.First; while not ADOQueryTotalBeban.Eof do begin ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='2'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:=' ' + ADOQueryTotalBeban.FieldValues['nama_akun']; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=0; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=ADOQueryTotalBeban.FieldValues['total']; ADOQueryinserttemp.Parameters.ParamValues['pno']:=''; ADOQueryinserttemp.ExecSQL; ADOQueryTotalBeban.Next; end; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='2'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:=' Biaya Pemakaian Barang'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=0; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=ADOQueryPemakaian.FieldValues['nominal']; ADOQueryinserttemp.Parameters.ParamValues['pno']:=''; ADOQueryinserttemp.ExecSQL; //insert modal ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='3'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:='Ikhtisar laba/rugi'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=strtoint(ADOQueryTotalPendapatan.FieldValues['total'])-beban; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=0; ADOQueryinserttemp.Parameters.ParamValues['pno']:='3'; ADOQueryinserttemp.ExecSQL; ADOQueryinserttemp.Close;
Universitas Kristen Petra
82
Segmen Program 4.12. Procedure Tutup Buku (sambungan) ADOQueryinserttemp.Parameters.ParamValues['pkode']:='3'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:=' Modal PT.Sumberanyar Winduprima'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=0; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=strtoint(ADOQueryTotalPendapatan.FieldValues['total'])-beban; ADOQueryinserttemp.Parameters.ParamValues['pno']:=''; ADOQueryinserttemp.ExecSQL; //insert prive ADOQueryTotalPrive.Close; ADOQueryTotalPrive.Parameters.ParamValues['ptanggal1']:=DateToStr(tgl1); ADOQueryTotalPrive.Parameters.ParamValues['ptanggal2']:=DateToStr(tgl2); ADOQueryTotalPrive.Open; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='4'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:='Modal PT.Sumberanyar Winduprima'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=ADOQueryTotalPrive.FieldValues['total']; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=0; ADOQueryinserttemp.Parameters.ParamValues['pno']:='4'; ADOQueryinserttemp.ExecSQL; ADOQueryinserttemp.Close; ADOQueryinserttemp.Parameters.ParamValues['pkode']:='4'; ADOQueryinserttemp.Parameters.ParamValues['pnama']:=' Prive PT.Sumberanyar Winduprima'; ADOQueryinserttemp.Parameters.ParamValues['pdebet']:=0; ADOQueryinserttemp.Parameters.ParamValues['pkredit']:=ADOQueryTotalPrive.FieldValues['total']; ADOQueryinserttemp.Parameters.ParamValues['pno']:=''; ADOQueryinserttemp.ExecSQL; bsSkinMessage1.MessageDlg('Proses Tutup Buku Berhasil',mtInformation,[mbOk],0); FormUtama.FormShow(sender); ORJurnalPenutup.adoquery1.close; ORJurnalPenutup.adoquery1.open; ORJurnalPenutup.Lperiode.Caption:='Periode ' + DateToStr(tgl1) + ' sampai ' + DateToStr(tgl2); ORJurnalPenutup.QuickRep1.Preview; close; end;