Files
SDL/SDL/Administration/frmKasseAbschliessen.vb
2025-01-02 15:52:10 +01:00

297 lines
14 KiB
VB.net

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