From fb60e8d342e61ca8b3fbf80f6cf0a79d8bfcda4f Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 27 Mar 2026 13:01:23 +0100 Subject: [PATCH] Barverkauf (fiskaltrust) --- SDL/Classes/cFiskaltrustClient.vb | 74 ++++++++++++++++++++------ SDL/kassenbuch/frmBelegNeu.Designer.vb | 18 +++++++ SDL/kassenbuch/frmBelegNeu.vb | 26 ++++++++- 3 files changed, 100 insertions(+), 18 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient.vb b/SDL/Classes/cFiskaltrustClient.vb index 1c0245bf..a98013ac 100644 --- a/SDL/Classes/cFiskaltrustClient.vb +++ b/SDL/Classes/cFiskaltrustClient.vb @@ -26,7 +26,17 @@ Public Class cFiskaltrustClient Public Async Function SignReceiptAsync(amount As Double, vat As Double, POS As List(Of EABelegPositionen)) As Task(Of String) Dim payload = BuildPayload(amount, vat, POS) - Dim endpoint = GetEndpoint() + Dim endpoint = GetEndpoint("payment") + + Return Await SendAsync(endpoint, payload) + + End Function + + + Public Async Function Echo() As Task(Of String) + + Dim payload = "TEST" + Dim endpoint = GetEndpoint("test") Return Await SendAsync(endpoint, payload) @@ -44,7 +54,7 @@ Public Class cFiskaltrustClient .ftReceiptCase = 4919338172267102210 ' Storno } - Return Await SendAsync(GetEndpoint(), payload) + Return Await SendAsync(GetEndpoint("payment"), payload) End Function @@ -69,7 +79,12 @@ Public Class cFiskaltrustClient request.Headers.Add("cashboxid", _cashboxId) request.Headers.Add("accesstoken", _accessToken) - request.Content = New StringContent(json, Encoding.UTF8, "application/json") + Select Case _country + Case "AT" + request.Content = New StringContent(json, Encoding.UTF8, "text/xml") + Case Else + request.Content = New StringContent(json, Encoding.UTF8, "application/json") + End Select Dim response = Await _httpClient.SendAsync(request) Dim result = Await response.Content.ReadAsStringAsync() @@ -101,17 +116,22 @@ Public Class cFiskaltrustClient End Try - If exToThrow IsNot Nothing Then - Await Task.Delay(1000) ' ✅ jetzt OK - Throw exToThrow - End If Next + + If exToThrow IsNot Nothing Then + Await Task.Delay(1000) ' ✅ jetzt OK + Throw exToThrow + End If + Throw New Exception("Unexpected error") End Function + + + ' ================================ ' PAYLOAD BUILDER ' ================================ @@ -156,15 +176,37 @@ Public Class cFiskaltrustClient ' ================================ ' ENDPOINT SWITCH ' ================================ - Private Function GetEndpoint() As String - Select Case _country - Case "DE" - Return "/json/v1/Sign" - Case "AT" - Return "/json/Sign" - Case Else - Throw New Exception("Unsupported country") - End Select + Private Function GetEndpoint(type As String) As String + + If type = "payment" Then + + + Select Case _country + Case "DE" + Return "/json/v1/Sign" + Case "AT" + Return "/json/Sign" + Case Else + Throw New Exception("Unsupported country") + End Select + + ElseIf type = "test" Then + + Select Case _country + Case "DE" + Return "/json/v1/Echo" + Case "AT" + Return "/json/Echo" + Case Else + Throw New Exception("Unsupported country") + End Select + + End If + + + + + End Function ' ================================ diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb index 8c743850..08c59844 100644 --- a/SDL/kassenbuch/frmBelegNeu.Designer.vb +++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb @@ -145,6 +145,7 @@ Partial Class frmBelegNeu Me.DataGridViewTextBoxColumn9 = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.Button4 = New System.Windows.Forms.Button() CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnl.SuspendLayout() Me.pnlData.SuspendLayout() @@ -646,6 +647,7 @@ Partial Class frmBelegNeu 'pnlData ' Me.pnlData.BackColor = System.Drawing.Color.FromArgb(CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer)) + Me.pnlData.Controls.Add(Me.Button4) Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen) Me.pnlData.Controls.Add(Me.lblErr_Fahrer) Me.pnlData.Controls.Add(Me.lblErr_Pass) @@ -1761,6 +1763,21 @@ Partial Class frmBelegNeu Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) ' + 'Button4 + ' + Me.Button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button4.ForeColor = System.Drawing.Color.Black + Me.Button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button4.Location = New System.Drawing.Point(340, 6) + Me.Button4.Name = "Button4" + Me.Button4.Padding = New System.Windows.Forms.Padding(0, 0, 5, 0) + Me.Button4.Size = New System.Drawing.Size(60, 30) + Me.Button4.TabIndex = 49 + Me.Button4.Text = "TEST" + Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Button4.UseVisualStyleBackColor = True + Me.Button4.Visible = False + ' 'frmBelegNeu ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) @@ -1910,4 +1927,5 @@ Partial Class frmBelegNeu Friend WithEvents lblZahlungsmittel As Label Friend WithEvents LinkLabel1 As LinkLabel Friend WithEvents cboBuchungsoforterzeugen As CheckBox + Friend WithEvents Button4 As Button End Class diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb index 3aa13fc6..e63f5faa 100644 --- a/SDL/kassenbuch/frmBelegNeu.vb +++ b/SDL/kassenbuch/frmBelegNeu.vb @@ -232,6 +232,10 @@ Public Class frmBelegNeu ' Case "WAI" : cboFiliale.changeItem(5103) ' End Select + If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then + Button4.Visible = True + End If + AddHandler kdkunde.PropertyChanged, Sub() If kdkunde.KdNr > 0 Then lblKunde_Strasse.Text = kdkunde.KdData_ADRESSEN.Straße @@ -1590,8 +1594,8 @@ Public Class frmBelegNeu Me.Cursor = Cursors.WaitCursor If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - 'KASSE.LOAD(6) 'AT-Kasse - KASSE.LOAD(12) 'DE-kasse + KASSE.LOAD(6) 'AT-Kasse + 'KASSE.LOAD(12) 'DE-kasse 'Laden der Kasse anhand der Auswahlbox Else KASSE.LOAD(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox @@ -1875,6 +1879,24 @@ Public Class frmBelegNeu Process.Start("https://wiki.verag.ag/de/software/aviso/howtos/Bankomat") End Sub + Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click + + 'KASSE.LOAD(6) 'AT-Kasse + KASSE.LOAD(12) 'DE-kasse + + If KASSE.rksv_FT_RestServiceURL <> "" Then + + Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) + + Dim result = client.Echo() + + + + End If + + + End Sub + 'Private Sub generatePOSUmbuchung() ' Dim isUmbuchung = True ' Dim frmFremdbeleg As New frmFremdbeleg(isUmbuchung)