Skip to main content

Membuat Form Jurnal Penutup

Jurnal penutup adalah jurnal yang digunakan untuk memindahkan semua saldo yang ada pada rekening pendapatan dan biaya ke suatu rekening yang disebut rekening ringkasan pendapatan (income summary account). Jurnal penutup ini hanya dilakukan pada saat akhir periode akuntansi, yaitu untuk menutup periode akuntansi berjalan dan memulai periode akuntansi yang baru atau berikutnya.

Dalam ringkasan pendapatan ini, rekening pendapatan dan biaya dipertemukan, sehingga akan diketahui saldo akhir dari ringkasan pendapatan. Saldo akhir ini, yang juga merupakan laba atau rugi bersih selama satu periode akuntansi, kemudian dipindahkan ke rekening laba ditahan.

Dengan ditutupnya satu periode akuntansi, maka semua transaksi keungan selama satu periode itu dianggap telah dicatat dalam jurnal, termasuk segala jurnal koreksi dan penyesuaian yang mungkin ada. Bagian Akuntansi dan Pencatatan tidak bisa lagi membuat jurnal apa pun dalam periode akuntansi yang telah ditutup.

Dengan menggunakan teknologi, maka jurnal penutup juga dapat dilakukan secara otomatis. Komputer akan menghitung setiap saldo akhir dari rekening pendapatan dan biaya, memindahkannya ke rekening ringkasan pendapatan, lalu memindahkan saldo akhir ringkasan pendapatan itu ke rekening laba ditahan.
Gambar 1
Untuk membuat form jurnal penutup, Kita hanya perlu menambahkan satu buah tombol perintah dalam form jurnal penutup untuk mengeksekusi penutupan dalam satu periode akuntansi. Pada properti tombol itu, isikan Name= ProsesJurnalPenutup dan Caption=Proses Tutup Buku, seperti pada Gambar 1. Simpanlah form jurnal penutup dengan nama frmJurnalPenutup.

Berikut ini adalah kode VBA untuk event procedure dan eksekusi penutupan yang ada di form frmJurnalPenutup:
  1. Option Compare Database  
  2. Private Sub Form_Open(Cancel As Integer)  
  3.     Me.Caption = "Proses Tutup Buku " & Nz(IdPerusahaan("Nama"), "")  
  4.     If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  5. End Sub  
  6. Private Sub ProsesJurnalPenutup_Click()  
  7.   If MsgBox("Satu periode akuntansi akan ditutup. Pada periode ini, " & vbCrLf & _  
  8.   "anda tidak akan bisa membuat jurnal transaksi apa pun." & vbCrLf & _  
  9.   "Anda yakin untuk menutup periode ini?", vbYesNo) = vbNo Then Exit Sub  
  10.   HitungSaldoPenutupan  
  11.   HitungSaldoPenutupan (True)  
  12.   MulaiTahunBerikut  
  13. End Sub  
  14. Private Function MulaiTahunBerikut()  
  15.   Dim dtAwalTahunBerjalan As Date  
  16.   DoCmd.SetWarnings False  
  17.   dtAwalTahunBerjalan = DateSerial(Year(CekPeriodeTanggal(TglAwalThn)) + 1, Month(CekPeriodeTanggal(TglAwalThn)), Day(CekPeriodeTanggal(TglAwalThn)))  
  18.   dtAkhirTahunBerjalan = DateSerial(Year(CekPeriodeTanggal(TglAkhirThn)) + 1, Month(CekPeriodeTanggal(TglAkhirThn)), Day(CekPeriodeTanggal(TglAkhirThn)))  
  19.   dtAwalBulanBerjalan = DateSerial(Year(CekPeriodeTanggal(TglAwalBulan)) + 1, Month(CekPeriodeTanggal(TglAwalBulan)), Day(CekPeriodeTanggal(TglAwalBulan)))  
  20.   dtAkhirBulanBerjalan = DateSerial(Year(CekPeriodeTanggal(TglAkhirBulan)) + 1, Month(CekPeriodeTanggal(TglAkhirBulan)), Day(CekPeriodeTanggal(TglAkhirBulan)))  
  21.   dtAwalBulanBerikut = DateSerial(Year(CekPeriodeTanggal(TglAwalBulanBerikut)) + 1, Month(CekPeriodeTanggal(TglAwalBulanBerikut)), Day(CekPeriodeTanggal(TglAwalBulanBerikut)))  
  22.   dtAkhirBulanBerikut = DateSerial(Year(CekPeriodeTanggal(TglAkhirBulanBerikut)) + 1, Month(CekPeriodeTanggal(TglAkhirBulanBerikut)), Day(CekPeriodeTanggal(TglAkhirBulanBerikut)))  
  23.   dtAwalBulanSebelum = DateSerial(Year(CekPeriodeTanggal(TglAwalBulanSebelum)) + 1, Month(CekPeriodeTanggal(TglAwalBulanSebelum)), Day(CekPeriodeTanggal(TglAwalBulanSebelum)))  
  24.   dtAkhirBulanSebelum = DateSerial(Year(CekPeriodeTanggal(TglAkhirBulanSebelum)) + 1, Month(CekPeriodeTanggal(TglAkhirBulanSebelum)), Day(CekPeriodeTanggal(TglAkhirBulanSebelum)))  
  25.   dtAwalTahunSebelum = DateSerial(Year(CekPeriodeTanggal(TglAwalThnSebelum)) + 1, Month(CekPeriodeTanggal(TglAwalThnSebelum)), Day(CekPeriodeTanggal(TglAwalThnSebelum)))  
  26.   dtAkhirTahunSebelum = DateSerial(Year(CekPeriodeTanggal(TglAkhirThnSebelum)) + 1, Month(CekPeriodeTanggal(TglAkhirThnSebelum)), Day(CekPeriodeTanggal(TglAkhirThnSebelum)))  
  27.   dtAwalBulanThnSebelum = DateSerial(Year(CekPeriodeTanggal(TglAwalBulanThnSebelum)) + 1, Month(CekPeriodeTanggal(TglAwalBulanThnSebelum)), Day(CekPeriodeTanggal(TglAwalBulanThnSebelum)))  
  28.   dtAkhirBulanThnSebelum = DateSerial(Year(CekPeriodeTanggal(TglAkhirBulanThnSebelum)) + 1, Month(CekPeriodeTanggal(TglAkhirBulanThnSebelum)), Day(CekPeriodeTanggal(TglAkhirBulanThnSebelum)))  
  29.   dtAwalTahunBerikut = DateSerial(Year(CekPeriodeTanggal(TglAwalThnBerikut)) + 1, Month(CekPeriodeTanggal(TglAwalThnBerikut)), Day(CekPeriodeTanggal(TglAwalThnBerikut)))  
  30.   dtAkhirTahunBerikut = DateSerial(Year(CekPeriodeTanggal(TglAkhirThnBerikut)) + 1, Month(CekPeriodeTanggal(TglAkhirThnBerikut)), Day(CekPeriodeTanggal(TglAkhirThnBerikut)))  
  31.   dtAwalBulanThnBerikut = DateSerial(Year(CekPeriodeTanggal(TglAwalBulanThnBerikut)) + 1, Month(CekPeriodeTanggal(TglAwalBulanThnBerikut)), Day(CekPeriodeTanggal(TglAwalBulanThnBerikut)))  
  32.   dtAkhirBulanThnBerikut = DateSerial(Year(CekPeriodeTanggal(TglAkhirBulanThnBerikut)) + 1, Month(CekPeriodeTanggal(TglAkhirBulanThnBerikut)), Day(CekPeriodeTanggal(TglAkhirBulanThnBerikut)))  
  33.   DoCmd.RunSQL "INSERT INTO tblPeriode ( TglAwalThn, TglAkhirThn, TglAwalBulanSebelum, TglAkhirBulanSebelum, " & _  
  34.                "TglAwalBulan, TglAkhirBulan, TglAwalBulanBerikut, TglAkhirBulanBerikut, TglAwalThnSebelum, " & _  
  35.                "TglAkhirThnSebelum, TglAwalBulanThnSebelum, TglAkhirBulanThnSebelum, TglAwalThnBerikut, " & _  
  36.                "TglAkhirThnBerikut, TglAwalBulanThnBerikut, TglAkhirBulanThnBerikut, PgnId, Waktu, StatusThnSebelum ) VALUES " & _  
  37.                "(#" & dtAwalTahunBerjalan & "#,#" & dtAkhirTahunBerjalan & "#,#" & dtAwalBulanSebelum & "#,#" & dtAkhirBulanSebelum & "#,#" & _  
  38.                dtAwalBulanBerjalan & "#,#" & dtAkhirBulanBerjalan & "#,#" & dtAwalBulanBerikut & "#,#" & dtAkhirBulanBerikut & "#,#" & _  
  39.                dtAwalTahunSebelum & "#,#" & dtAkhirTahunSebelum & "#,#" & dtAwalBulanThnSebelum & "#,#" & dtAkhirBulanThnSebelum & "#,#" & _  
  40.                dtAwalTahunBerikut & "#,#" & dtAkhirTahunBerikut & "#,#" & dtAwalBulanThnBerikut & "#,#" & dtAkhirBulanThnBerikut & "#, '" & _  
  41.                [TempVars]![IdPengguna] & "', #" & Now & "#," & 2 & ");"  
  42.   DoCmd.RunSQL "UPDATE tblPeriode SET StatusThnBerjalan = 2, StatusThnSebelum = 2 WHERE TglAwalThn = #" & dtAwalTahunSebelum & "# AND TglAkhirThn=#" & dtAkhirTahunSebelum & "#;"  
  43.   DoCmd.SetWarnings True  
  44. End Function  
  45. Private Function HitungSaldoPenutupan(Optional blSaldo As Boolean = False)  
  46.   Dim dbs As Database  
  47.   Dim rst As Recordset  
  48.   Dim intNoRef, intJurnalId As Long  
  49.   Dim strDeriv1, strDeriv2, dtTanggal As String  
  50.   Dim strSQL, strSqla, strSqlb, strSqlc, strJurnalPenutup, strLabaDitahan, strRingkasanPendapatan As String  
  51.   Dim dblSaldo, dblDebit, dblKredit As Double  
  52.   Set dbs = CurrentDb  
  53.   intNoRef = Round(Rnd() * 1000000, 0)  
  54.   strJurnalPenutup = PreferensSistem("JurnalPenutup")  
  55.   strRingkasanPendapatan = PreferensSistem("Ringkasan Pendapatan")  
  56.   strLabaDitahan = PreferensSistem("LabaDitahan")  
  57.   If PreferensSistem("NoJurnalKeAwal") = True Then  
  58.     dtTanggal = " and [TglTransaksi] between #" & CekPeriode("TglAwalThn") & "# and #" & CekPeriode("TglAkhirThn") & "#"  
  59.   Else  
  60.     dtTanggal = ""  
  61.   End If  
  62.   Application.SetOption ("Confirm Action Queries"), False   
  63.   strSQL = "INSERT INTO tblPermTransJournal_Parent (TipeJurnal, NoJurnal, TglTransaksi, Ref, NoRef, " & _  
  64.               "DibuatOleh, SetujuOleh, Proses ) VALUES ('" & strJurnalPenutup & "', " & _  
  65.               DCount("[TipeJurnal]""tblPermTransJournal_Parent""[TipeJurnal]='" & _  
  66.               strJurnalPenutup & "'" & dtTanggal & "") + 1 & ", #" & CekPeriode("TglAkhirThn") & "#,''," & intNoRef & _  
  67.               ", '" & [TempVars]![IdPengguna] & "', '" & [TempVars]![IdPengguna] & "',1);"  
  68.   DoCmd.RunSQL strSQL  
  69.   intJurnalId = DLookup("[JurnalId]""tblPermTransJournal_Parent""[NoRef]=" & intNoRef)  
  70.   strSqla = "SELECT KodeRek, Deriv1, Deriv2, IIf([TransNetos]>0,[TransNetos],0) AS Debit, " _  
  71.            & "IIf([TransNetos]<0,-[TransNetos],0) AS Kredit, Sum([JmlhDebit]-[jmlhKredit]-[PenyesKredit]+[PenyesDebit]) AS TransNetos " _  
  72.            & "FROM qryPermTransJurnal WHERE (Proses=1 AND TglTransaksi Between CekPeriode(""TglAwalThn"") And CekPeriode(""TglAkhirThn"")) " _  
  73.            & "GROUP BY KodeRek, Deriv1, Deriv2, Grup HAVING (((Sum([JmlhDebit]-[jmlhKredit]-[PenyesKredit]+[PenyesDebit]))<>0) " _  
  74.            & "AND ((Grup)='4' Or (Grup)='5'));"  
  75.   Set rst = dbs.OpenRecordset(strSqla, dbOpenSnapshot)  
  76.   If blSaldo = True Then  
  77.     dblSaldo = HitungSaldoAkhir(HanyaKodeRekUtama, strRingkasanPendapatan, CekPeriode("TglAkhirThn")) ' SaldoAkhir(strRingkasanPendapatan, CekPeriode("TglAkhirThn"))  
  78.     If dblSaldo < 0 Then  
  79.       dblDebit = 0  
  80.       dblKredit = -dblSaldo  
  81.     Else  
  82.       dblDebit = dblSaldo  
  83.       dblKredit = 0  
  84.     End If  
  85.     strSqlb = "INSERT INTO tblPermTransJournal_Child (KodeRek, Deskripsi, Debit, Kredit, JurnalId) " _  
  86.             & "VALUES ('" & strRingkasanPendapatan & "', 'Jurnal Penutup Periode: " & strLabaDitahan & "'," _  
  87.             & dblKredit & ", " & dblDebit & ", " & intJurnalId & ");"  
  88.     strSqlc = "INSERT INTO tblPermTransJournal_Child (KodeRek, Deskripsi, Debit, Kredit, JurnalId) " _  
  89.             & "VALUES ('" & strLabaDitahan & "', 'Jurnal Penutup Periode: " & strRingkasanPendapatan & "'," _  
  90.             & dblDebit & ", " & dblKredit & ", " & intJurnalId & ");"  
  91.     If dblDebit > 0 Then  
  92.       DoCmd.RunSQL strSqlc: DoCmd.RunSQL strSqlb  
  93.     Else  
  94.       DoCmd.RunSQL strSqlb  
  95.       DoCmd.RunSQL strSqlc  
  96.     End If  
  97.   Else  
  98.     Do While Not rst.EOF  
  99.       strDeriv1 = "'" & rst!Deriv1 & "' AS Expr3, "  
  100.       strDeriv2 = "'" & rst!Deriv2 & "' AS Expr4, "  
  101.       If IsNull(rst!Deriv1) Then strDeriv1= "Null AS Expr3, "  
  102.       If IsNull(rst!Deriv2) Then strDeriv2= "Null AS Expr4, "  
  103.       strSqlb = "INSERT INTO tblPermTransJournal_Child (KodeRek, Deskripsi, Deriv1, Deriv2, Debit, Kredit, JurnalId) " _  
  104.               & "SELECT '" & rst!KodeRek & "' AS Expr1, 'Jurnal Penutup' AS Expr2, " & strDeriv1 _  
  105.               & strDeriv2 & rst!Kredit & " AS Expr5, " & rst!Debit & " AS Expr6, " _  
  106.               & intJurnalId & " AS Expr7;"  
  107.       strSqlc = "INSERT INTO tblPermTransJournal_Child (KodeRek, Deskripsi,  Debit, Kredit, JurnalId) " _  
  108.               & "VALUES ('" & strRingkasanPendapatan & "', 'Jurnal Penutup Kode Rek Utama: " & rst!KodeRek & "', " _  
  109.               & rst!Debit & ", " & rst!Kredit & ", " & intJurnalId & ");"  
  110.       If rst!Debit > 0 Then  
  111.         DoCmd.RunSQL strSqlc: DoCmd.RunSQL strSqlb  
  112.       Else  
  113.         DoCmd.RunSQL strSqlb  
  114.         DoCmd.RunSQL strSqlc  
  115.       End If  
  116.       rst.MoveNext  
  117.     Loop  
  118.     rst.Close  
  119.     Set rst = Nothing  
  120.   End If  
  121.   DoCmd.RunSQL "UPDATE tblPermTransJournal_Parent SET Proses = 2 " _  
  122.              & "WHERE TglTransaksi Between CekPeriode(""TglAwalThn"") And CekPeriode(""TglAkhirThn"");"  
  123.   Application.SetOption ("Confirm Action Queries"), True   
  124. End Function  

Segera setelah proses jurnal penutup selesai dilakukan, maka periode akuntansi langsung berganti periode berikutnya. Dengan selesainya jurnal penutup, maka satu siklus akuntansi telah berakhir dan dimulai dengan siklus akuntansi yang baru.

Comments

  1. pembahasan detail mengenai jurnal penutup , terima kasih artikelnya

    ReplyDelete

Post a Comment

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