Skip to main content

Pemrosesan Secara Real Time (Real Time Processing)

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.
Gambar1
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:

  1. Private Sub Posting_Click()  
  2.   Dim NoJurnal As Integer  
  3.   Dim strSqla As String  
  4.   Dim dtTanggal As String  
  5. 'Jika ada tipe jurnal yang sama pada periode sebelumnya belum diposting, maka tampilkan pesan kesalahan.  
  6.   If CekAdaJurnalTipeSama(Me.TglTransaksi, Me.TipeJurnal) <> "" Then  
  7.     MsgBox "Data transaksi di bawah ini belum diposting" & vbCrLf & vbCrLf & CekAdaJurnalTipeSama(Me.TglTransaksi, Me.TipeJurnal) _  
  8.         & vbCrLf & "Silakan posting lebih dahulu"  
  9.     Exit Sub  
  10.   End If  
  11. 'Jika total debit dan kredit pada jurnal tidak sama, maka tampilkan pesan kesalahan    
  12.   If Round(Me.Balance, 2) <> 0 Then  
  13.     MsgBox "Total Debit tidak sama dengan Total Kredit", vbOKOnly  
  14.     Exit Sub  
  15.   End If  
  16. 'Jika tanggal tidak sesuai dengan periode yang berlaku, tampilkan pesan kesalahan.  
  17.   If Not ValidPeriode(Me.TglTransaksi) Then  
  18.     MsgBox "Tanggal yang anda masukkan salah", vbOKOnly  
  19.     Me.TglTransaksi.SetFocus  
  20.     Exit Sub  
  21.   End If  
  22. 'Jika tipe jurnal tidak diisi, maka tampilkan pesan kesalahan  
  23.   If IsNull(Me.TipeJurnal) Or Me.TipeJurnal = "" Then  
  24.     MsgBox "Tipe Jurnal tidak boleh kosong", vbOKOnly  
  25.     Exit Sub  
  26.   End If  
  27. 'Jika ada ayat jurnal yang tidak mempunyai jumlah debit dan kredit, keduanya tidak ada nilainya, maka tampilkan pesan kesalahan  
  28.   If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Debit]=0 and [Kredit]=0") > 0 Then  
  29.     MsgBox "Ada satu atau lebih ayat jurnal di mana kolom debit dan kredit tidak terisi", vbOKOnly  
  30.     Exit Sub  
  31.   End If  
  32. 'Jika ada ayat jurnal yang mempunyai jumlah debit dan kredit, keduanya ada nilainya, maka tampilkan pesan kesalahan  
  33.   If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Debit]>0 and [Kredit]>0") > 0 Then  
  34.     MsgBox "Ada satu atau lebih ayat jurnal di mana kolom debit dan kredit semuanya terisi", vbOKOnly  
  35.     Exit Sub  
  36.   End If  
  37. 'Jika ada ayat jurnal dengan deskripsi yang kosong, maka tampilkan pesan kesalahan  
  38.   If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [Deskripsi] is null") > 0 Then  
  39.     MsgBox "Ada satu atau lebih ayat jurnal di mana Deskripsi tidak terisi", vbOKOnly  
  40.     Exit Sub  
  41.   End If  
  42. 'Jika ada ayat jurnal dengan kode rekening utama kosong, maka tampilkan pesan kesalahan  
  43.   If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId & " and [KodeRek] is null") > 0 Then  
  44.     MsgBox "Ada satu atau lebih ayat jurnal di mana Kode Rekening Utama tidak terisi", vbOKOnly  
  45.     Exit Sub  
  46.   End If  
  47. 'Jika ada jurnal yang tidak mempunyai detail, maka tampilkan pesan kesalahan  
  48.   If DCount("*", Form_frmTempTransJournal_Child.RecordSource, "[JurnalId]=" & Me.JurnalId) = 0 Then  
  49.     MsgBox "Detail pada jurnal ini tidak boleh kosong", vbOKOnly  
  50.     Exit Sub  
  51.   End If  
  52. 'Jika sudah tidak ada kesalahan dan posting akan dijalankan , maka tampilkan pesan berikut ini.  
  53.   If MsgBox("Posting ke buku besar akan dilakukan, hasil postingan tidak akan dapat diedit lagi?", vbYesNo) = vbNo Then Exit Sub  
  54.   Me.Proses = -1  
  55.   Me.Requery  
  56.   NoJurnal = TampilkanNoJurnalPermanen(Me.TipeJurnal, Me.TglTransaksi)  
  57. 'Lakukan proses posting di bawah ini  
  58.   Application.SetOption ("Confirm Action Queries"), False  
  59. 'Posting dengan memindahkan parent dari jurnal temporer ke jurnal permanen  
  60.   strSqla = "INSERT INTO tblPermTransJournal_Parent ( JurnalIdTemp, TipeJurnal, NoJurnal, TglTransaksi, Ref, NoRef, " _  
  61.               & "DibuatOleh, SetujuOleh, Proses ) SELECT JurnalId, TipeJurnal, NoJurnal, " _  
  62.               & "TglTransaksi, Ref, NoRef, DibuatOleh, '" & [TempVars]![IdPengguna] & "' as Setuju, " _  
  63.               & "1 AS expr1 FROM tblTempTransJournal_Parent WHERE JurnalId=" & Me.JurnalId & " and Proses =-1"  
  64.   DoCmd.RunSQL strSqla  
  65. 'Posting dengan memindahkan child dari jurnal temporer ke jurnal permanen berdasarkan no jurnal permanen  
  66.   DoCmd.RunSQL "INSERT INTO tblPermTransJournal_Child ( RefDetail, KodeRek, Deskripsi, Deriv1, Deriv2, Kuantitas, " _  
  67.               & "SU, HargaSatuan, TotalJumlah, Debit, Kredit, JthTempo, JurnalId) " _  
  68.               & "SELECT tblTempTransJournal_Child.RefDetail, tblTempTransJournal_Child.KodeRek, " _  
  69.               & "tblTempTransJournal_Child.Deskripsi, tblTempTransJournal_Child.Deriv1, tblTempTransJournal_Child.Deriv2, " _  
  70.               & "tblTempTransJournal_Child.Kuantitas, tblTempTransJournal_Child.SU, tblTempTransJournal_Child.HargaSatuan, " _  
  71.               & "tblTempTransJournal_Child.TotalJumlah, tblTempTransJournal_Child.Debit, tblTempTransJournal_Child.Kredit, " _  
  72.               & "tblTempTransJournal_Child.JthTempo, tblPermTransJournal_Parent.JurnalId FROM tblPermTransJournal_Parent " _  
  73.               & "INNER JOIN tblTempTransJournal_Child ON tblPermTransJournal_Parent.JurnalIdTemp =" _  
  74.               & "tblTempTransJournal_Child.JurnalId WHERE tblPermTransJournal_Parent.JurnalIdTemp=" & Me.JurnalId _  
  75.               & " ORDER BY tblTempTransJournal_Child.NoUrut;"  
  76. 'Posting untuk pemindahan jurnal sudah selesai, lalu hapus jurnal temporer  
  77.   DoCmd.RunSQL "DELETE tblTempTransJournal_Child.* FROM tblTempTransJournal_Child WHERE JurnalId = " & Me.JurnalId  
  78.   DoCmd.RunSQL "DELETE tblTempTransJournal_Parent.* FROM tblTempTransJournal_Parent WHERE JurnalId = " & Me.JurnalId _  
  79.               & " and Proses =-1"  
  80.   Application.SetOption ("Confirm Action Queries"), True  
  81.   Berikutnya â€˜Loncat ke jurnal berikutnya  
  82. End Sub  

Comments

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Fungsi Untuk Membuka Database di Access VBA

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