Skip to main content

Menambahkan Alat Kontrol pada Jurnal Transaksi Temporer

Pada postingan dengan judul "Membuat Form dan Subform dengan Menggunakan Form Wizard", kita telah membuat form untuk jurnal transaksi temporer yang bentuknya masih jauh dari memadai.  Sekarang buka lagi desain form dari frmTempTransJournal_Parent. Kita akan memperbaiki satu per satu tampilan yang ada dalam form itu sehingga bentuknya seperti telihat pada Gambar 1. Nomor pada gambar itu menunjukkan perbaikan yang akan dilakukan.

1. Menampilkan pengguna yang sedang login

Pengguna yang mempunyai hak akses untuk melihat, membuat, mengedit, atau memproses dapat membuka form jurnal transaksi temporer. Pengaturan hak akses ini dilakukan melalui administrasi pengguna. Adalah hal yang semestinya, sebuah sistem - apapun bentuknya, untuk menampilkan pengguna yang sedang login. Pengguna yang sedang login bisa membuat atau menambah jurnal baru serta mengeditnya. Bagi yang mempunyai hak untuk meproses posting, maka pengguna itu juga berhak untuk memproses. Untuk menampilkan pengguna yang sedang login ini, silakan baca kembali posting yang berjudul Mengaktifkan Fungsi TampilkanLogin dan LogoutDialog.
Bagian-bagian jurnal transaksi temporer yang akan dimodifikasi
2. Membuat tombol perintah navigasi

Tombol perintah navigasi ini sama dengan tombol perintah yang dibuat di posting yang berjudul Mengaplikasikan Modul Global ke Form. Jadi, kita dapat membaca psoting itu jika ingin mengerti lebih dalam tentang tombol-tombol ini.  Khusus untuk Preview report, tombol perintah ini memerlukan kostumisasi lebih jauh, jadi akan dibahas di bagain lain dalam bab ini.

3. Mengarahkan tombol perintah Preview report

Tombol perintah Preview report digunakan untuk membuka form dialog Preview Jurnal yang bernama frmTransJurnalDialog. Atur properti On Click pada tombol perintah Preview ini dengan mengetik “=BukaForm('frmTransJurnalDialog')”.

4. Menyembunyikan text box JurnalId

Text box JurnalId yang sebelumnya di bagian form detail dipindahkan ke form header dan properti Visible dari text box ini diubah dari Yes menjadi No. Selanjutnya, peran text box JurnalId digantikan oleh text box JurnalIdInfo sepeti yang akan dijelaskan pada nomor 5. Text box JurnalId sengaja tidak dihilangkan untuk tujuan pembuatan laporan dan posting.

5. Membuat text box JurnalIdInfo

Text box JurnalIdInfo sengaja dibuat untuk menggantikan text box JurnalId agar penampilan form menjadi lebih enak dilihat. Dengan menggunakan text box ini tampilan nomor jurnal transaksi yang sebelumnya hanya berisi “new” (pada saat menambah jurnal baru) atau berisi nomor (2 misalnya), maka setelah perubahan itu tampilannya menjadi “Jurnal Id # (New)” dan menjadi “Jurnal Id #2”. Caranya adalah dengan mengatur properti text box JurnalIdInfo sebagai berikut:
  1. Control Source = =Replace("Jurnal Id #|","|",Nz([JurnalId]," (New)"))
  2. Enabled = No
  3. Locked = Yes
  4. Font Size = 14
  5. Font Weight = Bold
  6. Special Effect = Chiseled
  7. Width = 2”
6. Mengatur hak akses pengguna ke pemilihan tipe jurnal

Pada sebagian sofware akuntansi, tidak semua pengguna dapat memilih semua pilihan tipe jurnal yang tersedia dalam daftar combo box. Bahkan pada tingkat tertentu, tipe jurnal tertentu hanya bisa dibuat oleh staff tertentu yang memang mempunyai tugas dan wewenang untuk itu. Sebagai contoh, jurnal penggajian yang sifatnya rahasia, hanya bisa dibuat oleh staff akuntansi yang khusus menangani payroll atau langsung di bagian payroll (atau bagian sumber daya manusia). Bila langsung ditangani oleh payroll, bagian akuntansi hanya bertugas membantu membuat semacam template yang sudah baku dan akan selalu digunakan setiap kali transaksi payroll terjadi.

Untuk penyerderhanaan sistem ini, kita akan mengatur supaya hanya jurnal penutup  saja yang bisa dibuat oleh staff tertentu yang berhak, diatur sesuai dengan hak pengguna. Dalam hal ini, seorang pengguna yang bisa memproses (posting) dapat memilih dan menggunakan jurnal penutup bila diperlukan. Pengaturan dilakukan pada saat form dibuka dengan menyertakan Row Source dari tipe jurnal seperti di bawah ini:
Me.TipeJurnal.RowSource = "SELECT TipeId, NamaJurnal FROM tblTipeJurnal WHERE TipeId<>'" & PreferensSistem("Jurnal Penutup") & "';"
Pengaturan lebih jauh untuk form dibahas di bawah.

7. Nomor jurnal sesuai dengan tipenya

Pengaturan nomor jurnal sesuai dengan tipenya digunakan untuk memberikan informasi bahwa bila jurnal transaksi temporer yang mempunyai tipe jurnal tertentu diproses, maka nomor jurnal untuk tipe jurnal yang bersangkutan di jurnal transaksi permanen adalah seperti yang tertulis di situ. Jadi misalnya tipe jurnal GJ, dengan nomor jurnal sesuai dengan tipe GJ tertulis 00101, maka pada saat tipe jurnal GJ itu diproses, nomor jurnal dengan tipe GJ di jurnal transaksi permanen adalah 00101.

Jurnal transaksi dicatat secara urutan waktu dan kejadian. Jadi, misalnya, ada jurnal yang dibuat untuk transaksi bulan Juni 201x sebagai bulan berjalan, lalu pada bulan Mei atau sebelumnya, ada transaksi yang harus diposting pada bulan Juni, maka penomorannya akan loncat dan tidak berurutan. Misalnya transaksi bulan Mei untuk tipe GJ terakhir bernomor 100 (GJ-100), sedangkan bulan Juni sudah ada transaksi yang diposting dengan nomor 101 sampai dengan 120, maka, bila transaksi bulan Mei diposting pada bulan Juni, nomor pada bulan Mei akan loncat dari 100 ke 121, bukan 101 yang merupakan urutan seharusnya. Untuk tujuan inilah, text box nomor jurnal sesuai dengan tipenya itu dibuat.

Untuk dapat memberikan informasi nomor jurnal transaksi permanen yang sesuai dengan tipe jurnal itu, aturlah porperti dari text box NoJurnal:
  1. Control Source = =TampilkanNoJurnalPermanen([TipeJurnal], [TglTransaksi]). Formula ini diambil dari modul mdlTransJurnal.
  2. Enabled=No, supaya pengguna tidak bisa mengedit text box ini.
  3. Locked=Yes, supaya pengguna tidak bisa mengedit text box ini.
9. Memberikan informasi satuan moneter dari jumlah debit dan kredit

Satuan moneter atau mata uang merupakan salah satu prinsip dasar dalam akuntansi. Satuan moneter berguna untuk menyelaraskan transaksi keuangan yang akan dijurnal, baik di posisi debit ataupun kredit. Contoh satuan moneter adalah Rupiah, Dolar, Yen, Euro, dan sebagainya. Untuk memudahkan pengguna menyelaraskan semua transaksi yang akan didebit atau dikredit, maka haru ada semacam pemberitahuan yang menyatakan bahwa sisi debit dan kredit dinyatakan dalam mata uang tertentu. Dalam hal ini, kita akan menggunakan Rupiah.

Untuk memberikan informasi satuan mata uang yang digunakan, buatlah text box dan isikan propertinya sebagai berikut:
  1. Name = SatuanMoneter
  2. Control Source = =IIf(PreferensSistem("Pengucapan")<>"","(Kolom Debit dan Kredit Dalam " & PreferensSistem("Pengucapan") & ")","")
  3. Enabled=No, supaya pengguna tidak bisa mengedit text box ini.
  4. Locked=Yes, supaya pengguna tidak bisa mengedit text box ini.
  5. Width = 5.2”
  6. Font Italic = Yes
  7. Font Size = 10
10. Modifikasi detail transaksi pada subform Jurnal Transaksi Temporer

Subform Jurnal Transaksi Temporer berisi  detail kode rekening, deskripsi, jumlah rupiah yang didebit dan dikredit, referensi dokumen, dan informasi pendukung lainnya yang disimpan dalam form frmTempTransJournal_Child. Bila frmTempTransJournal_Child dibuka dalam Form view, maka tampilannya akan berbentuk datasheet. Untuk memodifikasi, ubahlah tampilan frmTempTransJournal_Child dalam Design view, lalu lakukan beberapa hal berikut ini:

Untuk text box Kuantitas, buatlah properti After Update=[Event Procedure]:
Private Sub Kuantitas_AfterUpdate()
  Me.TotalJumlah = Me.HargaSatuan * Me.Kuantitas
  If Me.Debit > 0 Then
    Me.Debit = Me.TotalJumlah
    Me.Kredit = 0
    Exit Sub
  End If
  If Me.Kredit > 0 Then
    Me.Debit = 0
    Me.Kredit = Me.TotalJumlah
  End If
End Sub

Text box TotalJumlah merupakan hasil perkalian dari text box HargaSatuan dengan Kuantitas. Jadi Bila text box Kuantitas diperbaharui, maka TotalJumlah harus juga diperbaharui yaitu dengan mengalikan text box Kuantitas dengan HargaSatuan. Jika jumlah debit lebih besar dari nol, maka jumlah debit sama dengan total jumlah. Jika jumlah kredit lebih besar dari nol, maka jumlah kredit yang akan sama dengan total jumlah.

Untuk text box HargaSatuan, buatlah properti After Update= [Event Procedure]:
Private Sub HargaSatuan_AfterUpdate()
  Kuantitas_AfterUpdate
End Sub
Penjelasan untuk text box HargaSatuan ini sama dengan text box Kuantitas di atas. Jadi, bila HargSatuan diperbaharui, maka prosedur Kuantitas_After Update akan dijalankan.
Untuk text box TotalJumlah, buatlah properti After Update= [Event Procedure]:
Private Sub TotalJumlah_AfterUpdate()
  Me.HargaSatuan = Me.TotalJumlah / Me.Kuantitas
  Kuantitas_AfterUpdate
End Sub

Bila text box TotalJumlah diperbarui, dengan asumsi Kuantitas tidak berubah, maka HargaSatuan-lah yang akan diubah. Pada umumnya, kuantitas bisa dihitung secara kasat mata, sedangkan harga satuan mengikuti harga rata-rata yang berubah setiap kali ada data yang baru masuk. Setelah HargaSatuan diperbarui, prosedur Kuantitas_ Afterupdate dijalankan.

Sisipkan text box di antara text box TotalJumlah dan Debit dan atur properti text box itu:
  1. Name = EditJumlah.
  2. Control Source = =”Edit”
  3. Is Hyperlink = Yes
  4. On Clcik=[Event Procedure], ketikan kode berikut ini:
    Private Sub EditJumlah_Click ()
      If Me.Debit > 0 Then
        Me.Kredit = Me.Debit
        Me.Debit = 0
      ElseIf Me.Kredit > 0 Then
        Me.Debit = Me.Kredit
        Me.Kredit = 0
      Else
        Me.Debit = Me.TotalJumlah
      End If
      Forms("frmTempTransJournal_Parent").Controls ("Balance").Requery 
    End Sub

Bila link pada text box EditJumlah diklik, maka, bila debit ada nilainya dan nilainya lebih besar dari nol,  nilai itu akan dipindahkan ke kredit dan sebaliknya, bila kredit ada nilainya dan nilainya lebih besar dari nol, nilai itu akan dipindahkan ke debit. Bila tidak ada nilainya, maka jumlah debit akan sama dengan TotalJumlah.
Pada bagian form footer, sisipkan dua text box untuk menghitung total debit dan kredit. Tujuannya sebagai fungsi kontrol bahwa total debit dan kredit harus sama sehingga jurnal siap untuk diposting. Berikut ini adalah properti untuk masing-masing text box:
  1. Name = TotalDebit, Control Source = =nz(Sum([Debit]),0). Untuk label, Caption diisi dengan Total Debit.
  2. Name = TotalKredit, Control Source = =nz(Sum([Kredit]),0). Untuk label, Caption diisi dengan Total Kredit.

11. Modifikasi combo box DibuatOleh

Dalam keadaan normal, combo box DibuatOleh akan berisi daftar pengguna yang tersedia dalam tabel tblAdminPengguna. Untuk form frmTempTransJournal_ Parent ini, kita hanya menampilkan pengguna yang akan membuat jurnal transaksi temporer saja. Berikut ini adalah properti dari combo box DibuatOleh yang harus diubah:
  1. Default Value = =[TempVars]![IdPengguna]
  2. Row Source = SELECT tblAdminPengguna.PgnId, tblAdminPengguna.PgnNama FROM tblAdminPengguna WHERE (((tblAdminPengguna.PgnId)=[Forms]![frmTempTransJournal_Parent]![DibuatOleh]));
[TempVars]![IdPengguna] adalah variabel global yang disimpan saat pengguna login pertama kalinya. Nilai [TempVars]![IdPengguna] adalah identitas pengguna yang login. Bila pengguna yang sedang login menambah atau membuat jurnal transaksi temporer yang baru, maka Access akan mengatur [TempVars]! [IdPengguna] sebagai nilai default. Nilai default ini tidak akan bisa diganti.

Bagian Row Source menampilkan nama pengguna sesuai dengan combo box DibuatOleh yang berisi identitas pengguna yang membuat.

12. Mengganti text box Proses dengan check box

Agar tampilan form Jurnal Transaksi Temporer enak dilihat, gantilah text box Proses dengan check box. Tujuannya untuk menampilkan status jurnal yang sedang dibuka, apakah sedang dalam proses posting, yang ditunjukkan dengan adanya tanda centang, atau masih bisa diedit. Bila ada tanda centang, maka jurnal yang sedang dibuka tidak bisa diedit atau dihapus. Mengenai bagaimana sebuah form tidak bisa diedit atau dihapus akan dijelaskan pada bagian form di bawah.

13. Tombol posting ke buku besar

Tombol ini berfungsi untuk memproses bila sebuah transaksi memang sudah valid dari sisi dokumen, akurasi, dan kelengkapannya. Buatlah tombol perintah seperti pada Gambar 1. Pada properti tombol itu isilah:
  1. Name=Posting
  2. Caption=Posting ke Buku Besar.
Tombol ini bisa ditampilkan atau disembunyikan, tergantung kepada hak akses pengguna yang login, lihat event procedure form On Open di bawah.

Bagian ini akan dijelaskan lebih rinci di postingan yang akan datang, yang membahas tentang posting.

14. Menampilkan total debit dan total kredit dari jurnal

Sebuah jurnal dikatakan seimbang (balance) bila jumlah total debit sama dengan jumlah total kredit. Untuk memudahkan pemeriksaan apakah jurnal sudah seimbang atau belum, kita harus menampilkan jumlah total debit dan kredit dari jurnal berikut selisihnya bila tidak seimbang.
Sisipkan tiga buah text box seperti pada gambar, yaitu text box untuk menghitung total debit, total kredit, dan saldo yang menghitung selisih total debit dengan total kredit. Berikut ini adalah properti dari ketiga text box:
  1. Total Debit:
    1. Name=TotalDebit
    2. Control Source==[frmTempTransJournal_Child].[Form]! [TotalDebit]
    3. Locked=Yes
  2. Total Kredit:
    1. Name=TotalKredit
    2. Control Source==[frmTempTransJournal_Child].[Form]! [TotalKredit]
    3. Locked=Yes
  3. Balance/Saldo:
    1. Name= Balance
    2. Control Source= =[TotalDebit]-[TotalKredit]
    3. Locked=Yes
[frmTempTransJournal_Child].[Form]![TotalDebit] adalah nilai dari text box TotalDebit yang telah dibuat melalui Modifikasi detail transaksi pada subform Jurnal Transaksi Temporer di atas (nomor 10). Hal yang sama juga terjadi pada text box TotalKredit.
15. Menambahkan event procedure pada properti form

Setelah semua isi form diatur, langkah terakhir adalah mengatur dan memperlakukan form itu sendiri, seperti apa yang akan dilakukan bila form dibuka, ditutup, atau berganti record. Perlakuan form diatur melalui properti form On Open= [Event Procedure] berikut ini.
Private Sub Form_Open(Cancel As Integer)
  Me.Caption = "Jurnal Transaksi Temporer " & Nz(IdPerusahaan("Nama"), "")
  If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
  globStatusJurnal = "Temp"
  If Not IjinPengguna("p_JurnalTempPosting") Then
    Me.Posting.Visible = False
    Me.TipeJurnal.RowSource = "SELECT TipeId, NamaJurnal FROM tblTipeJurnal WHERE TipeId<>'" & PreferensSistem("JurnalPenutup") & "';"
  End If
End Sub

Event procedure  di atas berarti: bila form dibuka, maka judul form akan menampilkan nama perusahaan. Setelah itu, bila ada pengguna yang login, perintah logout ditampilkan.

Untuk menandai form yang dibuka bersifat temporer, maka global variabel globStatusJurnal diberi nilai sama dengan “Temp”. Tujuannya untuk memberi identitas pada saat form dialog Preview Report dibuka, sehingga form dialog itu bisa diatur sesuai dengan sifatnya.

Jika pengguna tidak mempunyai akses untuk memposting, maka tombol posting disembunyikan, dan Row Source untuk combo box TipeJurnal diatur untuk tidak menampilkan tipe jurnal Penutup dengan menambahkan properti form On Current= [Event Procedure]:
Private Sub Form_Current()
  If Me.Proses = -1 Then
    Me.AllowDeletions = False
    Me.AllowEdits = False
    Me.frmTempTransJournal_Child.Enabled = False
    Me.frmTempTransJournal_Child.Locked = True
  Else
    Me.AllowDeletions = True
    Me.AllowEdits = True
    Me.frmTempTransJournal_Child.Enabled = True
    Me.frmTempTransJournal_Child.Locked = False
  End If
End Sub

Arti dari event procedure form On Current di atas adalah jika field atau chek box Proses dari record yang sedang aktif bernilai -1, maka record dalam form yang sedang terbuka itu tidak akan bisa dihapus, diedit, dan subform dalam keadaan terkunci. Jika berlaku sebaliknya, yaitu bernilai 0, maka record dalam form yang sedang terbuka itu bisa dihapus, diedit, dan subform dalam keadaan terbuka.

Terakhir, jika form ditutup, maka aktivitas akan kembali ke menu dengan menambahkan properti form On Close= [Event Procedure]:
Private Sub Form_Close()
  Form_frmMenus.Visible = True
End Sub
Arti dari event procedure form On Close di atas adalah jika form frmTempTrans Journal_Parent ditutup, maka form frmMenus ditampilkan.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access