• Tidak ada hasil yang ditemukan

4. IMPLEMENTASI Implementasi database

N/A
N/A
Protected

Academic year: 2021

Membagikan "4. IMPLEMENTASI Implementasi database"

Copied!
24
0
0

Teks penuh

(1)

60

Pada bab ini akan dijelaskan mengenai implementasi interface dan implementasi program. Sebelum aplikasi dijalankan, terlebih dahulu dilakukan instalasi pada komputer. Software yang dibutuhkan agar aplikasi dapat berjalan adalah Borland Delphi 5.0, ODBC, dan Microsoft Access XP.

Setelah software yang dibutuhkan telah tersedia, perlu dilakukan setting pada ODBC yaitu dengan membuat database alias agar aplikasi dapat mengenali database yang digunakan.

4.1. Implementasi database

Pada tahap implementasi, hal pertama yang dilakukan adalah membuat tabel dalam Microsoft Access. Tabel-tabel yang digunakan adalah sebagai berikut:

- Tabel supplier, terdiri dari 2 tabel yaitu tabel master untuk mencatat data-data supplier, dan tabel detail supplier yaitu untuk mencatat barang yang di- supply oleh supplier yang bersangkutan.

- Tabel customer, yaitu tabel untuk mencatat data-data customer.

- Tabel barang, yaitu tabel untuk mencatat data-data barang.

- Tabel account, yaitu tabel untuk mencatat account perusahaan.

- Tabel login manager, yaitu tabel untuk mencatat username dan password pengguna.

- Tabel order pembelian, yaitu mencatat pemesanan barang yang dilakukan perusahaan ke supplier, terdiri dari 2 tabel yaitu tabel master untuk mencatat data-data pemesanan barang, dan detail untuk mencatat barang-barang yang dipesan.

- Tabel pembelian, yaitu mencatat data-data pembelian barang yang dilakukan perusahaan, terdiri dari 2 tabel yaitu tabel master pembelian untuk mencatat data-data pembelian barang, dan tabel detail pembelian untuk mencatat barang-barang yang dibeli oleh perusahaan.

(2)

- Tabel terima barang, yaitu tabel yang menyimpan bukti nota penerimaan barang, terdiri dari 2 tabel yaitu tabel master untuk mencatat data-data penerimaan barang, dan detail barang untuk mencatat barang-barang yang diterima oleh perusahaan.

- Tabel pembayaran, yaitu tabel yang mencatat nota pembayaran yang dilakukan perusahaan atas pembelian barang yang telah dilakukan sebelumnya.

- Tabel order penjualan, yaitu tabel yang mencatat data-data pesanan barang yang dipesan oleh customer. Tabel order penjualan terdiri dari 2 tabel, yaitu master order penjualan untuk mencatat data-data pemesanan barang, dan detail order penjualan untuk mencatat barang-barang yang dipesan oleh customer.

- Tabel penjualan, yaitu tabel yang mencatat data-data penjualan, terdiri dari 2 tabel, yaitu tabel master penjualan untuk mencatat data-data penjualan, dan detail penjualan untuk mencatat barang-barang yang terjual.

- Tabel surat jalan, yaitu tabel yang mencatat surat bukti barang yang keluar atau dikirim ke customer. Tabel surat jalan terdiri dari 2 tabel, yaitu master surat jalan untuk mencatat data-data surat jalan, dan detail surat jalan digunakan untuk mencatat barang-barang yang keluar dari perusahaan.

- Tabel penerimaan uang, yaitu tabel yang menyimpan bukti pelunasan piutang dari customer.

- Tabel jurnal, yaitu tabel yang mencatat jurnal-jurnal akuntansi yang tidak dapat digolongkan dalam tabel jurnal kas masuk ataupun jurnal kas keluar selama periode akuntansi berjalan.

- Tabel jurnal kas, yaitu tabel yang mencatat jurnal-jurnal akuntansi yang berkaitan dengan transaksi masuk dan keluarnya kas selama periode akuntansi berjalan.

- Tabel gabung, yaitu tabel yang menggabungkan semua jurnal-jurnal akuntansi, yaitu pembelian, pembayaran utang, penjualan, penerimaan piutang, jurnal kas masuk, jurnal kas keluar, dan jurnal umum.

(3)

4.2. Implementasi program dan interface

Sebelum melakukan implementasi program, sebelumnya harus dilakukan koneksi antara Delphi 5.0 dan database Microsoft Access. Koneksi dapat dilakukan dengan cara masuk di start, setting, control panel, lalu pilih ODBC data sources. Pilih tab system dsn, tekan tombol add. Pilih Microsoft Access Driver, Finish. Data source name diisi dengan nama data source, dalam hal ini diisi Cskripsi. Pilih databasenya dengan cara klik tombol select, lalu akan tampil browse untuk memilih database yang digunakan. Maka selesailah koneksi ODBC, dan program siap untuk diimplementasikan.

Setelah implementasi tabel, dan setting koneksi ODBC, maka dilakukan implementasi program. Dalam implementasi program, hal pertama yang harus dilakukan adalah menghubungkan database dengan program, yaitu membuka data module pada Delphi 5.0 dan memasukkan komponen TDatabase, lalu kemudian di-set sesuai dengan koneksinya. Setelah database terhubung, maka untuk setiap tabelnya juga perlu dihubungkan dengan menggunakan komponen TTabel.

Setelah semua dilakukan baru dilakukan coding program untuk masing-masing form.

Form-form yang digunakan dapat dikelompokkan sebagai berikut.

• Master - Supplier - Customer - Barang - Account

- Login manager

• Transaksi

- Order pembelian - Pembelian - Terima barang - Bayar utang - Order penjualan - Penjualan - Surat jalan

(4)

- Terima piutang - Jurnal umum

- Jurnal penerimaan kas - Jurnal pengeluaran kas - Tutup buku

4.2.1. Form Login

Form login digunakan untuk mengijinkan pengguna masuk ke dalam database. Pada form login ini akan di-cek apakah username dan password yang dimasukkan sudah sesuai dengan data yang terdapat dalam tabel, yang sudah dimasukkan sebelumnya. Berikut adalah contoh coding program untuk mengecek validasi username dan password pengguna.

procedure TLogin.Button1Click(Sender: TObject);

var

PasswordDiterima: Boolean;

begin

PasswordDiterima := False;

if Datamodule2.TLogin.Locate('User', Login.Edit1.Text, []) then if Datamodule2.TLogin['Password'] = Login.Edit2.Text then begin

PasswordDiterima := True;

MenuUtama.ShowModal;

Close;

end;

if not PasswordDiterima then ShowMessage('Invalid username/password');

end;

Dari procedure diatas dapat dilihat bahwa jika username dan password yang dimasukkan oleh pengguna tidak sesuai maka sistem tidak akan masuk ke menu utama tetapi keluar pesan bahwa username dan password salah.

4.2.2. Form Menu Utama

Form menu utama adalah form utama untuk menjalankan form-form lainnya. Berikut adalah contoh coding untuk form menu utama.

(5)

procedure TMenuUtama.TBXLink1Click(Sender: TObject);

begin

case (Sender as TComponent).Tag of 0: Account.ShowModal;

1: Supplier.ShowModal;

2: Customer .ShowModal;

3: Barang.ShowModal;

4: OrderBeli.ShowModal;

5: Pembelian.ShowModal;

6: TrmBrg1.ShowModal;

7: Utang1.ShowModal;

8: OrderJual.ShowModal;

9: Jual.ShowModal;

10 : SuratJln.ShowModal;

11 : TerimaPiutang2.ShowModal;

12 : JurnalUmum.ShowModal;

13 : Close;

14 : KasMsk.ShowModal;

15 : KasKlr.ShowModal;

end;

end;

4.2.3. Form Supplier

Form supplier digunakan untuk mencatat data-data supplier. Master supplier menggunakan komponen dbedit yang langsung terhubung dengan database, sedangkan untuk detail barang menggunakan dbgrid yang juga langsung terhubung dengan database. Form supplier ini terhubung dengan tabel supplier dan tabel detail supplier.

4.2.4. Form Customer

Form customer digunakan untuk mencatat data-data customer. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database. Data-data customer ini disimpan dalam tabel Customer.

4.2.5. Form Barang

Form barang digunakan untuk mencatat data-data barang. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database. Data-data barang ini disimpan dalam tabel Barang.

(6)

4.2.6. Form Login Manager

Form login manager digunakan untuk mencatat username dan password pengguna. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database. Data-data login ini disimpan dalam tabel login.

4.2.7. Form Account

Form account digunakan untuk mencatat account yang dimiliki oleh perusahaan. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database. Data-data account ini disimpan dalam tabel account.

4.2.8. Form Order Pembelian

Form order pembelian terdiri dari master dan detail. Untuk master, digunakan dbedit yang dapat langsung terhubung dengan database, sedangkan untuk detailnya menggunakan dbgrid yang juga dapat langsung terhubung dengan database. Untuk master akan disimpan dalam tabel PO, sedangkan untuk detail akan disimpan dalam tabel detail PO.

4.2.9. Form Pembelian

Form pembelian terdiri dari master dan detail yang menggunakan dbedit dan dbgrid yang dapat langsung terhubung dengan database. Pada form pembelian ini, selain masuk ke tabel Pembelian dan Detail Pembelian, total pembelian juga akan langsung masuk ke tabel Gabung yang langsung masuk ke perhitungan akuntansi, yaitu utang bertambah di kredit dengan jumlah total pembelian di kali kurs, dan pembelian bertambah di debit dengan jumlah pembelian sama dengan bertambahnya utang. Berikut contoh coding program untuk mencatat data pembelian yang langsung diperhitungkan dalam akuntansi.

procedure TPembelian2.OkClick(Sender: TObject);

var Total: Real;

begin

DataModule2.Pembelian['Tanggal'] := DateTimePicker1.Date;

DataModule2.Pembelian['TglShip'] := DateTimePicker2.Date;

(7)

DataModule2.Pembelian['TglDelivery'] := DateTimePicker3.Date;

// Update TotalRp

DataModule2.Query1.SQL.Text := 'SELECT SUM(Quantity * UnitPrice) AS Total FROM

TDetPembelian WHERE NoSC = ' + QuotedStr(DBEdit1.Text);

DataModule2.Query1.Open;

if DataModule2.Query1['Total'] <> null then Total := DataModule2.Query1['Total']

else Total := 0;

DataModule2.Query1.Close;

DataModule2.Pembelian['TotalRp'] := Total * StrToFloat(DBEdit3.Text);

// update tabel utang

DataModule2.Utang.Append;

DataModule2.Utang['KodeSupplier'] := DBEdit2.Text;

DataModule2.Utang['NoSC'] := DBEdit1.Text;

DataModule2.Utang['Sisa'] := Total;

DataModule2.Utang.Post;

// post data ke tabel pembelian

if (PaymentTerms.ItemIndex = 0) and (DBEdit7.Text <> '') then

DataModule2.Pembelian['TglPayment1']:= DateTimePicker4.DateTime;

if (PaymentTerms.ItemIndex = 0) and (DBEdit8.Text <> '') then

DataModule2.Pembelian['TglPayment2']:= DateTimePicker5.DateTime;

if (PaymentTerms.ItemIndex = 0) and (DBEdit9.Text <> '') then

DataModule2.Pembelian['TglPayment3']:= DateTimePicker6.DateTime;

if (PaymentTerms.ItemIndex = 0) and (DBEdit10.Text <> '') then

DataModule2.Pembelian['TglPayment4']:= DateTimePicker7.DateTime;

if (PaymentTerms.ItemIndex = 1) and (DBEdit7.Text <> '') then

DataModule2.Pembelian['TglPayment1']:= DateTimePicker4.DateTime;

if (PaymentTerms.ItemIndex = 1) and (DBEdit8.Text <> '') then

DataModule2.Pembelian['TglPayment2']:= DateTimePicker5.DateTime;

DataModule2.Pembelian.Post;

//Pembelian bertambah di debit DataModule2.GL.Append;

DataModule2.GL['Tanggal'] := DateTimePicker1.Date;

DataModule2.GL['AccId'] := DBEdit12.Text;

DataModule2.GL['AccType'] := 'Pembelian';

DataModule2.GL['Keterangan'] := 'No. SC: '+ DBEdit1.Text;

DataModule2.GL['Debit'] := Label15.Caption;

DataModule2.GL.Post;

//Utang bertambah di kredit DataModule2.GL.Append;

DataModule2.GL['Tanggal'] := DateTimePicker1.Date;

DataModule2.GL['AccId'] := DBEdit11.Text;

DataModule2.GL['AccType'] := 'Utang Lancar';

DataModule2.GL['Keterangan'] := 'No. SC: '+ DBEdit1.Text;

DataModule2.GL['Kredit'] := Label15.Caption;

DataModule2.GL.Post;

close;

end;

(8)

4.2.10. Form Terima Barang

Form terima barang terdiri dari master dan detail, dimana master menggunakan dbedit dan detail menggunakan dbgrid yang dapat langsung terhubung dengan database. Untuk data master akan disimpan dalam tabel Terima Barang, sedangkan untuk detail akan disimpan dalam tabel Detail Terima Barang.

Barang yang diterima tidak dapat melebihi jumlah barang yang sudah disepakati dalam kontrak pembelian, dalam hal ini form pembelian. Untuk pengecekan data barang yang dikirim menggunakan coding program seperti di bawah ini.

procedure TTrmBrg2.okClick(Sender: TObject);

begin

DataModule2.TerimaBrg['Tanggal'] := DateTimePicker1.DateTime;

DataModule2.TerimaBrg.Post;

with DataModule2 do begin

// Update nilai Diterima di tabel TDetPembelian

Query1.SQL.Text := 'UPDATE TDetPembelian SET Diterima = Diterima + :Diterima

WHERE NoSC = :NoSC AND KodeBarang = :KodeBarang';

Query1.ParamByName('NoSC').AsString := TerimaBrg['NoSC'];

DetTerimaBrg.First;

while not DetTerimaBrg.Eof do begin

Query1.ParamByName('KodeBarang').AsString := DetTerimaBrg['KodeBarang'];

Query1.ParamByName('Diterima').AsInteger := DetTerimaBrg['JumlahBrg'];

Query1.ExecSQL;

DetTerimaBrg.Next;

end;

// Update nilai SisaPengiriman di tabel TDetPembelian

Query1.SQL.Text := 'UPDATE TDetPembelian SET SisaPengiriman = Quantity – Diterima WHERE NoSC = :NoSC';

Query1.ParamByName('NoSC').AsString := TerimaBrg['NoSC'];

Query1.ExecSQL;

// Cek apakah pengiriman barang sudah lengkap

Query1.SQL.Text := 'SELECT SUM(SisaPengiriman) AS Sisa FROM TDetPembelian

WHERE NoSC = :NoSC';

Query1.ParamByName('NoSC').AsString := TerimaBrg['NoSC'];

Query1.Open;

if Query1['Sisa'] = 0 then begin

Query2.SQL.Text := 'UPDATE TPembelian SET SudahDiterima='+

QuotedStr('T')+'WHERE NoSC = :NoSC';

Query2.ParamByName('NoSC').AsString := TerimaBrg['NoSC'];

Query2.ExecSQL;

end;

Query1.Close;

End; close;

end;

(9)

4.2.11. Form Pembayaran

Form pembayaran digunakan untuk mencatat bukti pembayaran yang dilakukan oleh perusahaan ke supplier. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database.

Data-data pembayaran ini disimpan dalam tabel Pembayaran. Pada form pembayaran ini, selain masuk ke tabel Pembayaran, total pembayaran juga akan langsung masuk ke tabel Gabung yang secara otomatis masuk ke perhitungan akuntansi. Berikut contoh coding program untuk mencatat data pembayaran yang langsung diperhitungkan dalam akuntansi.

procedure TUtang2.okClick(Sender: TObject);

begin

With DataModule2 do begin

Pembayaran['Tanggal'] := DateTimePicker1.DateTime;

Pembayaran.Post;

DataModule2.Query1.SQL.Text := 'Select Kurs from TPembelian where NoSC = ' + QuotedStr(DBEdit7.Text);

DataModule2.Query1.Open;

//Utang berkurang di debit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit6.Text;

GL['AccType'] := 'Utang Lancar';

GL['Keterangan'] := 'NoKuitansi:' + DBEdit1.Text;

GL['Debit'] := Pembayaran['Total$'] * Query1['Kurs'];

GL.Post;

//Kas berkurang di kredit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit8.Text;

GL['AccType'] := 'Kas';

GL['Keterangan'] := 'NoKuitansi:' + DBEdit1.Text;

GL['Kredit'] := Pembayaran['Bayar'] * Pembayaran['Kurs'];

GL.Post;

KasKeluar.Append;

KasKeluar['Tanggal'] := DateTimePicker1.Date;

KasKeluar['CashAcc'] := DBEdit8.Text;

KasKeluar['AccId'] := DBEdit6.Text;

KasKeluar['Keterangan'] := 'NoKuitansi:' + DBEdit1.Text;

KasKeluar['Debit'] := Pembayaran['Bayar'] * Pembayaran['Kurs'];

KasKeluar.Post;

//Potongan pembelian bertambah di kredit If DBEdit5.Text <> '0' then

begin

GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit9.Text;

GL['AccType'] := 'Potongan Pembelian';

(10)

GL['Keterangan'] := 'NoKuitansi: ' + DBEdit1.Text;

GL['Kredit'] := Pembayaran['Disc'] * Pembayaran['Kurs'];

GL.Post;

end;

//Selisih Kurs GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := '00000';

GL['AccType'] := 'Selisih Kurs';

GL['Keterangan'] := 'NoKuitansi: ' + DBEdit1.Text;

GL['Kredit'] := (Query1['Kurs'] - Pembayaran['Kurs'])* Pembayaran['Total$'];

GL.Post;

DataModule2.Query1.Close;

end;

Close;

end;

4.2.12. Form Order Penjualan

Form order penjualan terdiri dari master dan detail. Untuk master, digunakan dbedit yang dapat langsung terhubung dengan database, sedangkan untuk detailnya menggunakan dbgrid yang juga dapat langsung terhubung dengan database. Untuk master akan disimpan dalam tabel SO, sedangkan untuk detail akan disimpan dalam tabel Detail SO.

4.2.13. Form Penjualan

Form penjualan terdiri dari master dan detail yang menggunakan dbedit dan dbgrid yang dapat langsung terhubung dengan database. Pada form penjualan ini, selain masuk ke tabel Penjualan dan Detail Penjualan, total penjualan juga akan langsung masuk ke tabel Gabung yang secara otomatis masuk ke perhitungan akuntansi, yaitu piutang bertambah di debit dengan jumlah total penjualan, dan penjualan bertambah di kredit. Berikut contoh coding program untuk mencatat data penjualan yang langsung diperhitungkan dalam akuntansi.

procedure TJual2.okClick(Sender: TObject);

var Total:Real;

begin

//Hitung Total

DataModule2.Query1.SQL.Text := 'SELECT SUM(Quantity*UnitPrice) as Total from TDetPenjualan Where NoSC='+ QuotedStr(DBEdit1.Text);

DataModule2.Query1.Open;

If DataModule2.Query1['Total'] <> null then Total := DataModule2.Query1['Total']

(11)

else Total := 0;

//Masukkan ke daftar piutang DataModule2.Piutang.Append;

DataModule2.Piutang['NoSC'] := DBEdit1.Text;

DataModule2.Piutang['KodeCustomer'] := DBEdit3.Text;

DataModule2.Piutang['Sisa'] := Total;

DataModule2.Piutang.Post;

DataModule2.Penjualan['Total'] := Total;

DataModule2.Penjualan['TglDipenuhi'] := DateTimePicker1.Date;

DataModule2.Penjualan['TglJatuhTempo'] := DateTimePicker3.Date;

DataModule2.Penjualan['Tanggal'] := DateTimePicker2.Date;

DataModule2.Penjualan.Post;

//Piutang bertambah di debit DataModule2.GL.Append;

DataModule2.GL['Tanggal'] := DateTimePicker1.Date;

DataModule2.GL['AccId'] := DBEdit4.Text;

DataModule2.GL['AccType'] := 'Piutang Lancar';

DataModule2.GL['Keterangan'] := 'No. SC: '+ DBEdit1.Text;

DataModule2.GL['Debit'] := Label11.Caption;

DataModule2.GL.Post;

//Penjualan bertambah di kredit DataModule2.GL.Append;

DataModule2.GL['Tanggal'] := DateTimePicker2.Date;

DataModule2.GL['AccId'] := DBEdit5.Text;

DataModule2.GL['AccType'] := 'Penjualan';

DataModule2.GL['Keterangan'] := 'No. SC: '+ DBEdit1.Text;

DataModule2.GL['Kredit'] := Label11.Caption;

DataModule2.GL.Post;

close;

end;

4.2.14. Form Surat Jalan

Form surat jalan terdiri dari master dan detail, dimana master menggunakan dbedit dan detail menggunakan dbgrid yang dapat langsung terhubung dengan database. Untuk data master akan disimpan dalam tabel Surat Jalan, sedangkan untuk detail akan disimpan dalam tabel Detail Surat Jalan.

Barang yang dikirim tidak dapat melebihi jumlah barang yang sudah disepakati dalam kontrak penjualan, dalam hal ini form penjualan. Untuk pengecekan data barang yang dikirim menggunakan coding program seperti di bawah ini.

procedure TSuratJln2.okClick(Sender: TObject);

begin

//Update nilai Dikirim ditabel detPenjualan With DataModule2 do

begin

DetSuratJln.First;

(12)

While not DetSuratJln.Eof do begin

Query1.SQL.Text := 'UPDATE TDetPenjualan set Dikirim = Dikirim + :Quantity Where

NoSC=' + QuotedStr(SuratJln['NoSC']) + 'AND KodeBarang = ' + QuotedStr(DetSuratJln['KodeBarang']);

Query1.ParamByName('Quantity').AsInteger := DetSuratJln['Quantity'];

Query1.ExecSQL;

DetSuratJln.Next;

end;

// Update SisaPengiriman di TDetPenjualan

Query1.SQL.Text := 'UPDATE TDetPenjualan set SisaPengiriman = Quantity - Dikirim

where NoSC = :SC';

Query1.ParamByName('SC').AsString := SuratJln['NoSC'];

Query1.ExecSQL;

//Update SudahDiterima di TPenjualan

Query1.SQL.Text := 'SELECT SUM(SisaPengiriman) AS Sisa FROM TDetPenjualan

WHERE NoSC = :NoSC';

Query1.ParamByName('NoSC').AsString := SuratJln['NoSC'];

Query1.Open;

if Query1['Sisa'] = 0 then begin

Query2.SQL.Text := 'UPDATE TPenjualan SET SudahDiterima='+

QuotedStr('T')+'WHERE NoSC = :NoSC';

Query2.ParamByName('NoSC').AsString := SuratJln['NoSC'];

Query2.ExecSQL;

end;

Query1.Close;

end;

DataModule2.SuratJln['Tanggal'] := DateTimePicker1.DateTime;

DataModule2.SuratJln.Post;

Close;

end;

end;

4.2.15. Form Terima Piutang

Form terima piutang digunakan untuk mencatat bukti pembayaran yang dilakukan oleh customer. Dalam memasukkan field-field dari form digunakan komponen dbedit yang dapat langsung terhubung dengan database. Data-data penerimaan piutang ini disimpan dalam tabel Terima Uang. Pada form terima piutang ini, selain masuk ke tabel Terima Uang, total pembayaran juga akan langsung masuk ke tabel Gabung yang secara otomatis masuk ke perhitungan akuntansi. Berikut contoh coding program untuk mencatat data penerimaan piutang yang langsung diperhitungkan dalam akuntansi.

(13)

procedure TTerimaPiutang.okClick(Sender: TObject);

begin

With DataModule2 do begin

TerimaUang['Tanggal'] := DateTimePicker1.Date;

TerimaUang.Post;

//cash bertambah di debit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit7.Text;

GL['AccType'] := 'Kas';

GL['Keterangan'] := 'No. Kuitansi: '+ DBEdit1.Text;

GL['Debit'] := TerimaUang['Jumlah'];

GL.Post;

KasMasuk.Append;

KasMasuk['Tanggal'] := DateTimePicker1.Date;

KasMasuk['CashAcc'] := DBEdit7.Text;

KasMasuk['AccId'] := DBEdit3.Text;

KasMasuk['Keterangan'] := 'No. Kuitansi: '+ DBEdit1.Text;

KasMasuk['Kredit'] := TerimaUang['Jumlah'];

KasMasuk.Post;

//potongan penjualan bertambah di debit If DBEdit6.Text <> '0' then

begin

GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit3.Text;

GL['AccType'] := 'Potongan Penjualan';

GL['Keterangan'] := 'No. Kuitansi: '+ DBEdit1.Text;

GL['Debit'] := TerimaUang['Disc'];

GL.Post;

end;

//piutang berkurang di kredit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := DBEdit8.Text;

GL['AccType'] := 'Piutang Lancar';

GL['Keterangan'] := 'No. Kuitansi: '+ DBEdit1.Text;

GL['Kredit'] := TerimaUang['Total'];

GL.Post;

end;close;

end;

4.2.16. Form Jurnal Umum

Form jurnal umum digunakan untuk mencatat transaksi jurnal akuntansi selama periode akuntansi. Form ini menggunakan dbgrid yang dapat langsung terhubung dengan database. Data pada form ini akan disimpan dalam tabel Jurnal.

Selain masuk dalam tabel Jurnal, data-data yang masuk dalam jurnal umum juga

(14)

masuk ke Gabung yang secara otomatis akan masuk dalam perhitungan akuntansi.

Berikut adalah contoh coding untuk memasukkan data ke tabel Gabung.

procedure TJurnalUmum.okClick(Sender: TObject);

begin

if Label7.Caption <> '0' then begin

MessageDlg('Jumlah Debit dan Kredit tidak sama', MtInformation, [MbOk], 0);

end else begin

With DataModule2 do begin

Query2.SQL.Text := 'Select *, AccountType from TJurnal, TAccount Where AccountId=AccId';

Query2.Open;

while not Query2.Eof do begin

BJurnal.Append; GL.Append;

BJurnal['Nomor']:=Query2['Nomor'];

GL['Tanggal'] := Query2['Tanggal'];

BJurnal['Tanggal'] := Query2['Tanggal'];

GL['AccId'] := Query2['AccId'];

BJurnal['AccId'] := Query2['AccId'];

GL['AccType'] := Query2['AccountType'];

GL['Keterangan'] := Query2['Keterangan'];

BJurnal['Keterangan'] := Query2['Keterangan'];

GL['Debit'] := Query2['Debit'];

BJurnal['Debit'] := Query2['Debit'];

GL['Kredit'] := Query2['Kredit'];

BJurnal['Kredit'] := Query2['Kredit'];

BJurnal.Post;

GL.Post;

Query2.Next;

end;

Query2.Close;

Query1.SQL.Text := 'Delete * from TJurnal';

Query1.ExecSQL;

Jurnal.Refresh;

end;

close;

end; end;

4.2.17. Form Jurnal Kas Keluar

Form jurnal kas keluar digunakan untuk mencatat transaksi-transaksi akuntansi yang berkaitan dengan keluarnya kas kecuali pembayaran utang dagang.

Form jurnal kas keluar menggunakan dbgrid yang langsung terhubung dengan database dan akan tersimpan dalam tabel Jurnal Keluar Kas. Selain itu, data juga akan masuk dalam tabel Gabung, agar dapat secara otomatis masuk dalam

(15)

perhitungan akuntansi untuk menghasilkan laporan akuntansi. Berikut contoh coding program untuk form jurnal kas keluar.

procedure TKasKlr.BitBtn1Click(Sender: TObject);

begin

with DataModule2 do begin

if kas.State = dsEdit then Kas.Post;

Query2.SQL.Text := 'Select Sum(Total) as Tot from TBKas';

Query2.Open;

//Kas berkurang di GL debit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := Edit1.Text;

GL['Keterangan'] := 'Kas Keluar';

GL['AccType'] := 'Kas';

GL['Kredit'] := Query2['Tot'];

GL['Debit'] := 0;

GL.Post;

Query2.Close;

Query1.SQL.Text := 'Select * from TBKas';

Query1.Open;

Query1.First;

While not Query1.Eof do begin

//Masuk ke tabel kas keluar KasKeluar.Append;

KasKeluar['Tanggal'] := DateTimePicker1.Date;

KasKeluar['CashAcc'] := Edit1.Text;

KasKeluar['AccId'] := Query1['AccId'];

KasKeluar['Keterangan'] := Query1['Keterangan'];

KasKeluar['Debit'] := Query1['Total'];

KasKeluar.Post;

//masuk ke GL Kredit

Query2.SQL.Text := 'Select AccountType from TAccount where AccountId = '+

QuotedStr(Query1['AccId']);

Query2.Open;

GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := Query1['AccId'];

GL['Keterangan'] := Query1['Keterangan'];

GL['AccType'] := Query2['AccountType'];

GL['Kredit'] := 0;

GL['Debit'] := Query1['Total'];

GL.Post;

Query2.Close; Query1.Next;

end;

Query1.Close;

Query1.SQL.Text := 'Delete from TBKas';

Query1.ExecSQL;

end; close; end;

(16)

4.2.18. Form Jurnal Kas Masuk

Form jurnal kas masuk digunakan untuk mencatat transaksi-transaksi akuntansi yang berkaitan dengan masuknya kas kecuali pelunasan piutang dagang.

Form jurnal kas masuk menggunakan dbgrid yang langsung terhubung dengan database dan akan tersimpan dalam tabel Jurnal Masuk Kas. Selain itu, data juga akan masuk dalam tabel Gabung, agar dapat secara otomatis masuk dalam perhitungan akuntansi untuk menghasilkan laporan akuntansi. Berikut contoh coding program untuk form jurnal kas masuk.

procedure TKasMsk.BitBtn1Click(Sender: TObject);

begin

with DataModule2 do begin

if Kas.State = dsEdit then Kas.Post;

Query2.SQL.Text := 'Select Sum(Total) as Tot from TBKas';

Query2.Open;

//kas bertambah di GL debit GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

GL['AccId'] := Edit1.Text;

GL['Keterangan'] := 'Kas Masuk';

GL['AccType'] := 'Kas';

GL['Debit'] := Query2['Tot'];

GL['Kredit'] := 0;

GL.Post;

Query2.Close;

Query1.SQL.Text := 'Select * from TBKas';

Query1.Open;

Query1.First;

While not Query1.Eof do begin

//Masuk ke tabel kas masuk KasMasuk.Append;

KasMasuk['Tanggal'] := DateTimePicker1.Date;

KasMasuk['CashAcc'] := Edit1.Text;

KasMasuk['AccId'] := Query1['AccId'];

KasMasuk['Keterangan'] := Query1['Keterangan'];

KasMasuk['Kredit'] := Query1['Total'];

KasMasuk.Post;

//masuk ke GL Kredit

Query2.SQL.Text := 'Select AccountType from TAccount where AccountId = '+

QuotedStr(Query1['AccId']);

Query2.Open;

GL.Append;

GL['Tanggal'] := DateTimePicker1.Date;

(17)

GL['AccId'] := Query1['AccId'];

GL['Keterangan'] := Query1['Keterangan'];

GL['AccType'] := Query2['AccountType'];

GL['Debit'] := 0;

GL['Kredit'] := Query1['Total'];

GL.Post;

Query2.Close;

Query1.Next;

end;

Query1.Close;

Query1.SQL.Text := 'Delete from TBKas';

Query1.ExecSQL;

end;

close;

end;

4.2.19. Form Tutup Buku

Proses tutup buku, adalah untuk men- set 0 account-account yang ditutup, sedangkan untuk account-account yang tidak ditutup akan dihitung saldo akhirnya. Sebelumnya dilakukan proses back-up agar sewaktu-waktu perusahaan dapat melihat kembali sejarah akuntansi di masa lampau. Selain itu, proses tutup buku juga akan menghapus semua data pembelian dan penjualan yang tidak lagi mempunyai utang dan piutang atau kewajiban untuk mengirim barang dan menerima barang. Berikut adalah contoh program untuk tutup buku.

procedure TBackup.BitBtn1Click(Sender: TObject);

function IsNull(V: Variant): Variant;

begin

if V = null then Result := 0 else Result := V;

end;

begin

if MessageDlg('Tutup buku akan menyimpan semua data.'+ #13 +'Apakah Anda Yakin?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin

Label3.Caption := 'Backup Data...';

Panel2.Visible := False;

Animate1.Active := True;

ProgressBar1.Position := 0;

// Copy File -- 10%

Repaint;

CopyFile(PChar(Edit1.Text), PChar(Edit2.Text), False);

ProgressBar1.Position := 10;

// Delete TGabung -- 15%

Label3.Caption := 'Hapus Buku Besar...';

Repaint;

(18)

With DataModule2 do begin

Query1.SQL.Text := 'Select accid, acctype, sum(debit-kredit) as total from tgabung group by accid, acctype';

Query1.Open; Query1.First;

Query2.SQL.Text := 'Delete * from TGabung';

Query2.ExecSQL;

ProgressBar1.Position := 15;

// Hitung saldo awal -- 25%

Label3.Caption := 'Hitung Saldo Awal...';

Repaint;

while not Query1.Eof do begin

GL.Append;

GL['Tanggal'] := now; GL['AccId'] := Query1['AccId'];

GL['Keterangan'] := 'Saldo Awal'; GL['AccType'] := Query1['AccType'];

if Query1['Total'] > 0 then GL['Debit'] := Query1['Total']

else GL['Kredit'] := Query1['Total']*-1;

GL.Post;

Query1.Next;

end;

Query1.Close;

ProgressBar1.Position := 25;

// Delete account TGabung -- 35%

Label3.Caption := 'Hapus Jurnal Umum...';

Repaint;

Query1.SQL.Text := 'Delete * from TGabung where acctype = '+ QuotedStr('Penjualan');

Query1.ExecSQL;

Query1.SQL.Text := 'Delete * from TGabung where acctype = '+ QuotedStr('Potongan Penjualan');

Query1.ExecSQL;

ProgressBar1.Position := 35;

// Hapus jurnal -- 45%

Label3.Caption := 'Hapus Jurnal Umum...';

Repaint;

Query1.SQL.Text := 'Delete * from TBJurnal';

Query1.ExecSQL;

Query1.SQL.Text := 'Select distinct a.* from TPembelian a, TUtangSupp b '+

'where a.NoSC = b.NoSC or SudahDiterima = ' + QuotedStr('F');

ProgressBar1.Position := 45;

// Hapus tabel pembelian -- 50%

Label3.Caption := 'Hapus Data Pembelian...';

Repaint;

Query1.Open;

Query2.SQL.Text := 'Delete * from TPembelian';

(19)

Query2.ExecSQL;

While Not Query1.Eof do begin

Pembelian.Append;

Pembelian['NoSC'] := Query1['NoSC'];

Pembelian['KodeSupplier'] := Query1['KodeSupplier'];

Pembelian['Tanggal'] := Query1['Tanggal'];

Pembelian.Post;

Query1.Next;

end;

Query1.Close;

ProgressBar1.Position := 50;

// Hapus detail pembelian -- 55%

Label3.Caption := 'Hapus Detail pembelian...';

Repaint;

Query1.SQL.Text := 'Select distinct a.* from TDetPembelian a, TUtangSupp b, TPembelian c

'+ ' where a.NoSC= b.NoSC and a.NoSC = c.NoSC or SudahDiterima = '+ QuotedStr('F');

Query1.Open;

Query2.SQL.Text := 'Delete * from TDetPembelian';

Query2.ExecSQL;

While Not Query1.Eof do begin

DetPembelian.Append;

DetPembelian['NoSC'] := Query1['NoSC'];

DetPembelian['KodeBarang'] := Query1['KodeBarang'];

DetPembelian['UnitPrice'] := Query1['UnitPrice'];

DetPembelian['Quantity'] := Query1['Quantity'];

DetPembelian.Post;

Query1.Next;

end;

Query1.Close;

ProgressBar1.Position := 55;

// Hapus tabel PO -- 70%

Label3.Caption := 'Hapus Order Pembelian...';

Repaint;

Query1.SQL.Text := 'Delete * from TPO';

Query1.ExecSQL;

Query1.SQL.Text := 'Delete * from TDetPO';

Query1.ExecSQL;

ProgressBar1.Position := 70;

// -- 100%

Label3.Caption := 'Done...';

Repaint;

ProgressBar1.Position := 100;

Panel2.Visible := True;

Animate1.Active := False;

end;

end;

(20)

4.3. Pembuatan Laporan Akuntansi

Pembuatan laporan akuntansi menggunakan Quick Report dari software Borland Delphi 5.0. Untuk menghasilkan laporan-laporan yang dibutuhkan menggunakan beberapa query untuk menampilkan field-field yang dibutuhkan.

Berikut adalah beberapa perintah sql dan coding program yang dibutuhkan dalam pembuatan laporan-laporan yang dibutuhkan.

4.3.1. Laporan Utang

Laporan utang adalah laporan yang menampilkan daftar utang perusahaan ke supplier yang belum terbayar. Berikut adalah perintah sql yang diperlukan untuk menghasilkan laporan utang.

select a.NoSC, c.Nama, (TotalRp/Kurs) as Total, TglPayment1, ((PaymentTerms2/100)*Total) as Payment1, TglPayment2, ((PaymentTerms3/100)*Total) as Payment2, TglPayment3, ((PaymentTerms4/100)*Total) as Payment3, TglPayment4, ((PaymentTerms5/100)*Total) as Payment4, Sisa

from TUtangSupp a, TPembelian b, TSupplier c

where a.NoSC = b.NoSC and c.KodeSupplier = a.KodeSupplier;

4.3.2. Laporan Piutang

Laporan piutang adalah laporan yang menampilkan daftar piutang yang dimiliki oleh perusahaan. Dalam menghasilkan laporan piutang digunakan 1 (satu) query dengan perintah sql sebagai berikut.

select a.*, TglJatuhTempo, nama

from TPiutangCust a, TPenjualan b, TCustomer c

where a.NoSC= b.NoSC and a.KodeCustomer = c.KodeCustomer order by tglJatuhTempo

4.3.3. Laporan Jurnal Umum

Laporan jurnal umum adalah laporan yang menampilkan kegiatan akuntansi perusahaan yang masuk dalam form jurnal umum. Dalam pembuatan laporan jurnal umum, tidak menggunakan query karena data yang diperlukan langsung dapat diambil dari tabel yang bersangkutan yaitu tabel Jurnal.

(21)

4.3.4. Laporan Buku Besar

Laporan buku besar adalah laporan yang menampilkan kegiatan akuntansi dari masing-masing account id yang dimiliki oleh perusahaan. Dalam pembuatan laporan buku besar tidak menggunakan query, karena data yang diperlukan dapat langsung diambil dari tabel. Untuk menyaring data yang akan di- print dalam pembuatan laporan digunakan perintah dalam Borland Delphi sebagai berikut.

procedure TBkBsr.ComboBox1Change(Sender: TObject);

begin

Case ComboBox1.ItemIndex of 0 : begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Kas');

DataModule2.Account.Filtered := True;

end;

1 : begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Piutang Lancar');

DataModule2.Account.Filtered := true;

end;

2 : begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Aktiva Lancar');

DataModule2.Account.Filtered := true;

end;

3 : begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Aktiva Tetap');

DataModule2.Account.Filtered := true;

end;

4 : begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Aktiva Lainnya');

DataModule2.Account.Filtered := true;

end;

10: begin

DataModule2.Account.Filter := 'AccountType = '+

QuotedStr('Potongan Pembelian');

DataModule2.Account.Filtered := true;

end;

11: begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Penjualan');

DataModule2.Account.Filtered := true;

end;

12: begin

DataModule2.Account.Filter := 'AccountType = '+

QuotedStr('Potongan Penjualan');

DataModule2.Account.Filtered := true;

end;

13: begin

DataModule2.Account.Filter := 'AccountType = '+ QuotedStr('Retur Penjualan');

DataModule2.Account.Filtered := true;

end;

end;

end;

(22)

4.3.5. Laporan Rugi Laba

Laporan rugi laba adalah suatu laporan yang menunjukkan pendapatan- pendapatan dan biaya-biaya dari suatu unit usaha untuk suatu periode tertentu.

Dalam menghasilkan laporan rugi laba, digunakan 9 (sembilan) query dengan perintah sql antara lain sebagai berikut.

select sum(debit - kredit)*-1 as TotPenjualan from tgabung

where acctype = 'Penjualan' group by acctype;

select sum(debit - kredit) as TotPotPenjualan from tgabung

where acctype = 'Potongan Penjualan' group by acctype;

Masing-masing query untuk menghasilkan 1 field yang dibutuhkan dalam pembuatan laporan rugi laba.

4.3.6. Laporan Perubahan Modal

Laporan perubahan modal adalah laporan yang memberikan penjelasan tentang perubahan-perubahan dalam posisi keuangan selama tahun buku yang bersangkutan. Dalam pembuatan laporan perubahan modal dibutuhkan 3 (tiga) query dengan perintah sql sebagai berikut.

select sum(Kredit) as SaldoAwa from tgabung

where (acctype = 'Modal') and (Keterangan = 'Saldo Awal');

select acctype, sum(debit - kredit)*-1 as TotModal from tgabung where (acctype = 'Modal')

group by acctype;

select acctype, sum(debit - kredit) as Drawing from tgabung where acctype = 'Drawings' group by acctype;

4.3.7. Laporan Neraca

Neraca adalah laporan yang menunjukkan keadaan keuangan perusahaan pada tanggal tertentu. Dalam pembuatan laporan neraca dibutuhkan 9 (sembilan) query, dimana 1 (satu) query untuk menghasilkan 1 (satu) field yang dibutuhkan.

(23)

Berikut beberapa perintah sql yang dibutuhkan untuk menghasilkan laporan neraca.

select acctype, sum(debit - kredit) as TotKas

from tgabung where acctype = 'Kas' group by acctype;

select acctype, sum(debit - kredit) as TotAktivaLancar

from tgabung where acctype = 'Aktiva Lancar' group by acctype;

select acctype, sum(debit - kredit)*-1 as TotUtLancar

from tgabung where acctype = 'Utang Lancar' group by acctype;

4.3.8. Laporan Penerimaan Kas

Laporan penerimaan kas berisi transaksi-transaksi akuntansi yang berpengaruh langsung terhadap penerimaan kas. Dalam pembuatan laporan penerimaan kas tidak dibutuhkan query, data yang dibutuhkan langsung diambil dari tabel yang bersangkutan yaitu tabel Jurnal Terima Kas. Laporan penerimaan kas dapat ditampilkan dengan penyaringan periode, berikut adalah coding program dalam menghasilkan laporan penerimaan kas.

if RadioButton2.Checked = true then begin

QRLabel4.Caption := 'Periode ' +

FormatDateTime('d-m-yyyy', DateTimePicker1.Date) + ' s/d ' + FormatDateTime('d-m-yyyy', DateTimePicker2.Date);

DataModule2.KasMasuk.Refresh;

DataModule2.KasMasuk.Filter := '(Tanggal >= ' + QuotedStr(DateToStr(DateTimePicker1.Date)) + ')' +

'and (Tanggal <= ' + QuotedStr(DateToStr(DateTimePicker2.Date)) + ')';

DataModule2.KasMasuk.Filtered := true;

end else begin

DataModule2.KasMasuk.Filtered := false;

DataModule2.KasMasuk.Refresh;

QRLabel4.Caption := ' ';

end;

QuickRep1.Preview;

4.3.9. Laporan pengeluaran kas

Laporan pengeluaran kas berisi transaksi-transaksi akuntansi yang berpengaruh langsung terhadap pengeluaran kas. Dalam pembuatan laporan pengeluaran kas tidak dibutuhkan query, data yang dibutuhkan langsung diambil

(24)

dari tabel yang bersangkutan yaitu tabel Jurnal Keluar Kas. Laporan pengeluaran kas dapat ditampilkan dengan penyaringan periode, berikut adalah coding program dalam menghasilkan laporan pengeluaran kas.

if RadioButton2.Checked = true then begin

QRLabel4.Caption := 'Periode ' +

FormatDateTime('d-m-yyyy', DateTimePicker1.Date) + ' s/d ' + FormatDateTime('d-m-yyyy', DateTimePicker2.Date);

DataModule2.KasKeluar.Filter := '(Tanggal >= ' + QuotedStr(DateToStr(DateTimePicker1.Date)) + ')' +

'and (Tanggal <= ' + QuotedStr(DateToStr(DateTimePicker2.Date)) + ')';

DataModule2.KasKeluar.Filtered := true;

end else begin

DataModule2.KasKeluar.Filtered := false;

DataModule2.KasKeluar.Refresh;

QRLabel4.Caption := ' ';

end;

Referensi

Dokumen terkait

Berdasarkan penjelasan di atas, maka hipotesis dari penelitian ini adalah “Biaya emisi saham perusahaan yang melakukan Initial Public Offering di Bursa Efek Indonesia tidak

Dengan pemakaian bahan tambah ini diperoleh adukan dengan faktor air semen lebih rendah pada nilai kekentalan adukan yang sama atau diperoleh adukan dengan kekentalan lebih

Peraturan Menteri Lingkungan Hidup dan Kehutanan Nomor 56 tahun 2015 tentangTata Cara dan Persyaratan Teknis Pengelolaan Limbah Bahan Berbahaya dan Beracun dari

PROVINSI JAWA TENGAH &amp; DI YOGYAKARTA STATUS H-10 LEBARAN 2007 = 49.52% = 2.88% = 47.60% PANTURA STATUS SEPTEMBER 2007 = 0.00% = 66.99% = 0.00% = 33.01% PANTURA STATUS H-10

Setelah melaksanakan kegiatan kuliah kerja nyata (KKN) selama 31 hari yang terhitung mulai tanggal 16 Juli 2014 sampai tanggal 22 Agustus 2014 yang berada di

Menggunakan analisis studi kasus, yang digali adalah entitas tunggal atau fenomena (kasus) dari suatu masa tertentu dan aktivitas (bisa berupa program, kejadian, proses,

Analisis petrografi bertujuan untuk penamaan batu sedimen serta memperoleh data penunjang bagi Provenance agar dapat diketahui bagaimana kandungan persentase batuan baik

Karena itu PB Tunas Bhakti Trenggalek menarik untuk dikaji bila ditinjau dari aspek pembinaan, keadaan organisasi, prestasi dan sarana prasarana yang dimiliki