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:

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

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access