Files
SDL/SDL/kassenbuch/frmFremdbeleg.vb

391 lines
17 KiB
VB.net

Imports System.Drawing.Printing
Public Class frmFremdbeleg
Public Art = 2
Public PERSONAL As New cPersonal
' Public GESCHAEFTSJAHR
Dim KASSE As New cRKSV_Kasse
Public BELEG As EABeleg = Nothing
Public isUmbuchung As Boolean = False
Dim SQL As New SQL
Public Sub New()
InitializeComponent()
End Sub
Public Sub New(isUmbuchung As Boolean)
InitializeComponent()
Me.isUmbuchung = isUmbuchung
End Sub
Public Sub New(PERSONAL As cPersonal, Mandant As String, Niederlassung As String, Benutzer As Integer, BelegNr As Integer, BelegDat As Date)
InitializeComponent()
Me.PERSONAL = PERSONAL
Me.BELEG = New EABeleg("LOAD", Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
Me.Art = BELEG.Belegart
End Sub
Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnEinnahmeBeleg.Click
Art = 1
initArt()
cboKonto._value = ""
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAusgabebeleg.Click
Art = 2
initArt()
cboKonto._value = ""
End Sub
Sub initArt()
If Art = 1 Then
btnEinnahmeBeleg.BackColor = Color.SteelBlue
btnEinnahmeBeleg.ForeColor = Color.White
btnAusgabebeleg.BackColor = Color.Transparent
btnAusgabebeleg.ForeColor = Color.DimGray
' cbxBelegDrucken.Checked = True
' cbxBelegDrucken.Enabled = False
ElseIf Art = 2 Then
btnAusgabebeleg.BackColor = Color.SteelBlue
btnAusgabebeleg.ForeColor = Color.White
btnEinnahmeBeleg.BackColor = Color.Transparent
btnEinnahmeBeleg.ForeColor = Color.DimGray
' cbxBelegDrucken.Enabled = True
' cbxBelegDrucken.Checked = False
End If
cboKonto.fillWithSQL("SELECT Gegenkonto,Buchungstext FROM tblBuchungstext WHERE Belegart= " & Art & " AND visible=1 AND Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' ORDER BY Buchungstext", False, "FMZOLL")
End Sub
Private Sub frmFremdbeleg_Load(sender As Object, e As EventArgs) Handles Me.Load
cProgramFunctions.initBONDrucker(cboPrinter, "EPSON")
If BELEG Is Nothing Or isUmbuchung Then
BELEG = New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
BELEG.Beleg_TYP = "E"
initArt()
Else
' If BELEG.gebucht Then
btn.Text = "Beleg Kopie drucken"
initArt()
init()
btnEinnahmeBeleg.Enabled = False
btnAusgabebeleg.Enabled = False
cboKonto.Enabled = False
txtReferenz.Enabled = False
txtBetrag.Enabled = False
'End If
End If
'cboKonto.changeItem(9800)
cboWaehrung.fillWithSQL("SELECT Währungsschlüssel, Währungscode FROM Währungstabelle ORDER BY Währungscode", False, "FMZOLL")
cboWaehrung._value = 900
datBeleg.Text = Now.ToShortDateString
lblSB.Text = PERSONAL.Name
lblMandant.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung
End Sub
Sub init()
Dim KBEntry As cKassenbuch = Nothing
Dim KBEntryGB As cKassenbuch = Nothing
If cRKSV.getKB(BELEG, PERSONAL, KBEntry, KBEntryGB, KASSE.rksv_firma) Then
txtReferenz.Text = KBEntry.Referenz
txtBetrag._value = KBEntry.Haben
' MsgBox(KBEntry.Soll)
datBelegdatum.Value = KBEntry.BelegDat
cboKonto.changeItem(KBEntryGB.Konto.ToString.Trim)
'Da manche Konten doppelt vorkommen, hier noch die Suche nach dem Text:
For Each i In cboKonto.Items
Dim ii = DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem)
'MsgBox(ii.Text & " - " & KBEntryGB.Buchungstext & " /// " & ii.Value & " - " & KBEntryGB.Konto)
If ii.Value = KBEntryGB.Konto And ii.Text = KBEntryGB.Buchungstext Then
' MsgBox("OK")
cboKonto.SelectedItem = i : Exit Sub
End If
Next
cboKonto.changeItem(KBEntryGB.Konto.ToString.Trim)
Else
MsgBox("Fehler beim Laden der Daten!")
Me.Close()
End If
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
Try
If BELEG.gebucht Or BELEG.gebuchtStorno Then
Dim KBEntry As cKassenbuch = Nothing
Dim KBEntryGB As cKassenbuch = Nothing
If cRKSV.getKB(BELEG, PERSONAL, KBEntry, KBEntryGB, KASSE.rksv_firma) Then
' KASSE.LOAD(PERSONAL.cRKSV_KasseID)
If BELEG.rksv_id > 0 Then KASSE.LOAD(BELEG.rksv_id)
If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString)
End If
'BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString)
Me.Close()
Else
If cRKSV.isforbiddenDate Then
MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.")
Exit Sub
End If
Me.Cursor = Cursors.WaitCursor
lblErr_Buchungstext.Visible = False
lblErr_Betrag.Visible = False
lblErr_Referenz.Visible = False
If Not IsNumeric(cboKonto._value) OrElse cboKonto._value <= 0 Then
lblErr_Buchungstext.Visible = True
Exit Sub
End If
If Not IsNumeric(txtBetrag.Text) OrElse txtBetrag.Text <= 0 Then
lblErr_Betrag.Visible = True
Exit Sub
End If
If txtReferenz.Text = "" Then
lblErr_Referenz.Visible = True
Exit Sub
End If
If Not IsNumeric(txtBetrag._value) Then
lblErr_Betrag.Visible = True
Exit Sub
End If
If CDbl(txtBetrag._value) <= 0 Then
lblErr_Betrag.Visible = True
Exit Sub
End If
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
KASSE.LOAD(6) 'Laden der Kasse anhand der Auswahlbox
Else
KASSE.LOAD(PERSONAL.cRKSV_KasseID)
End If
BELEG.Belegart = Art
BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
BELEG.Ordnungsbegriff = IIf(Art = 1, "* KASSEN-EINGANG *", "* KASSEN-AUSGANG *")
' BELEG.BelegDat = Now.ToShortDateString
' BELEG.BelegDat = Now.ToShortDateString ' datBelegdatum.Value.ToShortDateString
Dim betrag As Double = txtBetrag._value
BELEG.rksv_umsatz = betrag
BELEG.Steuerschlüssel = 3510
Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler
Dim TESTBUCHUNG = False
Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, BELEG.rksv_umsatz))
Dim KBEntry As cKassenbuch = Nothing
Dim KBEntryGB As cKassenbuch = Nothing
If Not insertKB(KASSE.rksv_id, RKSV_Beleg_Id, KBEntry, KBEntryGB, (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv), KASSE.rksv_firma) Then ' Eintrag ins Kassenbuch
MsgBox(BELEG, "Programmfehler bei Eintrag ins Kassenbuch.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
BELEG.gebucht = True
BELEG.SAVE()
If RKSV_Beleg_Id < 0 Then
Me.Cursor = Cursors.Default
BELEG = cRKSV.STORNO(BELEG, "Programmfehler bei der Erstellung der RKSV-Beleg-Id.", KASSE.rksv_firma)
'MsgBox
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
' QR_Image = Nothing
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.Steuerschlüssel & "' ", "FMZOLL")
If IsNumeric(steuersatz) Then summeBRUTTO += (betrag * steuersatz)
If Art = 2 Then
summeBRUTTO *= -1
End If
Dim answer = ""
If KASSE.rksv_aktiv Then
If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
'MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
End If
If KASSE.rksvDE_aktiv Then
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
'MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
If KASSE.rksv_KassaGuid = "KASSE_01" Then
BELEG.rksv_jws = Nothing
BELEG.rksv_qr = Nothing
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
'RKSV-Daten beim Beleg ergänzen:
BELEG.rksv_jws = LastJWS
BELEG.rksv_qr = QR_CodeString
BELEG.rksv_BelegId = RKSV_Beleg_Id
BELEG.rksv_id = KASSE.rksv_id
BELEG.SAVE()
If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString)
Me.Cursor = Cursors.Default
End If
Me.Close()
Catch ex As Exception
Me.Cursor = Cursors.Default
MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!")
Me.Close()
End Try
End Sub
Function insertKB(RKSV_id As Integer, RKSV_Beleg_Id As Integer, ByRef KBEntry As cKassenbuch, ByRef KBEntryGB As cKassenbuch, RKSV_Aktiv As Boolean, Firma As String, Optional Finanzwege As String = "Bar") As Boolean
Dim GJBeleg = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ_FIRMA(BELEG.BelegDat, 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, Firma))
KBEntry = New cKassenbuch(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, cRKSV.getGJ_FIRMA(BELEG.BelegDat, 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 = cboKonto.Text
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
KBEntry.Finanzwege = Finanzwege
If Not KBEntry.INSERT() Then Return False
'################
' EINTRAG: Kassenbuch
'################
KBEntryGB = New cKassenbuch(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, cRKSV.getGJ_FIRMA(BELEG.BelegDat, Firma), 0)
KBEntryGB.JournalNr = GJ.INCREASE_JOURNAL() 'Vergabe der Journalnummer
' KBEntryGB.JournalNr = fktJournalNr(rst1!Mandant, rst1!Niederlassung, rst1!Benutzer, rst1!BelegDat)
KBEntryGB.Konto = cboKonto._value
KBEntryGB.Buchungstext = cboKonto.Text
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
KBEntryGB.Finanzwege = Finanzwege
If Not KBEntryGB.INSERT() Then Return False
Return True
End Function
Private Sub txtBetrag_TextChanged(sender As Object, e As KeyEventArgs) Handles txtBetrag.KeyDown
If e.KeyCode = Keys.Return Then
btn.Focus() 'damit txtBetrag._value passt
btn.PerformClick()
End If
End Sub
Private Sub cboKonto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKonto.SelectedIndexChanged
lblKontoNr.Text = cboKonto._value
End Sub
Private Sub pnlData_Paint(sender As Object, e As PaintEventArgs) Handles pnlData.Paint
End Sub
Private Sub cbxBelegDrucken_CheckedChanged(sender As Object, e As EventArgs) Handles cbxBelegDrucken.CheckedChanged
cboPrinter.Enabled = cbxBelegDrucken.Checked
End Sub
Private Sub frmFremdbeleg_Shown(sender As Object, e As EventArgs) Handles Me.Shown
'If BELEG IsNot Nothing Then init()
End Sub
End Class