From c705ed10326f10df53acb8b3f65bb660e72aadeb Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 6 Mar 2023 17:09:25 +0100 Subject: [PATCH] POS Payment --- SDL/Classes/cRKSV.vb | 6 +- SDL/kassenbuch/frmBelegNeu.vb | 324 ++++++++++------------------------ 2 files changed, 97 insertions(+), 233 deletions(-) diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index e32f2a97..6c5ad421 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -1061,7 +1061,7 @@ Public Class cRKSV End Function 'cboPrinter.SelectedItem.ToString - Public Shared Function printKundenBeleg(BELEG As EABeleg, KASSE As cRKSV_Kasse, PERSONAL As cPersonal, printername As String, showDok As Boolean, Optional POSPayment As Boolean = False) As Boolean + Public Shared Function printKundenBeleg(BELEG As EABeleg, KASSE As cRKSV_Kasse, PERSONAL As cPersonal, printername As String, showDok As Boolean) As Boolean 'Dim print As New frmPrintLayout @@ -1238,10 +1238,6 @@ Public Class cRKSV rpt.lblGesamtbetrag.Text = CDbl(sum + (sum * s)).ToString("C") If sum < 0 Then rpt.Label2.Text = "Rechnungskorrektur Nr." End Sub - If False Then 'POSPayment Then - 'Dim Pos = New frmPOSTerminal(rpt, sum) - 'Pos.ShowDialog() - End If 'PaperKind = System.Drawing.Printing.PaperKind.Custom ' Me.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 86d4e91e..ea029674 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -31,6 +31,7 @@ Public Class frmBelegNeu Dim allowPrint = False Public printErfolgreich = False Public defaultPrinter = "" + Dim TESTBUCHUNG = True Private EasyZVT_Worker As System.ComponentModel.BackgroundWorker = New System.ComponentModel.BackgroundWorker() Private Funktion As Integer @@ -742,192 +743,13 @@ Public Class frmBelegNeu ' Dim RKSV_Service_Location = "\\192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/" - Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click ' btnPOS.Click + Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click 'btnPOS.Click - Try - printErfolgreich = False - If BELEG.gebucht Or BELEG.gebuchtStorno Then - ' KASSE.LOAD(cboKassen._value) - If BELEG.rksv_id > 0 Then KASSE.LOAD(BELEG.rksv_id) - Select Case BELEG.Belegart - Case "1" : If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then Me.Close() - Case "2" : If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then Me.Close() 'Beleg drucken - End Select - Else - Dim TESTBUCHUNG = False - ' VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM() - 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 + If Not printRoutine() Then + Exit Sub + End If + setRKSV() - Me.Cursor = Cursors.WaitCursor - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - KASSE.LOAD(6) 'Laden der Kasse anhand der Auswahlbox - Else - KASSE.LOAD(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - End If - BELEG.rksv_id = KASSE.rksv_id ' bei Fehler wird sonst die ID nicht richtig übernommen - - If kdkunde.Text.Trim.Length > 50 Then - kdkunde.Text = kdkunde.Text.Trim.Substring(0, 50) - End If - - datatoBeleg() 'Daten werden in "BELEG" geldaen - If Not validValues() Then Me.Cursor = Cursors.Default : Exit Sub - - If Not allowPrint Then - If Not vbYes = MsgBox("Beim Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Exit Sub - End If - - Dim summeNETTO As Double = 0 - For Each p In BELEG.POS : summeNETTO += p.Betrag : Next - - Dim summeBRUTTO = summeNETTO - 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 += (summeNETTO * steuersatz) - ' If EA = "A" Then - ' summeNETTO *= -1 - ' steuersatz *= -1 - ' summeBRUTTO *= -1 - ' End If - - Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler 'Flls Fehler bei Signatur - - Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, If(EA = "E", summeBRUTTO, summeBRUTTO * -1))) 'Bei Ausgabebeleg wird der Umsatz vermindert - If RKSV_Beleg_Id < 0 Then - Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub - End If - ' MsgBox(BELEG.POS.Count) - Dim JournalNr = 0 - If Not cRKSV.insertKB(PERSONAL, BELEG, KASSE.rksv_id, RKSV_Beleg_Id, KASSE.rksv_aktiv, JournalNr, KASSE.rksv_firma) Then - KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) - MsgBox("Programmfehler bei Eintrag ins Kassenbuch.") - Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub - End If - - ' QR_Image = Nothing - Dim QR_CodeString As String = "" - Dim LastJWS As String = "" - - If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV ÖSTERREICH gilt - Dim answer = "" - If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), 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, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) - End If - MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub - End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - End If - - 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, 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, summe * -1) - ' cRKSV.DELETE(BELEG) - ' End If - ' MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - ' ' Me.Cursor = Cursors.Default - ' 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler") - ' ' MsgBox("Programmfehler bei der digitalen Signatur.") - - ' Return False - 'End If - 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - - ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI") - If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt - Dim answer = "" - - If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), 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, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) - cRKSV.DELETE(BELEG, KASSE.rksv_firma) - End If - MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical) - Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub - End If - KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) - - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - If KASSE.rksv_KassaGuid = "KASSE_01" Then 'Testkasse - BELEG.rksv_jws = Nothing - BELEG.rksv_qr = Nothing - End If - 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - End If - - '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.rksv_umsatz = summeBRUTTO - BELEG.rksv_aktiv = KASSE.rksv_aktiv - BELEG.gebucht = True - BELEG.SAVE() - - - Me.DialogResult = Windows.Forms.DialogResult.OK - 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken - - Select Case BELEG.Belegart - Case "1" - If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then - 'WARTEN - printErfolgreich = True - End If - Case "2" - If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then - 'WARTEN - printErfolgreich = True - End If - End Select - - If warnClose Then 'Dann automatisch erstellt, zb Leihgeld --> Spedbuch bereits dort erfasst - If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'Or VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then - If vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then - Dim abbruch As Boolean = False - If cRKSV.SpedBuchExists(BELEG) Then - If vbYes <> MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then - abbruch = True - End If - End If - If Not abbruch Then - cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, SendungID) - If Not cRKSV.SpedBuchExists(BELEG) Then - MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") - Else - If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then - Dim frmNacherfassung As New frmNacherfassungNEU() - frmNacherfassung.srchFiliale = BELEG.FilialenNr - frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr - frmNacherfassung.srchUnterNr = 0 - frmNacherfassung.ShowDialog(Me) - End If - End If - End If - End If - End If - End If - Me.Close() - - Me.Cursor = Cursors.Default - End If - - - - Catch ex As Exception - Me.DialogResult = Windows.Forms.DialogResult.None - Me.Cursor = Cursors.Default - printErfolgreich = False - MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & ex.Message & ex.StackTrace) - warnClose = False - Me.Close() - End Try End Sub @@ -1518,39 +1340,20 @@ Public Class frmBelegNeu Dim ZVTKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\GUB\ZVT", True) - Dim response As String = "" - response &= ZVTKey.GetValue("Ergebnis") & vbNewLine - response &= ZVTKey.GetValue("ErgebnisText") + Dim returnCode = CInt(ZVTKey.GetValue("Ergebnis")) + Dim response As String = ZVTKey.GetValue("ErgebnisText") - 'TextBox_Drucktext.Text = Replace(ZVTKey.GetValue("Drucktext"), vbLf, vbCrLf) - 'TextBox_Drucktext2.Text = Replace(ZVTKey.GetValue("Drucktext2"), vbLf, vbCrLf) - - 'TextBox_BelegNr.Text = ZVTKey.GetValue("BelegNr").ToString - 'TextBox_Betrag.Text = "" - - 'If CheckBoxAutodruck.Checked Then - ' If Len(TextBox_Drucktext.Text) > 1 Then - ' Button_Kundenbeleg_drucken.PerformClick() - ' End If - ' If Len(TextBox_Drucktext2.Text) > 1 Then - ' Button_Haendlerbeleg_drucken.PerformClick() - ' End If - - 'End If - - 'TextBox_Betrag.Focus() - 'Button_Autorisierung.Enabled = True - 'Button_Diagnose.Enabled = True - 'Button_Tagesabschluss.Enabled = True - 'Button_Storno.Enabled = True - 'Button_Gutschrift.Enabled = True ZVTKey.Close() MsgBox(response) - setBreak = False + If returnCode = 0 Then 'Zahlung wurde erfolgreich durchgeführt + setRKSV() + End If End Sub Private Sub POSpayment(sender As Object, e As EventArgs) Handles btnPOS.Click + + If cboKassen.SelectedItem.Text = "" Or Betrag <= 0 Then Exit Sub End If @@ -1562,6 +1365,9 @@ Public Class frmBelegNeu Case 0 MsgBox("Für diese Kasse ist kein aktives POS-Terminal hinterlegt!") Case 1 + If Not printRoutine() Then + Exit Sub + End If SetRegEntries() Case Else @@ -1617,17 +1423,7 @@ Public Class frmBelegNeu End If ZVTKey.SetValue("Ergebnis", 1000, RegistryValueKind.DWord) ' Zur Sicherheit, falls EasyZVT gar nicht installiert ist oder nicht gestartet werden kann ZVTKey.SetValue("ErgebnisText", "EasyZVT konnte nicht gestartet werden", RegistryValueKind.String) - 'ZVTKey.SetValue("DemoDruckername", comboInstalledPrinters.Text, RegistryValueKind.String) - 'If CheckBoxAutodruck.Checked Then - ' ZVTKey.SetValue("DemoAutodruck", 1, RegistryValueKind.DWord) - 'Else - ' ZVTKey.SetValue("DemoAutodruck", 0, RegistryValueKind.DWord) - 'End If - 'If CheckBoxDummy.Checked Then - ' ZVTKey.SetValue("DemoDummydruck", 1, RegistryValueKind.DWord) - 'Else - ' ZVTKey.SetValue("DemoDummydruck", 0, RegistryValueKind.DWord) - 'End If + EasyZVT_Worker.RunWorkerAsync() @@ -1644,14 +1440,16 @@ Public Class frmBelegNeu Private Sub mnuItem_Clicked(sender As Object, e As EventArgs) ContextMenuStrip1.Hide() 'Sometimes the menu items can remain open. May not be necessary for you. Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) + If Not printRoutine() Then + Exit Sub + End If If item IsNot Nothing Then SetRegEntries(item.Name) End If End Sub - Private Sub printRoutine() - + Private Function printRoutine() Try printErfolgreich = False @@ -1663,11 +1461,11 @@ Public Class frmBelegNeu Case "2" : If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then Me.Close() 'Beleg drucken End Select Else - Dim TESTBUCHUNG = False + TESTBUCHUNG = False ' VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM() 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 + Return False End If Me.Cursor = Cursors.WaitCursor @@ -1684,11 +1482,33 @@ Public Class frmBelegNeu End If datatoBeleg() 'Daten werden in "BELEG" geldaen - If Not validValues() Then Me.Cursor = Cursors.Default : Exit Sub + If Not validValues() Then Me.Cursor = Cursors.Default : Return False If Not allowPrint Then - If Not vbYes = MsgBox("Beim Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Exit Sub + If Not vbYes = MsgBox("Beim Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Return False End If + End If + Return True + + Me.Cursor = Cursors.Default + + Catch ex As Exception + Me.DialogResult = Windows.Forms.DialogResult.None + Me.Cursor = Cursors.Default + printErfolgreich = False + MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & ex.Message & ex.StackTrace) + warnClose = False + Me.Close() + End Try + + End Function + + Private Sub setRKSV() + + Try + If Not BELEG.gebucht And Not BELEG.gebuchtStorno Then + + Me.Cursor = Cursors.WaitCursor Dim summeNETTO As Double = 0 For Each p In BELEG.POS : summeNETTO += p.Betrag : Next @@ -1781,8 +1601,57 @@ Public Class frmBelegNeu Me.DialogResult = Windows.Forms.DialogResult.OK + 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken + + Select Case BELEG.Belegart + Case "1" + If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then + 'WARTEN + printErfolgreich = True + End If + Case "2" + If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then + 'WARTEN + printErfolgreich = True + End If + End Select + + If warnClose Then 'Dann automatisch erstellt, zb Leihgeld --> Spedbuch bereits dort erfasst + If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'Or VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then + If vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then + Dim abbruch As Boolean = False + If cRKSV.SpedBuchExists(BELEG) Then + If vbYes <> MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then + abbruch = True + End If + End If + If Not abbruch Then + cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, SendungID) + If Not cRKSV.SpedBuchExists(BELEG) Then + MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!") + Else + If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then + Dim frmNacherfassung As New frmNacherfassungNEU() + frmNacherfassung.srchFiliale = BELEG.FilialenNr + frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr + frmNacherfassung.srchUnterNr = 0 + frmNacherfassung.ShowDialog(Me) + End If + End If + End If + End If + End If + End If + Me.Close() + + Me.Cursor = Cursors.Default + + End If + + + Catch ex As Exception Me.DialogResult = Windows.Forms.DialogResult.None Me.Cursor = Cursors.Default @@ -1792,7 +1661,6 @@ Public Class frmBelegNeu Me.Close() End Try - End Sub