Fiskaltrust, etc.
This commit is contained in:
@@ -1,12 +1,4 @@
|
||||
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.IO
|
||||
Imports System.Reflection
|
||||
Imports Chilkat
|
||||
Imports Gma.QrCodeNet.Encoding
|
||||
Imports GrapeCity.DataVisualization.Chart
|
||||
Imports itextsharp.text.pdf.qrcode
|
||||
Imports Newtonsoft.Json
|
||||
Imports Chilkat
|
||||
Imports QRCoder
|
||||
|
||||
Public Class FtReceiptCases
|
||||
@@ -104,7 +96,7 @@ Public Class cFiskaltrustClient_chilkat
|
||||
p.LeistungsNr = 300
|
||||
p.LeistungsBez = "TEST"
|
||||
p.Preis = 10
|
||||
p.Anzahl = 1
|
||||
p.Anzahl = 10
|
||||
LIST.Add(p)
|
||||
|
||||
Dim amount = 100
|
||||
@@ -181,28 +173,87 @@ Public Class cFiskaltrustClient_chilkat
|
||||
Return SendChilkat(endpoint, "")
|
||||
End Function
|
||||
|
||||
'Private Function old_SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String
|
||||
|
||||
' Dim retries As Integer = 3
|
||||
' Dim lastEx As Exception = Nothing
|
||||
' VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
' Dim rest As New Chilkat.Rest
|
||||
' Dim failureDesc As String
|
||||
' rest.VerboseLogging = True
|
||||
|
||||
|
||||
' For i As Integer = 1 To retries
|
||||
|
||||
' Try
|
||||
|
||||
' Dim uri As New Uri(_baseUrl)
|
||||
|
||||
' If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then
|
||||
|
||||
' Throw New Exception(rest.LastErrorText)
|
||||
' failureDesc = rest.LastErrorText
|
||||
' Return failureDesc
|
||||
|
||||
' End If
|
||||
|
||||
' rest.AddHeader("cashboxid", _cashboxId)
|
||||
' rest.AddHeader("accesstoken", _accessToken)
|
||||
|
||||
' Dim response As String
|
||||
|
||||
' If isGet Then
|
||||
' response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint)
|
||||
' Else
|
||||
|
||||
|
||||
' If _country = "AT" Then
|
||||
' rest.AddHeader("Content-Type", "text/plain")
|
||||
' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
' Else
|
||||
' rest.AddHeader("Content-Type", "application/json")
|
||||
' response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
' End If
|
||||
|
||||
|
||||
' End If
|
||||
|
||||
' If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then
|
||||
' Return response
|
||||
' Else
|
||||
' failureDesc = rest.LastErrorText
|
||||
' End If
|
||||
|
||||
' Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response)
|
||||
|
||||
' Catch ex As Exception
|
||||
' lastEx = ex
|
||||
' Threading.Thread.Sleep(500)
|
||||
' End Try
|
||||
|
||||
' Next
|
||||
|
||||
' Throw lastEx
|
||||
|
||||
'End Function
|
||||
|
||||
Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String
|
||||
|
||||
Dim retries As Integer = 3
|
||||
Dim lastEx As Exception = Nothing
|
||||
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
Dim rest As New Chilkat.Rest
|
||||
Dim failureDesc As String
|
||||
rest.VerboseLogging = True
|
||||
|
||||
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
|
||||
Dim rest As New Chilkat.Rest
|
||||
rest.VerboseLogging = True
|
||||
|
||||
For i As Integer = 1 To retries
|
||||
|
||||
Try
|
||||
|
||||
Dim uri As New Uri(_baseUrl)
|
||||
|
||||
If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then
|
||||
|
||||
Throw New Exception(rest.LastErrorText)
|
||||
failureDesc = rest.LastErrorText
|
||||
Return failureDesc
|
||||
|
||||
End If
|
||||
|
||||
rest.AddHeader("cashboxid", _cashboxId)
|
||||
@@ -211,32 +262,79 @@ Public Class cFiskaltrustClient_chilkat
|
||||
Dim response As String
|
||||
|
||||
If isGet Then
|
||||
response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint)
|
||||
Else
|
||||
|
||||
response = rest.FullRequestNoBody(
|
||||
"GET",
|
||||
uri.AbsoluteUri & endpoint
|
||||
)
|
||||
|
||||
Else
|
||||
|
||||
If _country = "AT" Then
|
||||
rest.AddHeader("Content-Type", "text/plain")
|
||||
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
Else
|
||||
rest.AddHeader("Content-Type", "application/json")
|
||||
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
End If
|
||||
|
||||
response = rest.FullRequestString(
|
||||
"POST",
|
||||
uri.AbsoluteUri & endpoint,
|
||||
payload
|
||||
)
|
||||
|
||||
End If
|
||||
|
||||
If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then
|
||||
Dim statusCode As Integer = rest.ResponseStatusCode
|
||||
|
||||
' SUCCESS
|
||||
If statusCode >= 200 AndAlso statusCode < 300 Then
|
||||
Return response
|
||||
Else
|
||||
failureDesc = rest.LastErrorText
|
||||
End If
|
||||
|
||||
Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response)
|
||||
' 4xx = client/request error -> DO NOT RETRY
|
||||
If statusCode >= 400 AndAlso statusCode < 500 Then
|
||||
Throw New Exception(
|
||||
"HTTP " & statusCode & ": " & response
|
||||
)
|
||||
End If
|
||||
|
||||
' 5xx = server error -> retry
|
||||
If statusCode >= 500 AndAlso statusCode < 600 Then
|
||||
|
||||
lastEx = New Exception(
|
||||
"HTTP " & statusCode & ": " & response
|
||||
)
|
||||
|
||||
If i < retries Then
|
||||
Threading.Thread.Sleep(500)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Throw lastEx
|
||||
End If
|
||||
|
||||
' Unexpected status code
|
||||
Throw New Exception(
|
||||
"HTTP " & statusCode & ": " & response
|
||||
)
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
lastEx = ex
|
||||
|
||||
' If this was an HTTP 4xx, don't retry.
|
||||
If rest.ResponseStatusCode >= 400 AndAlso
|
||||
rest.ResponseStatusCode < 500 Then
|
||||
|
||||
Throw
|
||||
|
||||
End If
|
||||
|
||||
' Connection/transport error -> retry
|
||||
If i < retries Then
|
||||
Threading.Thread.Sleep(500)
|
||||
End If
|
||||
|
||||
End Try
|
||||
|
||||
Next
|
||||
@@ -261,19 +359,32 @@ Public Class cFiskaltrustClient_chilkat
|
||||
|
||||
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
|
||||
|
||||
Dim receipCase As Long
|
||||
Select Case _receiptCase
|
||||
|
||||
Case "Storno"
|
||||
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 'Storno
|
||||
Dim receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction
|
||||
|
||||
Case Else
|
||||
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction 'Verkauf
|
||||
If _receiptCase = "Storno" Then
|
||||
|
||||
End Select
|
||||
' New reference for the Storno receipt
|
||||
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
|
||||
|
||||
' Reference to the original receipt from the database
|
||||
json.UpdateString("cbPreviousReceiptReference", _reference)
|
||||
|
||||
' Storno = POS receipt + reversal + implicit transaction
|
||||
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction
|
||||
|
||||
Else
|
||||
|
||||
' New reference for a normal receipt
|
||||
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
|
||||
|
||||
' Normal sale
|
||||
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction
|
||||
|
||||
End If
|
||||
|
||||
json.UpdateString("ftReceiptCase", receipCase.ToString())
|
||||
|
||||
json.UpdateString("ftReceiptCase", receipCase)
|
||||
|
||||
|
||||
Dim chargeItems = json.AppendArray("cbChargeItems")
|
||||
@@ -466,7 +577,11 @@ Public Class cFiskaltrustClient_chilkat
|
||||
|
||||
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String, ByRef beleg_temp As EABeleg, ByRef isStorno As Boolean) As Boolean
|
||||
|
||||
If result_zahlung <> "" Then
|
||||
If String.IsNullOrWhiteSpace(result_zahlung) Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim json As New Chilkat.JsonObject
|
||||
Dim success As Boolean = json.Load(result_zahlung)
|
||||
If (success <> True) Then
|
||||
@@ -572,10 +687,6 @@ Public Class cFiskaltrustClient_chilkat
|
||||
Return saved
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
@@ -625,7 +736,7 @@ Public Class cFiskaltrustClient_chilkat
|
||||
R("ftQueueId") = .StringOf("ftQueueId")
|
||||
R("ftQueueItemId") = .StringOf("ftQueueItemId")
|
||||
R("ftReceiptHash") = .StringOf("ftReceiptHash")
|
||||
R("TimeStamp") = tmstmp.GetAsTimestamp(getAsLocal)
|
||||
R("TimeStamp") = .StringOf("ftReceiptMoment")
|
||||
|
||||
End With
|
||||
|
||||
|
||||
@@ -1965,6 +1965,12 @@ Public Class frmBelegNeu
|
||||
cm_FT.Items.Add(ids)
|
||||
End If
|
||||
|
||||
If Not cm_FT.Items.ContainsKey("exportJournal") Then
|
||||
Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
|
||||
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
|
||||
cm_FT.Items.Add(ids)
|
||||
End If
|
||||
|
||||
cm_FT.Show(Cursor.Position)
|
||||
|
||||
End Sub
|
||||
@@ -2078,7 +2084,7 @@ Public Class frmBelegNeu
|
||||
|
||||
End If
|
||||
|
||||
ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem") Then
|
||||
ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then
|
||||
|
||||
'Dim result As String = Await client.Journal(2)
|
||||
|
||||
@@ -2088,12 +2094,17 @@ Public Class frmBelegNeu
|
||||
Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal)
|
||||
Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal)
|
||||
Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal)
|
||||
Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal)
|
||||
End Select
|
||||
|
||||
If result <> "" Then
|
||||
|
||||
MsgBox(client_chilkat.PrettyPrintJson(result))
|
||||
|
||||
If item.Name = "exportJournal" Then
|
||||
client_chilkat.exportJournal(result)
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
@@ -225,7 +225,18 @@ Public Class frmFremdbeleg
|
||||
|
||||
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
|
||||
|
||||
Dim verarbeitet As Boolean = False
|
||||
If KASSE.rksv_FT_RestServiceURL <> "" Then
|
||||
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS)
|
||||
'result.Wait()
|
||||
verarbeitet = result
|
||||
Else
|
||||
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
|
||||
End If
|
||||
|
||||
|
||||
If Not verarbeitet 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)
|
||||
|
||||
@@ -365,7 +365,17 @@ Public Class frmNacherfassungLeihgeld
|
||||
|
||||
If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt
|
||||
Dim answer = ""
|
||||
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
|
||||
|
||||
Dim verarbeitet As Boolean = False
|
||||
If KASSE.rksv_FT_RestServiceURL <> "" Then
|
||||
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS)
|
||||
'result.Wait()
|
||||
verarbeitet = result
|
||||
Else
|
||||
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
|
||||
End If
|
||||
|
||||
If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
|
||||
If Not TESTBUCHUNG Then
|
||||
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
|
||||
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
|
||||
|
||||
Reference in New Issue
Block a user