Pemrosesan secara real time dilakukan sesaat setelah transaksi selesai dijurnal. Dengan real time ini, setiap jurnal yang sudah dibuat oleh pengguna akan diverifikasi, disetujui, dan diproses oleh otoritas yang berwenang. Umumnya, si pembuat akan mencetak jurnal yang dibuatnya. Hasil cetakan itu kemudian dilampiri dengan dokumen pendukung dan diserahkan ke atasan yang berwenang untuk dimintakan persetujuan dan proses. Pada umumnya, transaksi yang berkaitan langsung dengan pembayaran atau pengeluaran kas menggunakan pemrosesan secara real time.
Untuk memproses jurnal transaksi secara real time relatif mudah. Pada bab sebelumnya, kita telah memodifikasi form Jurnal Transaksi Temporer, di mana di situ terdapat tombol Posting ke Buku Besar, seperti terlihat pada Gambar 1, di sebelah kanan bawah.
Tombol ini berfungsi untuk memproses bila sebuah transaksi memang sudah valid dari sisi dokumen, akurasi, dan kelengkapannya. Hanya pengguna yang mempunyai wewenang dan hak untuk memposting sajalah yang bisa melakukannya. Seorang pengguna yang hanya bisa membuat dan mengedit jurnal temporer tidak diperkenankan untuk memposting sebuah jurnal. Untuk itu, tombol posting tidak akan ditampilkan bila pengguna tidak mempunyai hak untuk memposting. Pengaturuan untuk menampilkan atau menyembunyikan tombol posting ke buku besar ini dilakukan pada saat form dibuka (event procedure On Open).
Sebelum posting dilakukan, Access akan memeriksa kelayakan data yang ada di dalamnya. Bila data belum layak untuk diposting, Access akan menampilkan pesan kesalahan. Bila data sudah layak untuk diposting, Access akan memproses data untuk ditambahkan ke Jurnal Transaksi Permanen. Data jurnal yang sudah diposting kemudian dihapus.
Supaya dapat berfungsi, bukalah properti tombol Posting On Click dan tambahkan event procedure berikut ini:
Untuk memproses jurnal transaksi secara real time relatif mudah. Pada bab sebelumnya, kita telah memodifikasi form Jurnal Transaksi Temporer, di mana di situ terdapat tombol Posting ke Buku Besar, seperti terlihat pada Gambar 1, di sebelah kanan bawah.
Gambar1 |
Sebelum posting dilakukan, Access akan memeriksa kelayakan data yang ada di dalamnya. Bila data belum layak untuk diposting, Access akan menampilkan pesan kesalahan. Bila data sudah layak untuk diposting, Access akan memproses data untuk ditambahkan ke Jurnal Transaksi Permanen. Data jurnal yang sudah diposting kemudian dihapus.
Supaya dapat berfungsi, bukalah properti tombol Posting On Click dan tambahkan event procedure berikut ini:
Private Sub Posting_Click() Dim NoJurnal As Integer Dim strSqla As String Dim dtTanggal As String 'Jika ada tipe jurnal yang sama pada periode sebelumnya belum diposting, maka tampilkan pesan kesalahan. If CekAdaJurnalTipeSama(Me.TglTransaksi, Me.TipeJurnal) <> "" Then MsgBox "Data transaksi di bawah ini belum diposting" & vbCrLf & vbCrLf & CekAdaJurnalTipeSama(Me.TglTransaksi, Me.TipeJurnal) _ & vbCrLf & "Silakan posting lebih dahulu" Exit Sub End If 'Jika total debit dan kredit pada jurnal tidak sama, maka tampilkan pesan kesalahan If Round(Me.Balance, 2) <> 0 Then MsgBox "Total Debit tidak sama dengan Total Kredit", vbOKOnly Exit Sub End If 'Jika tanggal tidak sesuai dengan periode yang berlaku, tampilkan pesan kesalahan. If Not ValidPeriode(Me.TglTransaksi) Then MsgBox "Tanggal yang anda masukkan salah", vbOKOnly Me.TglTransaksi.SetFocus Exit Sub End If 'Jika tipe jurnal tidak diisi, maka tampilkan pesan kesalahan If IsNull(Me.TipeJurnal) Or Me.TipeJurnal = "" Then MsgBox "Tipe Jurnal tidak boleh kosong", vbOKOnly Exit Sub End If 'Jika ada ayat jurnal yang tidak mempunyai jumlah debit dan kredit, keduanya tidak ada nilainya, maka tampilkan pesan kesalahan If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Debit]=0 and [Kredit]=0") > 0 Then MsgBox "Ada satu atau lebih ayat jurnal di mana kolom debit dan kredit tidak terisi", vbOKOnly Exit Sub End If 'Jika ada ayat jurnal yang mempunyai jumlah debit dan kredit, keduanya ada nilainya, maka tampilkan pesan kesalahan If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Debit]>0 and [Kredit]>0") > 0 Then MsgBox "Ada satu atau lebih ayat jurnal di mana kolom debit dan kredit semuanya terisi", vbOKOnly Exit Sub End If 'Jika ada ayat jurnal dengan deskripsi yang kosong, maka tampilkan pesan kesalahan If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Deskripsi] is null") > 0 Then MsgBox "Ada satu atau lebih ayat jurnal di mana Deskripsi tidak terisi", vbOKOnly Exit Sub End If 'Jika ada ayat jurnal dengan kode rekening utama kosong, maka tampilkan pesan kesalahan If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [KodeRek] is null") > 0 Then MsgBox "Ada satu atau lebih ayat jurnal di mana Kode Rekening Utama tidak terisi", vbOKOnly Exit Sub End If 'Jika ada jurnal yang tidak mempunyai detail, maka tampilkan pesan kesalahan If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId) = 0 Then MsgBox "Detail pada jurnal ini tidak boleh kosong", vbOKOnly Exit Sub End If 'Jika sudah tidak ada kesalahan dan posting akan dijalankan , maka tampilkan pesan berikut ini. If MsgBox("Posting ke buku besar akan dilakukan, hasil postingan tidak akan dapat diedit lagi?", vbYesNo) = vbNo Then Exit Sub Me.Proses = -1 Me.Requery NoJurnal = TampilkanNoJurnalPermanen(Me.TipeJurnal, Me.TglTransaksi) 'Lakukan proses posting di bawah ini Application.SetOption ("Confirm Action Queries"), False 'Posting dengan memindahkan parent dari jurnal temporer ke jurnal permanen strSqla = "INSERT INTO tblPermTransJournal_Parent ( JurnalIdTemp, TipeJurnal, NoJurnal, TglTransaksi, Ref, NoRef, " _ & "DibuatOleh, SetujuOleh, Proses ) SELECT JurnalId, TipeJurnal, NoJurnal, " _ & "TglTransaksi, Ref, NoRef, DibuatOleh, '" & [TempVars]![IdPengguna] & "' as Setuju, " _ & "1 AS expr1 FROM tblTempTransJournal_Parent WHERE JurnalId=" & Me.JurnalId & " and Proses =-1" DoCmd.RunSQL strSqla 'Posting dengan memindahkan child dari jurnal temporer ke jurnal permanen berdasarkan no jurnal permanen DoCmd.RunSQL "INSERT INTO tblPermTransJournal_Child ( RefDetail, KodeRek, Deskripsi, Deriv1, Deriv2, Kuantitas, " _ & "SU, HargaSatuan, TotalJumlah, Debit, Kredit, JthTempo, JurnalId) " _ & "SELECT tblTempTransJournal_Child.RefDetail, tblTempTransJournal_Child.KodeRek, " _ & "tblTempTransJournal_Child.Deskripsi, tblTempTransJournal_Child.Deriv1, tblTempTransJournal_Child.Deriv2, " _ & "tblTempTransJournal_Child.Kuantitas, tblTempTransJournal_Child.SU, tblTempTransJournal_Child.HargaSatuan, " _ & "tblTempTransJournal_Child.TotalJumlah, tblTempTransJournal_Child.Debit, tblTempTransJournal_Child.Kredit, " _ & "tblTempTransJournal_Child.JthTempo, tblPermTransJournal_Parent.JurnalId FROM tblPermTransJournal_Parent " _ & "INNER JOIN tblTempTransJournal_Child ON tblPermTransJournal_Parent.JurnalIdTemp =" _ & "tblTempTransJournal_Child.JurnalId WHERE tblPermTransJournal_Parent.JurnalIdTemp=" & Me.JurnalId _ & " ORDER BY tblTempTransJournal_Child.NoUrut;" 'Posting untuk pemindahan jurnal sudah selesai, lalu hapus jurnal temporer DoCmd.RunSQL "DELETE tblTempTransJournal_Child.* FROM tblTempTransJournal_Child WHERE JurnalId = " & Me.JurnalId DoCmd.RunSQL "DELETE tblTempTransJournal_Parent.* FROM tblTempTransJournal_Parent WHERE JurnalId = " & Me.JurnalId _ & " and Proses =-1" Application.SetOption ("Confirm Action Queries"), True Berikutnya ‘Loncat ke jurnal berikutnya End Sub
Comments
Post a Comment