Public Class frmKasseAbschliessen Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim FMZOLL_SQL As New FMZOLL_SQL Dim SaldoALT As Double = 0.0 Dim SaldoNEU As Double = 0.0 Dim PERSONAL As cPersonal = Nothing Private Sub frmKasseAbschliessen_Load(sender As Object, e As EventArgs) Handles Me.Load lblTESTSYSTEM.Visible = VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM MyComboBox2.fillWithSQL("SELECT [KassenbuchNr],[Name] FROM [Personal] WHERE ((Status='A' AND KassenbuchNr IS NOT NULL AND BLC='R') OR (BLC='V00')) ORDER BY Name", False, "FMZOLL") numAltesGJ.Value = Now.Year - 1 numNeuesGJ.Value = Now.Year End Sub Private Sub MyComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles MyComboBox2.SelectedIndexChanged PERSONAL = Nothing MyTextBox1.Text = "" MyTextBox2.Text = "" Label4.Text = "" If MyComboBox2._value <> "" Then PERSONAL = FMZOLL_SQL.getPersonalKassenbuch(MyComboBox2._value) Label4.Text = PERSONAL.ID initSALDO() End If End Sub Sub initSALDO() SaldoALT = SQL.getValueTxtBySql("SELECT isnull((Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)),0) AS Saldo " & " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & " And tblKassenbuch.Benutzer=" & PERSONAL.ID & " AND tblKassenbuch.Geschäftsjahr=" & numAltesGJ.Value & " AND tblKassenbuch.Konto=" & PERSONAL.KassenbuchNr & "", "FMZOLL") SaldoNEU = SQL.getValueTxtBySql("SELECT isnull((Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)),0) AS Saldo " & " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & " And tblKassenbuch.Benutzer=" & PERSONAL.ID & " AND tblKassenbuch.Geschäftsjahr=" & numNeuesGJ.Value & " AND tblKassenbuch.Konto=" & PERSONAL.KassenbuchNr & "", "FMZOLL") MyTextBox1.Text = SaldoALT MyTextBox2.Text = SaldoNEU ' Label6.Text = CDbl(If(dt.Rows.Count > 0, cSqlDb.checkNullReturnValue(dt.Rows(0)("Saldo"), 0), 0)).ToString("C") End Sub Private Sub btnKassensaldoUbertragen_Click(sender As Object, e As EventArgs) Handles btnKassensaldoUbertragen.Click Me.Cursor = Cursors.WaitCursor If PERSONAL Is Nothing Then MsgBox("Kasse wählen!") : Exit Sub If cbxAlt.Checked And cbxNeu.Checked And SaldoALT = 0 Then MsgBox("Kein Betrag zu übertragen!") : Exit Sub JAHRESABSCHLUSS(PERSONAL, SaldoALT) initSALDO() Me.Cursor = Cursors.Default End Sub Function JAHRESABSCHLUSS(PERSONAL As cPersonal, betrag As Double) As Boolean Dim KASSE As New cRKSV_Kasse ' Dim betrag As Double = SaldoALT If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then KASSE.LOAD(6) 'Laden der Kasse anhand der Auswahlbox Else KASSE.LOAD(PERSONAL.cRKSV_KasseID) End If If cbxAlt.Checked Then insertBELEGALT(KASSE, betrag) If cbxNeu.Checked Then insertBELEGNEU(KASSE, betrag) Return True End Function Sub insertBELEGALT(KASSE As cRKSV_Kasse, betrag As Double) Dim BELEG_ALT As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID) '!!!!!!!!!!!!!!!! BELEG_ALT.BelegDat = cRKSV.getGJ_EndOfYear(numAltesGJ.Value, KASSE.rksv_firma).ToShortDateString 'CDate("31.01." & NumericUpDown1.Value) If txtxAbwBetragALT._value <> "" AndAlso IsNumeric(txtxAbwBetragALT._value) Then betrag = txtxAbwBetragALT._value BELEG_ALT.Belegart = 2 'AUSGANG BELEG_ALT.Beleg_TYP = "E" BELEG_ALT.rksv_aktiv = KASSE.rksv_aktiv BELEG_ALT.Ordnungsbegriff = "* KASSEN-JAHRESABSCHLUSS *" 'IIf(Art = 1, "* KASSEN-JAHRESABSCHLUSS *", "* KASSEN-JAHRESANFANGS-SALDO *") BELEG_ALT.rksv_umsatz = betrag BELEG_ALT.Steuerschlüssel = 0 Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(BELEG_ALT.rksv_umsatz) Dim KBEntry As cKassenbuch = Nothing Dim KBEntryGB As cKassenbuch = Nothing ' Dim JournalNr = 0 If Not insertKB(BELEG_ALT, 9800, KASSE, KASSE.rksv_id, RKSV_Beleg_Id, KBEntry, KBEntryGB, KASSE.rksv_aktiv) Then ' Eintrag ins Kassenbuch MsgBox(BELEG_ALT, "Programmfehler bei Eintrag ins Kassenbuch.") Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If BELEG_ALT.gebucht = True BELEG_ALT.SAVE() If RKSV_Beleg_Id < 0 Then Me.Cursor = Cursors.Default BELEG_ALT = cRKSV.STORNO(BELEG_ALT, "Programmfehler bei der Erstellung der RKSV-Beleg-Id.", KASSE.rksv_firma) Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If Dim QR_CodeString As String = "" Dim LastJWS As String = "" Dim summeBRUTTO = betrag Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & BELEG_ALT.Steuerschlüssel & "' ", "FMZOLL") If IsNumeric(steuersatz) Then summeBRUTTO += (betrag * steuersatz) If BELEG_ALT.Belegart = 2 Then summeBRUTTO *= -1 Dim answer = "" If KASSE.rksv_aktiv Then If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, Now, BELEG_ALT.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, False, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG_ALT.rksv_umsatz * -1) cRKSV.DELETE(BELEG_ALT, KASSE.rksv_firma) MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If End If KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) 'RKSV-Daten beim Beleg ergänzen: BELEG_ALT.rksv_jws = LastJWS BELEG_ALT.rksv_qr = QR_CodeString BELEG_ALT.rksv_BelegId = RKSV_Beleg_Id BELEG_ALT.rksv_id = KASSE.rksv_id BELEG_ALT.SAVE() End Sub Sub insertBELEGNEU(KASSE As cRKSV_Kasse, betrag As Double) Dim BELEG_NEU As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID) '!!!!!!!!!!!!!!!! BELEG_NEU.BelegDat = cRKSV.getGJ_BeginOfYear(numNeuesGJ.Value, KASSE.rksv_firma).ToShortDateString '' CDate("01.02." & NumericUpDown1.Value) BELEG_NEU.Beleg_TYP = "E" BELEG_NEU.Belegart = 1 'EINGANG BELEG_NEU.rksv_aktiv = KASSE.rksv_aktiv BELEG_NEU.Ordnungsbegriff = "* KASSEN-JAHRESANFANGS-SALDO *" 'IIf(Art = 1, "* KASSEN-JAHRESABSCHLUSS *", "* KASSEN-JAHRESANFANGS-SALDO *") If txtxAbwBetragNEU._value <> "" AndAlso IsNumeric(txtxAbwBetragNEU._value) Then betrag = txtxAbwBetragNEU._value BELEG_NEU.rksv_umsatz = betrag BELEG_NEU.Steuerschlüssel = 0 Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(BELEG_NEU.rksv_umsatz) Dim KBEntry As cKassenbuch = Nothing Dim KBEntryGB As cKassenbuch = Nothing ' Dim JournalNr = 0 If Not insertKB(BELEG_NEU, 9800, KASSE, KASSE.rksv_id, RKSV_Beleg_Id, KBEntry, KBEntryGB, KASSE.rksv_aktiv) Then ' Eintrag ins Kassenbuch MsgBox(BELEG_NEU, "Programmfehler bei Eintrag ins Kassenbuch.") Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If BELEG_NEU.gebucht = True BELEG_NEU.SAVE() If RKSV_Beleg_Id < 0 Then Me.Cursor = Cursors.Default BELEG_NEU = cRKSV.STORNO(BELEG_NEU, "Programmfehler bei der Erstellung der RKSV-Beleg-Id.", KASSE.rksv_firma) Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If Dim QR_CodeString As String = "" Dim LastJWS As String = "" Dim summeBRUTTO = betrag Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & BELEG_NEU.Steuerschlüssel & "' ", "FMZOLL") If IsNumeric(steuersatz) Then summeBRUTTO += (betrag * steuersatz) If BELEG_NEU.Belegart = 2 Then summeBRUTTO *= -1 Dim answer = "" If KASSE.rksv_aktiv Then If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, Now, BELEG_NEU.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, False, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG_NEU.rksv_umsatz * -1) cRKSV.DELETE(BELEG_NEU, KASSE.rksv_firma) MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) Me.Cursor = Cursors.Default : Me.Close() : Exit Sub End If End If KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) 'RKSV-Daten beim Beleg ergänzen: BELEG_NEU.rksv_jws = LastJWS BELEG_NEU.rksv_qr = QR_CodeString BELEG_NEU.rksv_BelegId = RKSV_Beleg_Id BELEG_NEU.rksv_id = KASSE.rksv_id BELEG_NEU.SAVE() End Sub Function insertKB(BELEG As EABeleg, Gegenkonto As Integer, KASSE As cRKSV_Kasse, RKSV_id As Integer, RKSV_Beleg_Id As Integer, ByRef KBEntry As cKassenbuch, ByRef KBEntryGB As cKassenbuch, RKSV_Aktiv As Boolean) As Boolean Dim GJBeleg = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma)) BELEG.BelegNr = GJBeleg.INCREASE_BELEG() 'Vergabe der Belegnummer ' BELEG.BelegDat = Now.ToShortDateString ' Beleg noch nicht gespeichert.... BELEG.DEL_POS_List()' Positionen löschen, da BelegNr Neu vergeben For Each p In BELEG.POS p.BelegNr = BELEG.BelegNr Next BELEG.SAVE() 'BELEG.SAVE_POS_List() '################ ' EINTRAG: Kassenbuch '################ Dim GJ As New cGeschaeftsjahr(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma)) KBEntry = New cKassenbuch(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma), 0) KBEntry.JournalNr = GJ.INCREASE_JOURNAL() 'Vergabe der Journalnummer ' KBEntry.JournalNr = fktJournalNr(rst1!Mandant, rst1!Niederlassung, rst1!Benutzer, rst1!BelegDat) KBEntry.Konto = PERSONAL.KassenbuchNr KBEntry.Buchungstext = BELEG.Ordnungsbegriff KBEntry.Buchungsdatum = BELEG.BelegDat ' Now.ToShortDateString ' KBEntry.BelegDat = datBelegdatum.Value.ToShortDateString KBEntry.BelegDat = BELEG.BelegDat KBEntry.BelegNr = BELEG.BelegNr 'GJ.INCREASE_BELEG KBEntry.Belegart = BELEG.Belegart 'art KBEntry.Eingabeart = 0 KBEntry.Steuer = 0 KBEntry.Steuerbetrag = 0 KBEntry.Referenz = "" 'txtReferenz.Text KBEntry.Währung = 900 'cboWaehrung._value KBEntry.Kurs = SQL.getValueTxtBySql("SELECT [Eurokurs] FROM Währungstabelle WHERE Währungsschlüssel=900", "FMZOLL") '" & cboWaehrung._value, "FMZOLL") If KBEntry.Belegart = 1 Then KBEntry.Soll = BELEG.rksv_umsatz ' txtBetrag.Text ElseIf KBEntry.Belegart = 2 Then KBEntry.Haben = BELEG.rksv_umsatz ' txtBetrag.Text End If KBEntry.Betrag = BELEG.rksv_umsatz ' txtBetrag.Text KBEntry.rksv_id = RKSV_id KBEntry.rksv_BelegId = RKSV_Beleg_Id KBEntry.rksv_aktiv = RKSV_Aktiv KBEntry.Belegverbuchung = True KBEntry.gebucht = True If Not KBEntry.INSERT() Then Return False '################ ' EINTRAG: Kassenbuch '################ KBEntryGB = New cKassenbuch(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, cRKSV.getGJ_FIRMA(BELEG.BelegDat, KASSE.rksv_firma), 0) KBEntryGB.JournalNr = GJ.INCREASE_JOURNAL() 'Vergabe der Journalnummer ' KBEntryGB.JournalNr = fktJournalNr(rst1!Mandant, rst1!Niederlassung, rst1!Benutzer, rst1!BelegDat) KBEntryGB.Konto = Gegenkonto KBEntryGB.Buchungstext = BELEG.Ordnungsbegriff KBEntryGB.Buchungsdatum = BELEG.BelegDat 'Now.ToShortDateString ' KBEntryGB.BelegDat = datBelegdatum.Value.ToShortDateString KBEntryGB.BelegDat = BELEG.BelegDat KBEntryGB.BelegNr = BELEG.BelegNr 'GJ.INCREASE_BELEG KBEntryGB.Belegart = BELEG.Belegart ' Art KBEntryGB.Eingabeart = 0 KBEntryGB.Steuer = 0 KBEntryGB.Steuerbetrag = 0 KBEntryGB.Referenz = "" 'txtReferenz.Text KBEntryGB.Währung = 900 ' cboWaehrung._value KBEntryGB.Kurs = SQL.getValueTxtBySql("SELECT [Eurokurs] FROM Währungstabelle WHERE Währungsschlüssel=900", "FMZOLL") '" & cboWaehrung._value, "FMZOLL") If KBEntryGB.Belegart = 2 Then KBEntryGB.Soll = BELEG.rksv_umsatz ' txtBetrag.Text ElseIf KBEntryGB.Belegart = 1 Then KBEntryGB.Haben = BELEG.rksv_umsatz 'txtBetrag.Text End If KBEntryGB.Betrag = BELEG.rksv_umsatz ' txtBetrag.Text KBEntryGB.rksv_id = RKSV_id KBEntryGB.rksv_BelegId = RKSV_Beleg_Id KBEntryGB.rksv_aktiv = RKSV_Aktiv KBEntryGB.Belegverbuchung = True KBEntryGB.gebucht = True If Not KBEntryGB.INSERT() Then Return False Return True End Function Private Sub cbxAlt_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAlt.CheckedChanged txtxAbwBetragALT.Enabled = cbxAlt.Checked End Sub Private Sub cbxNeu_CheckedChanged(sender As Object, e As EventArgs) Handles cbxNeu.CheckedChanged txtxAbwBetragNEU.Enabled = cbxNeu.Checked End Sub End Class