391 lines
17 KiB
VB.net
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 |