This commit is contained in:
2026-09-16 09:01:59 +02:00
parent aa2c495147
commit b4c0ed0c66
16 changed files with 1038 additions and 758 deletions

View File

@@ -284,6 +284,8 @@ Public Class EABeleg
Property EC_daid As Integer = 0 Property EC_daid As Integer = 0
Property FT_ReceiptReference As Object = Nothing Property FT_ReceiptReference As Object = Nothing
Property FT_ReceiptReference_Storno As Object = Nothing Property FT_ReceiptReference_Storno As Object = Nothing
Property FT_MissingSignature As Boolean = False
Property FT_setMissingSignatureFailed As Boolean = False
Property POS As New List(Of EABelegPositionen) Property POS As New List(Of EABelegPositionen)
@@ -364,8 +366,13 @@ Public Class EABeleg
Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing) Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing)
Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing) Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing)
Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing) Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing)
'Fiskaltrust
Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing) Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing)
Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing) Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing)
Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_MissingSignature"), False)
Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_setMissingSignatureFailed"), False)
If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat) If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
' MsgBox(POS.Count) ' MsgBox(POS.Count)
@@ -551,8 +558,12 @@ Public Class EABeleg
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid))
'FISKALTRUST
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno)) list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_MissingSignature", FT_MissingSignature))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_setMissingSignatureFailed", FT_setMissingSignatureFailed))
'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties() 'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties()
'If p.CanRead Then 'If p.CanRead Then

View File

@@ -10,6 +10,7 @@ Public Class FtReceiptCases
' Test-/Nullbeleg ' Test-/Nullbeleg
Public Const ZeroReceipt As Long = &H4445000000000002L Public Const ZeroReceipt As Long = &H4445000000000002L
' Kassenlebenszyklus
Public Const InitialOperation As Long = &H4445000000000003L Public Const InitialOperation As Long = &H4445000000000003L
Public Const OutOfOperation As Long = &H4445000000000004L Public Const OutOfOperation As Long = &H4445000000000004L
@@ -22,6 +23,12 @@ Public Class FtReceiptCases
Public Const ImplicitTransaction As Long = &H100000000L Public Const ImplicitTransaction As Long = &H100000000L
Public Const ReversalReceipt As Long = &H40000L Public Const ReversalReceipt As Long = &H40000L
Public Const TrainingReceipt As Long = &H20000L Public Const TrainingReceipt As Long = &H20000L
' aktiviert den Late-Signing-Modus
Public Const FailedReceipt As Long = &H10000L
' Receipt-Request:
' bereits verarbeiteten Beleg anhand cbReceiptReference abrufen
Public Const ReceiptRequest As Long = &H800000000000L
End Class End Class
@@ -44,6 +51,17 @@ Public Class FtJournalType
End Class End Class
Public Class ReceiptCaseIntern
Public Const VERKAUF As String = "Verkauf"
Public Const EINGANG As String = "Eingang"
Public Const AUSGANG As String = "Ausgang"
Public Const WIEDERHOLUNG As String = "Retry"
End Class
Public Class FtPayItemCases Public Class FtPayItemCases
'DE 'DE
@@ -71,25 +89,31 @@ Public Class cFiskaltrustClient_chilkat
Private ReadOnly _cashboxId As String Private ReadOnly _cashboxId As String
Private ReadOnly _accessToken As String Private ReadOnly _accessToken As String
Private ReadOnly _country As String Private ReadOnly _country As String
Private ReadOnly _isFiskaltrust As Boolean = False
Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String) Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String)
_baseUrl = baseUrl.TrimEnd("/"c) _baseUrl = baseUrl.TrimEnd("/"c)
_cashboxId = cashboxId _cashboxId = cashboxId
_accessToken = accessToken _accessToken = accessToken
_country = country _country = country
If _cashboxId <> "" AndAlso baseUrl <> "" AndAlso _accessToken <> "" AndAlso _country <> "" Then
_isFiskaltrust = True
Else
_isFiskaltrust = False
End If
End Sub End Sub
Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String) As String Public Function isFiskaltrust() As Boolean
Return _isFiskaltrust
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, "")
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
End Function End Function
Public Function SignReceipt_test(posSystemId As String) As String
Public Function SignReceipt_test(posSystemId As String, TSEisOnline As Boolean) As String
Dim LIST = New List(Of EABelegPositionen) Dim LIST = New List(Of EABelegPositionen)
Dim p = New EABelegPositionen Dim p = New EABelegPositionen
@@ -110,23 +134,22 @@ Public Class cFiskaltrustClient_chilkat
Dim vat = 0 Dim vat = 0
Dim POS = LIST Dim POS = LIST
Dim kindOfPayment = "Cash" Dim kindOfPayment = "Cash"
Try
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "") Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "", TSEisOnline)
Return SendChilkat(GetEndpoint("payment"), payload.Emit()) Return SendChilkat(GetEndpoint("payment"), payload.Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference)
Return SendChilkat(GetEndpoint("storno"), payload.Emit()) Public Function ChancelReceipt_test(reference As String, posSystemId As String, TSEisOnline As Boolean) As String
End Function
Public Function ChancelReceipt_test(reference As String, posSystemId As String) As String
Try
Dim LIST = New List(Of EABelegPositionen) Dim LIST = New List(Of EABelegPositionen)
Dim p = New EABelegPositionen Dim p = New EABelegPositionen
p.Mandant = "VERA" p.Mandant = "VERA"
@@ -147,44 +170,98 @@ Public Class cFiskaltrustClient_chilkat
Dim POS = LIST Dim POS = LIST
Dim kindOfPayment = "Cash" Dim kindOfPayment = "Cash"
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference) Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline)
Return SendChilkat(GetEndpoint("storno"), payload.Emit()) Return SendChilkat(GetEndpoint("storno"), payload.Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String, reference As String, TESisOnline As Boolean) As String
Try
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, reference, TESisOnline)
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function SignNullReceipt(posSystemId As String) As String Public Function SignNullReceipt(posSystemId As String) As String
Try
Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit()) Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, TSEisOnline As Boolean) As String
Try
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline)
Return SendChilkat(GetEndpoint("storno"), payload.Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function SignOutOfOrderReceipt(posSystemId As String) As String Public Function SignOutOfOrderReceipt(posSystemId As String) As String
Try
Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit()) Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function SignOInitialOperationReceipt(posSystemId As String) As String Public Function SignTempOutOfOrderReceipt(posSystemId As String) As String
Try
Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function
Public Function SignInitialOperationReceipt(posSystemId As String) As String
Try
Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit()) Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String
Try
Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit()) Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function Echo(kassenName As String) As String Public Function Echo(kassenName As String) As String
Try
Dim json As New JsonObject() Dim json As New JsonObject()
json.UpdateString("Message", kassenName & " - VERBINDUNG OK") json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
Return SendChilkat(GetEndpoint("test"), json.Emit()) Return SendChilkat(GetEndpoint("test"), json.Emit())
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
Public Function Journal(ftJournalType As Integer) As String Public Function Journal(ftJournalType As Integer) As String
Try
Dim endpoint = GetEndpoint("journal") Dim endpoint = GetEndpoint("journal")
endpoint &= "?type=" & ftJournalType endpoint &= "?type=" & ftJournalType
Return SendChilkat(endpoint, "") Return SendChilkat(endpoint, "")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Function End Function
@@ -289,9 +366,12 @@ Public Class cFiskaltrustClient_chilkat
Throw lastEx Throw lastEx
End Function End Function
Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String) As JsonObject Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String, TSEisOnline As Boolean) As JsonObject
Dim json As New JsonObject() Dim json As New JsonObject()
@@ -312,49 +392,64 @@ Public Class cFiskaltrustClient_chilkat
If _receiptCase = "Storno" Then If _receiptCase = "Storno" Then
' New reference for the Storno receipt
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
' Reference to the original receipt from the database
json.UpdateString("cbPreviousReceiptReference", _reference) json.UpdateString("cbPreviousReceiptReference", _reference)
' Storno = POS receipt + reversal + implicit transaction If TSEisOnline Then
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction
Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
End If
ElseIf _receiptCase = "Retry" Then
'Receipt-Request nach Kommunikationsfehler
'dieselbe cbReceiptReference verwenden
'dieselben cbChargeItems und cbPayItems mitsenden
'optional dieselbe cbTerminalID
json.UpdateString("cbReceiptReference", _reference)
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest
Else Else
' New reference for a normal receipt ' New reference for a normal receipt
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
If TSEisOnline Then
' Normal sale
'Select Case _receiptCase
' Case "Eingang"
' receipCase = FtReceiptCases.CashIn Or FtReceiptCases.ImplicitTransaction
' Case "Ausgang"
' receipCase = FtReceiptCases.CashOut Or FtReceiptCases.ImplicitTransaction
' Case Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction
'End Select Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
End If
End If End If
json.UpdateString("ftReceiptCase", receipCase.ToString()) json.UpdateString("ftReceiptCase", receipCase.ToString())
Dim chargeItems = json.AppendArray("cbChargeItems") Dim chargeItems = json.AppendArray("cbChargeItems")
For Each p In POS For Each p In POS
If chargeItems.AddObjectAt(-1) Then If chargeItems.AddObjectAt(-1) Then
Dim quantity As Double = p.Anzahl
Dim unitPrice As Double = p.Preis
Dim lineAmount As Double = p.Betrag
'bei Storno negieren (BEI DE nur einen Teil)!
'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)'
'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase
If _receiptCase = "Storno" Then
quantity = quantity * -1
lineAmount = lineAmount * -1
End If
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1) Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
item.UpdateInt("Quantity", p.Anzahl) item.UpdateInt("Quantity", quantity)
item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", ".")) item.UpdateNumber("Amount", lineAmount)
item.UpdateNumber("VATRate", vat.ToString().Replace(",", ".")) item.UpdateNumber("VATRate", vat)
item.UpdateString("Description", p.LeistungsBez) item.UpdateString("Description", p.LeistungsBez)
Dim ChargeItemCase As Long Dim ChargeItemCase As Long
@@ -430,8 +525,6 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("cbUser", "Admin") json.UpdateString("cbUser", "Admin")
json.UpdateString("ftReceiptCaseData", "") json.UpdateString("ftReceiptCaseData", "")
Dim chargeItems = json.AppendArray("cbChargeItems") Dim chargeItems = json.AppendArray("cbChargeItems")
Dim payItems = json.AppendArray("cbPayItems") Dim payItems = json.AppendArray("cbPayItems")
@@ -573,7 +666,14 @@ Public Class cFiskaltrustClient_chilkat
.ftReceiptIdentification = json.StringOf("ftReceiptIdentification") .ftReceiptIdentification = json.StringOf("ftReceiptIdentification")
.ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal) .ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal)
.ftState = json.StringOf("ftState") .ftState = json.StringOf("ftState")
If beleg_temp Is Nothing Then
.ftBeleg_ID = -1
Else
.ftBeleg_ID = beleg_temp.BelegNr .ftBeleg_ID = beleg_temp.BelegNr
End If
saved = .SAVE() saved = .SAVE()
If saved AndAlso beleg_temp IsNot Nothing Then If saved AndAlso beleg_temp IsNot Nothing Then
@@ -594,8 +694,8 @@ Public Class cFiskaltrustClient_chilkat
Dim num As Integer = json.SizeOfArray("ftSignatures") Dim num As Integer = json.SizeOfArray("ftSignatures")
If num = 0 Then If num = 0 Then
MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen!") MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen" & vbNewLine & "Beleg kann nachträglich signiert werden!")
Return True Return False
End If End If
Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures") Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
@@ -714,15 +814,8 @@ Public Class cFiskaltrustClient_chilkat
End If End If
End Function End Function
Private Sub Log(message As String)
Console.WriteLine(message)
End Sub
Public Function PrettyPrintJson(jsonText As String) As String Public Function PrettyPrintJson(jsonText As String) As String
Dim json As New Chilkat.JsonObject() Dim json As New Chilkat.JsonObject()

View File

@@ -89,7 +89,7 @@ Public Class cRKSV
End Function End Function
Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String) As Boolean Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String, Optional reference As String = "", Optional TSEisOnline As Boolean = True) As Boolean
Try Try
@@ -133,7 +133,7 @@ Public Class cRKSV
'End If 'End If
Else Else
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase) Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline)
If result <> "" Then If result <> "" Then
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False)
Else Else
@@ -968,7 +968,7 @@ Public Class cRKSV
End Try End Try
Return False Return False
End Function End Function
Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String) As Boolean Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String, TSEisOnline As Boolean) As Boolean
Try Try
If beleg_temp.rksv_BelegId <= 0 Then If beleg_temp.rksv_BelegId <= 0 Then
@@ -1013,7 +1013,7 @@ Public Class cRKSV
Else Else
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id) Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, TSEisOnline)
If result <> "" Then If result <> "" Then
client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True) client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True)
Else Else

View File

@@ -404,6 +404,12 @@ Public Class cAutomailversand
Subject = Subject.Replace("%Belegtyp%", belegtyp) Subject = Subject.Replace("%Belegtyp%", belegtyp)
Subject = Subject.Replace("%BelegNr%", txtRgNr) Subject = Subject.Replace("%BelegNr%", txtRgNr)
If RECHNUNG IsNot Nothing Then
Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", RECHNUNG.FilialenNr & "-" & RECHNUNG.AbfertigungsNr & "-" & RECHNUNG.UnterNr)
Else
Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", "")
End If
TextHTML &= r.txt_text TextHTML &= r.txt_text
TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp) TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp)

View File

@@ -3058,6 +3058,9 @@ Public Class cFakturierung
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(RECHNUNG.Firma_ID) Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(RECHNUNG.Firma_ID)
Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(addYeartoRgNr(FIRMA.Firma_ID, RECHNUNG.Buchungsjahr) & RECHNUNG.RechnungsNr, RECHNUNG.RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR)) Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(addYeartoRgNr(FIRMA.Firma_ID, RECHNUNG.Buchungsjahr) & RECHNUNG.RechnungsNr, RECHNUNG.RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR))
Select Case RECHNUNG.BelegartenKz Select Case RECHNUNG.BelegartenKz
Case "AR" Case "AR"
desc.Name = "SPEDITIONSRECHNUNG" desc.Name = "SPEDITIONSRECHNUNG"
@@ -3108,6 +3111,11 @@ Public Class cFakturierung
' Optionally, to support Peppol----------------------------- ' Optionally, to support Peppol-----------------------------
If RECHNUNG.FilialenNr > 0 AndAlso RECHNUNG.AbfertigungsNr > 0 Then
Dim lrn = RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr
desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument)
End If
If Not IsDBNull(RECHNUNG.RechnungsUstIdNr) AndAlso RECHNUNG.RechnungsUstIdNr IsNot Nothing AndAlso Not IsDBNull(RECHNUNG.RechnungsUstIdKz) AndAlso RECHNUNG.RechnungsUstIdKz IsNot Nothing Then If Not IsDBNull(RECHNUNG.RechnungsUstIdNr) AndAlso RECHNUNG.RechnungsUstIdNr IsNot Nothing AndAlso Not IsDBNull(RECHNUNG.RechnungsUstIdKz) AndAlso RECHNUNG.RechnungsUstIdKz IsNot Nothing Then
desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA) desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA)
@@ -3297,6 +3305,17 @@ Public Class cFakturierung
End Select End Select
If Not IsDBNull(ROW("FilialenNr")) AndAlso Not IsDBNull(ROW("AbfertigungsNr")) Then
Dim filialenNr As String = ROW("FilialenNr").ToString().Trim()
Dim abfertigungsNr As String = ROW("AbfertigungsNr").ToString().Trim()
If filialenNr <> String.Empty AndAlso abfertigungsNr <> String.Empty Then
Dim lrn As String = filialenNr & "/" & abfertigungsNr
desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument)
End If
End If
'Die „Berechnung BT-10“ bezieht sich auf das Feld BT-10 „Buyer reference“ (Käuferreferenz) in der elektronischen Rechnung, speziell im XRechnung-Standard. Dieses Feld dient zur Angabe der Leitweg-ID 'Die „Berechnung BT-10“ bezieht sich auf das Feld BT-10 „Buyer reference“ (Käuferreferenz) in der elektronischen Rechnung, speziell im XRechnung-Standard. Dieses Feld dient zur Angabe der Leitweg-ID
'für öffentliche Auftraggeber oder anderer Referenzinformationen für interne Zuordnungsprozesse. 'für öffentliche Auftraggeber oder anderer Referenzinformationen für interne Zuordnungsprozesse.
'Die Leitweg-ID ist in Deutschland eine Pflichtangabe für elektronische Rechnungen an die Bundesverwaltung und muss vom Rechnungssteller vom Auftraggeber erhalten werden. 'Die Leitweg-ID ist in Deutschland eine Pflichtangabe für elektronische Rechnungen an die Bundesverwaltung und muss vom Rechnungssteller vom Auftraggeber erhalten werden.

View File

@@ -5,7 +5,9 @@ Imports System.Reflection
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Imports System.Windows.Documents Imports System.Windows.Documents
Imports com.sun.tools.internal.ws.wsdl.document.mime Imports com.sun.tools.internal.ws.wsdl.document.mime
Imports DAKOSY_Worker.Abgabenbescheid_008
Imports GrapeCity.ActiveReports Imports GrapeCity.ActiveReports
Imports GrapeCity.DataVisualization.TypeScript
Imports itextsharp.text.pdf Imports itextsharp.text.pdf
Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -1316,7 +1318,10 @@ Public Class frmFormulare
Dim ADR As New cAdressen(KundenNr) Dim ADR As New cAdressen(KundenNr)
If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then
Bez = "_" & ADR.Name_1
Bez = "_" & ADR.Name_1.ToString
Bez = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Bez)
Bez = Regex.Replace(Bez, "[" & Regex.Escape(New String(System.IO.Path.GetInvalidFileNameChars())) & "]", "_")
End If End If

View File

@@ -147,6 +147,7 @@ Partial Class frmBelegNeu
Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.lblTSEisOffline = New System.Windows.Forms.Label()
CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout() Me.pnl.SuspendLayout()
Me.pnlData.SuspendLayout() Me.pnlData.SuspendLayout()
@@ -648,6 +649,7 @@ Partial Class frmBelegNeu
'pnlData '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.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.lblTSEisOffline)
Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen) Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen)
Me.pnlData.Controls.Add(Me.lblErr_Fahrer) Me.pnlData.Controls.Add(Me.lblErr_Fahrer)
Me.pnlData.Controls.Add(Me.lblErr_Pass) Me.pnlData.Controls.Add(Me.lblErr_Pass)
@@ -1784,6 +1786,20 @@ Partial Class frmBelegNeu
Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Name = "ContextMenuStrip1"
Me.cm_FT.Size = New System.Drawing.Size(61, 4) Me.cm_FT.Size = New System.Drawing.Size(61, 4)
' '
'lblTSEisOffline
'
Me.lblTSEisOffline.AutoSize = True
Me.lblTSEisOffline.BackColor = System.Drawing.Color.Red
Me.lblTSEisOffline.Cursor = System.Windows.Forms.Cursors.Default
Me.lblTSEisOffline.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblTSEisOffline.ForeColor = System.Drawing.Color.White
Me.lblTSEisOffline.Location = New System.Drawing.Point(154, 35)
Me.lblTSEisOffline.Name = "lblTSEisOffline"
Me.lblTSEisOffline.Size = New System.Drawing.Size(125, 20)
Me.lblTSEisOffline.TabIndex = 50
Me.lblTSEisOffline.Text = "TSE ist Offline"
Me.lblTSEisOffline.Visible = False
'
'frmBelegNeu 'frmBelegNeu
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
@@ -1935,4 +1951,5 @@ Partial Class frmBelegNeu
Friend WithEvents cboBuchungsoforterzeugen As CheckBox Friend WithEvents cboBuchungsoforterzeugen As CheckBox
Friend WithEvents Button4 As Button Friend WithEvents Button4 As Button
Friend WithEvents cm_FT As ContextMenuStrip Friend WithEvents cm_FT As ContextMenuStrip
Friend WithEvents lblTSEisOffline As Label
End Class End Class

View File

@@ -45,6 +45,7 @@ Public Class frmBelegNeu
Public aktFiliale As Integer = 0 Public aktFiliale As Integer = 0
Public aktAbfertigungsNr As Integer = 0 Public aktAbfertigungsNr As Integer = 0
Dim tseIsOnline As Boolean = False
Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String) Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String)
@@ -231,9 +232,8 @@ Public Class frmBelegNeu
' Case "WAI" : cboFiliale.changeItem(5103) ' Case "WAI" : cboFiliale.changeItem(5103)
' End Select ' End Select
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then
Button4.Visible = True Button4.Visible = checkFiskaltrust()
End If
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cboKassen.Enabled = True cboKassen.Enabled = True
@@ -1704,17 +1704,20 @@ Public Class frmBelegNeu
Dim answer = "" Dim answer = ""
Dim verarbeitet As Boolean = False Dim verarbeitet As Boolean = False
Dim isFiskaltrust As Boolean = False Dim isFiskaltrust = checkFiskaltrust()
If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") If isFiskaltrust Then
'result.Wait() Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF)
verarbeitet = result verarbeitet = result
isFiskaltrust = True
Else Else
verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service verarbeitet = 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) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If End If
If Not verarbeitet AndAlso Not isFiskaltrust Then If Not verarbeitet Then
If Not isFiskaltrust Then
If Not TESTBUCHUNG Then If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO)) KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
@@ -1725,9 +1728,16 @@ Public Class frmBelegNeu
MsgBox(Errmsg, MsgBoxStyle.Critical) MsgBox(Errmsg, MsgBoxStyle.Critical)
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
Else
BELEG.FT_MissingSignature = True
End If End If
If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString) If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If
End If End If
@@ -1873,6 +1883,21 @@ Public Class frmBelegNeu
End Function
Private Function checkFiskaltrust()
If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Return client_chilkat.isFiskaltrust()
Else
Return False
End If
End Function End Function
Private Sub openZahlungsbeleg(daid As Integer) Private Sub openZahlungsbeleg(daid As Integer)
@@ -1896,84 +1921,29 @@ Public Class frmBelegNeu
Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged
KASSE.LOAD(cboKassen._value) KASSE.LOAD(cboKassen._value)
'Button4.Visible = KASSE.rksv_FT_RestServiceURL <> ""
If KASSE IsNot Nothing AndAlso KASSE.rksv_aktiv AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
If client_chilkat.isFiskaltrust() Then
Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
If result IsNot Nothing AndAlso result.Contains("VERBINDUNG OK") Then
tseIsOnline = True
End If
lblTSEisOffline.Visible = Not tseIsOnline
End If
End If
End Sub End Sub
Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If Not cm_FT.Items.ContainsKey("ft_neusignierung") AndAlso BELEG IsNot Nothing AndAlso (BELEG.gebucht Or BELEG.gebuchtStorno) AndAlso BELEG.FT_setMissingSignatureFailed Then
'nur im Testsystem! Dim ids = New ToolStripMenuItem() With {.Text = "Beleg neu signieren", .Name = "ft_neusignierung", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
If Not cm_FT.Items.ContainsKey("bar") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
If Not cm_FT.Items.ContainsKey("storno") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
End If
If Not cm_FT.Items.ContainsKey("null") Then
Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cm_FT.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
End If
If Not cm_FT.Items.ContainsKey("monthly") Then
Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(rmc)
End If
If Not cm_FT.Items.ContainsKey("daily") Then
Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(rmc)
End If
If Not cm_FT.Items.ContainsKey("yearly") Then
Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(uta)
End If
If Not cm_FT.Items.ContainsKey("test") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
If Not cm_FT.Items.ContainsKey("version") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
If Not cm_FT.Items.ContainsKey("signatures") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
If Not cm_FT.Items.ContainsKey("action") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
If Not cm_FT.Items.ContainsKey("queueitem") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
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 AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids) cm_FT.Items.Add(ids)
End If End If
@@ -1994,153 +1964,64 @@ Public Class frmBelegNeu
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
If item.Name = "null" Then If item.Name = "ft_neusignierung" Then
If vbYes = MsgBox("Möchten Sie wirklich einen 0-Beleg an die TSE schicken?", vbYesNoCancel) Then If BELEG IsNot Nothing Then
If vbYes = MsgBox("Möchten den nicht signierten Beleg " & BELEG.BelegNr & " an die TSE schicken?", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id) Dim result As Boolean = False
If BELEG.gebucht Or BELEG.gebuchtStorno Then
If result <> "" Then Dim summeBRUTTO As Double = BELEG.rksv_umsatz
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
End If
ElseIf item.Name = "verbindungstest" Then
Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
ElseIf item.Name = "storno" Then
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?", vbYesNoCancel) Then
Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
End If
Else
MsgBox("ACHTUNG, im Produktivsystem nicht möglich!")
End If
ElseIf item.Name = "bar" Then
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id)
If result <> "" Then
If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then
Dim QR_CodeString As String = "" Dim QR_CodeString As String = ""
client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False) Dim LastJWS As String = ""
End If Dim EA As String = ""
Dim kindOfReceiptCase As String = ""
Select Case BELEG.Beleg_TYP
Case "0"
Return False 'null Belege nicht senden!
Case "E" 'Eingang/Ausgang
If BELEG.Belegart = "1" Then
EA = "E"
Else Else
Return False EA = "A"
End If
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
End If End If
Case "L"
If BELEG.Belegart = "1" Then
EA = "E"
Else Else
MsgBox("ACHTUNG, im Produktivsystem nicht möglich!") EA = "A"
End If End If
Case Else
If BELEG.Belegart = "1" Then
ElseIf item.Name = "monthly" Then EA = "E"
If vbYes = MsgBox("Möchten Sie wirklich einen Monatsbeleg an die TSE schicken, anschließend kann dieses Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
End If
ElseIf item.Name = "daily" Then
'Nur DE
If KASSE.rksv_FT_Country = "DE" Then
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
Else Else
MsgBox("nicht für AT-Kassen möglich!") EA = "A"
End If End If
ElseIf item.Name = "yearly" Then
If vbYes = MsgBox("Möchten Sie wirklich einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
End If
End If
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 = ""
Select Case item.Name
Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation)
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 End Select
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result)) result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, "", "", tseIsOnline) 'receiptCase leer und Reference leer!!!!!
If item.Name = "exportJournal" Then If result Then
client_chilkat.exportJournal(result) BELEG.FT_setMissingSignatureFailed = False
BELEG.SAVE()
MsgBox("Beleg erfolgreich gesendet!")
End If End If
End If End If
If result Then
init()
End If
End If
End If
End If End If

View File

@@ -224,13 +224,16 @@ Public Class frmFremdbeleg
End If End If
Dim answer = "" Dim answer = ""
Dim isFiskaltrust As Boolean = False
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Dim isFiskaltrust As Boolean = client_chilkat.isFiskaltrust()
If KASSE.rksv_aktiv Then If KASSE.rksv_aktiv Then
Dim verarbeitet As Boolean = False Dim verarbeitet As Boolean = False
If KASSE.rksv_FT_RestServiceURL <> "" Then If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, "Eingang", "Ausgang")) Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG))
'result.Wait() 'result.Wait()
verarbeitet = result verarbeitet = result
Else Else
@@ -238,7 +241,10 @@ Public Class frmFremdbeleg
End If End If
If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not isFiskaltrust Then
If Not TESTBUCHUNG Then If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1) KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma) cRKSV.DELETE(BELEG, KASSE.rksv_firma)
@@ -247,6 +253,10 @@ Public Class frmFremdbeleg
' BELEG = cRKSV.STORNO(BELEG, "Programmfehler") ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
'MsgBox("Programmfehler bei der digitalen Signatur.") 'MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
Else
BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!!
End If
End If End If
End If End If

View File

@@ -66,6 +66,8 @@ Partial Class frmKassenbuch
Me.Label14 = New System.Windows.Forms.Label() Me.Label14 = New System.Windows.Forms.Label()
Me.Label13 = New System.Windows.Forms.Label() Me.Label13 = New System.Windows.Forms.Label()
Me.pnlMain = New System.Windows.Forms.Panel() Me.pnlMain = New System.Windows.Forms.Panel()
Me.pbInitialStart = New System.Windows.Forms.PictureBox()
Me.lblInitStart = New System.Windows.Forms.Label()
Me.lblFiskaltrustHeader = New System.Windows.Forms.Label() Me.lblFiskaltrustHeader = New System.Windows.Forms.Label()
Me.picTSEOnline = New System.Windows.Forms.PictureBox() Me.picTSEOnline = New System.Windows.Forms.PictureBox()
Me.lblTSEOnline = New System.Windows.Forms.Label() Me.lblTSEOnline = New System.Windows.Forms.Label()
@@ -95,8 +97,6 @@ Partial Class frmKassenbuch
Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem() Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem()
Me.Button1 = New System.Windows.Forms.Button() Me.Button1 = New System.Windows.Forms.Button()
Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.lblInitStart = New System.Windows.Forms.Label()
Me.pbInitialStart = New System.Windows.Forms.PictureBox()
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnlTop.SuspendLayout() Me.pnlTop.SuspendLayout()
@@ -104,13 +104,13 @@ Partial Class frmKassenbuch
Me.pnlSuche.SuspendLayout() Me.pnlSuche.SuspendLayout()
Me.pnlSearch.SuspendLayout() Me.pnlSearch.SuspendLayout()
Me.pnlMain.SuspendLayout() Me.pnlMain.SuspendLayout()
CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout() Me.pnl.SuspendLayout()
CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
' '
'Label2 'Label2
@@ -668,6 +668,29 @@ Partial Class frmKassenbuch
Me.pnlMain.Size = New System.Drawing.Size(778, 433) Me.pnlMain.Size = New System.Drawing.Size(778, 433)
Me.pnlMain.TabIndex = 425 Me.pnlMain.TabIndex = 425
' '
'pbInitialStart
'
Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok
Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.pbInitialStart.Location = New System.Drawing.Point(614, 67)
Me.pbInitialStart.Name = "pbInitialStart"
Me.pbInitialStart.Size = New System.Drawing.Size(27, 20)
Me.pbInitialStart.TabIndex = 452
Me.pbInitialStart.TabStop = False
Me.pbInitialStart.Visible = False
'
'lblInitStart
'
Me.lblInitStart.AutoSize = True
Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblInitStart.ForeColor = System.Drawing.Color.Black
Me.lblInitStart.Location = New System.Drawing.Point(655, 71)
Me.lblInitStart.Name = "lblInitStart"
Me.lblInitStart.Size = New System.Drawing.Size(70, 16)
Me.lblInitStart.TabIndex = 451
Me.lblInitStart.Text = "Initial Start "
Me.lblInitStart.Visible = False
'
'lblFiskaltrustHeader 'lblFiskaltrustHeader
' '
Me.lblFiskaltrustHeader.AutoSize = True Me.lblFiskaltrustHeader.AutoSize = True
@@ -834,7 +857,7 @@ Partial Class frmKassenbuch
Me.lbldailyCashboxClosing.AutoSize = True Me.lbldailyCashboxClosing.AutoSize = True
Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red
Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(361, 5) Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(363, 5)
Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing" Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing"
Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16) Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16)
Me.lbldailyCashboxClosing.TabIndex = 436 Me.lbldailyCashboxClosing.TabIndex = 436
@@ -972,7 +995,7 @@ Partial Class frmKassenbuch
'lblRKSV_KASSEN_Bez 'lblRKSV_KASSEN_Bez
' '
Me.lblRKSV_KASSEN_Bez.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblRKSV_KASSEN_Bez.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(463, 3) Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(542, 3)
Me.lblRKSV_KASSEN_Bez.Name = "lblRKSV_KASSEN_Bez" Me.lblRKSV_KASSEN_Bez.Name = "lblRKSV_KASSEN_Bez"
Me.lblRKSV_KASSEN_Bez.Size = New System.Drawing.Size(231, 13) Me.lblRKSV_KASSEN_Bez.Size = New System.Drawing.Size(231, 13)
Me.lblRKSV_KASSEN_Bez.TabIndex = 426 Me.lblRKSV_KASSEN_Bez.TabIndex = 426
@@ -1025,29 +1048,6 @@ Partial Class frmKassenbuch
Me.cm_FT.Name = "ContextMenuStrip1" Me.cm_FT.Name = "ContextMenuStrip1"
Me.cm_FT.Size = New System.Drawing.Size(61, 4) Me.cm_FT.Size = New System.Drawing.Size(61, 4)
' '
'lblInitStart
'
Me.lblInitStart.AutoSize = True
Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblInitStart.ForeColor = System.Drawing.Color.Black
Me.lblInitStart.Location = New System.Drawing.Point(655, 71)
Me.lblInitStart.Name = "lblInitStart"
Me.lblInitStart.Size = New System.Drawing.Size(70, 16)
Me.lblInitStart.TabIndex = 451
Me.lblInitStart.Text = "Initial Start "
Me.lblInitStart.Visible = False
'
'pbInitialStart
'
Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok
Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.pbInitialStart.Location = New System.Drawing.Point(614, 67)
Me.pbInitialStart.Name = "pbInitialStart"
Me.pbInitialStart.Size = New System.Drawing.Size(27, 20)
Me.pbInitialStart.TabIndex = 452
Me.pbInitialStart.TabStop = False
Me.pbInitialStart.Visible = False
'
'frmKassenbuch 'frmKassenbuch
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1072,6 +1072,7 @@ Partial Class frmKassenbuch
Me.pnlSearch.PerformLayout() Me.pnlSearch.PerformLayout()
Me.pnlMain.ResumeLayout(False) Me.pnlMain.ResumeLayout(False)
Me.pnlMain.PerformLayout() Me.pnlMain.PerformLayout()
CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit()
@@ -1079,7 +1080,6 @@ Partial Class frmKassenbuch
CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit()
Me.pnl.ResumeLayout(False) Me.pnl.ResumeLayout(False)
Me.pnl.PerformLayout() Me.pnl.PerformLayout()
CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False) Me.ResumeLayout(False)
End Sub End Sub

View File

@@ -1,5 +1,4 @@
Imports GrapeCity.DataVisualization.TypeScript Imports DocumentFormat.OpenXml.Drawing
Imports SDL.RKSVServer
Public Class frmKassenbuch Public Class frmKassenbuch
Dim SQL As New SQL Dim SQL As New SQL
@@ -22,6 +21,7 @@ Public Class frmKassenbuch
Dim InitialStartIsCreated As Boolean = True Dim InitialStartIsCreated As Boolean = True
Dim OutOfOrderIsCreated As Boolean = False Dim OutOfOrderIsCreated As Boolean = False
Dim TSEIsOnline As Boolean = False Dim TSEIsOnline As Boolean = False
Dim MiddlewareIsOnline As Boolean = False
Dim isADMIN As Boolean = False Dim isADMIN As Boolean = False
@@ -106,7 +106,7 @@ Public Class frmKassenbuch
End Sub End Sub
Private Sub InitFiskaltrust(isOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean) Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean)
lblTSEOnline.Visible = True lblTSEOnline.Visible = True
lblTages.Visible = True lblTages.Visible = True
@@ -123,7 +123,7 @@ Public Class frmKassenbuch
picTSEOnline.Visible = True picTSEOnline.Visible = True
pbInitialStart.Visible = True pbInitialStart.Visible = True
showPic(isOnline, picTSEOnline) showPic(TSEisOnline, picTSEOnline)
showPic(tagesabschluss, picTages) showPic(tagesabschluss, picTages)
showPic(monatsabschlussIsSet, picMonats) showPic(monatsabschlussIsSet, picMonats)
showPic(Jahresabschluss, picJahres) showPic(Jahresabschluss, picJahres)
@@ -158,9 +158,6 @@ Public Class frmKassenbuch
btnBelegAusgang.Enabled = False btnBelegAusgang.Enabled = False
pnl.Visible = True pnl.Visible = True
'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " & 'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " & ' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " &
' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " & ' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
@@ -209,7 +206,12 @@ Public Class frmKassenbuch
End If End If
If PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing Then lbldailyCashboxClosing.Text = ""
If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
If client_chilkat.isFiskaltrust() Then
resetFIskaltrust() resetFIskaltrust()
@@ -229,9 +231,7 @@ Public Class frmKassenbuch
End If End If
If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then
OutOfOrderIsCreated = True OutOfOrderIsCreated = True
End If End If
@@ -239,22 +239,39 @@ Public Class frmKassenbuch
InitialStartIsCreated = False InitialStartIsCreated = False
End If End If
Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ") Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ")
If result IsNot Nothing Then
If result.Contains("VERBINDUNG OK") Then If result.Contains("VERBINDUNG OK") Then
TSEIsOnline = True TSEIsOnline = True
MiddlewareIsOnline = True
Else
TSEIsOnline = False
MiddlewareIsOnline = True
End If End If
Else
TSEIsOnline = False
MiddlewareIsOnline = False
End If
InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated)
If Not NULLBelegIsCreated Then If Not MiddlewareIsOnline Then
diasableBarverkauf("NULLBELEG") diasableBarverkauf("MIDDLEWARE")
ElseIf Not InitialStartIsCreated Then
diasableBarverkauf("INITIALSTART")
ElseIf tagesabschlussIsSet Then ElseIf tagesabschlussIsSet Then
diasableBarverkauf("TAGESABSCHLUSS") diasableBarverkauf("TAGESABSCHLUSS")
ElseIf OutOfOrderIsCreated Then ElseIf OutOfOrderIsCreated Then
diasableBarverkauf("OUTOFORDER") diasableBarverkauf("OUTOFORDER")
Else Else
lbldailyCashboxClosing.Text = ""
If Not TSEIsOnline Then
lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!"
End If
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
btnBelegKunde.Enabled = True btnBelegKunde.Enabled = True
btnBelegAusgang.Enabled = True btnBelegAusgang.Enabled = True
@@ -269,6 +286,8 @@ Public Class frmKassenbuch
Button11.Visible = False Button11.Visible = False
End If End If
End If
' Label9.Text = PERSONAL.Name ' Label9.Text = PERSONAL.Name
DataGridView2.ClearSelection() DataGridView2.ClearSelection()
@@ -277,9 +296,11 @@ Public Class frmKassenbuch
Private Sub diasableBarverkauf(status) Private Sub diasableBarverkauf(status)
Select Case status Select Case status
Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde noch kein 0-Beleg über FT erstellt!" ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)"
Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!" Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!"
Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!"
Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!" Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!"
Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!"
End Select End Select
btnBelegKunde.Enabled = False btnBelegKunde.Enabled = False
@@ -321,7 +342,7 @@ Public Class frmKassenbuch
End Sub End Sub
Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year) Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year)
Sub initDgv() Sub initDgv(Optional isFiskaltrust As Boolean = False)
With DataGridView2 With DataGridView2
.Columns.Clear() .Columns.Clear()
@@ -343,9 +364,10 @@ Public Class frmKassenbuch
If PERSONAL.isLeihgeldkasse Then If PERSONAL.isLeihgeldkasse Then
lgTxt = ",[Fahrer],[Passnummer] " lgTxt = ",[Fahrer],[Passnummer] "
End If End If
.SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " &
" CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" & " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert,[FT_MissingSignature]" &
" FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " & " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' AND b.rksv_BelegId > -1" &
" ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL") " ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL")
' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " & ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " &
' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & ' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP &
@@ -385,10 +407,22 @@ Public Class frmKassenbuch
.Columns("Passnummer").Visible = False .Columns("Passnummer").Visible = False
End If End If
If .Columns.Contains("FT_MissingSignature") Then
.Columns("FT_MissingSignature").HeaderText = "fehl Sig."
.Columns("FT_MissingSignature").Width = 45
For Each r As DataGridViewRow In .Rows
If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then
r.DefaultCellStyle.ForeColor = Color.Red
End If
Next
End If
If master_Kasse Then If master_Kasse Then
.Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master
End If End If
For Each r As DataGridViewRow In .Rows For Each r As DataGridViewRow In .Rows
If r.Cells("storniert").Value = "JA" Then If r.Cells("storniert").Value = "JA" Then
r.DefaultCellStyle.ForeColor = Color.Red r.DefaultCellStyle.ForeColor = Color.Red
@@ -1160,9 +1194,11 @@ Public Class frmKassenbuch
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub Exit Sub
Else
BELEGTmp.rksv_qr = QRQString
End If End If
Else Else
@@ -1242,7 +1278,7 @@ Public Class frmKassenbuch
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub Exit Sub
End If End If
@@ -1546,6 +1582,8 @@ Public Class frmKassenbuch
Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click
cm_FT.Items.Clear()
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
'nur im Testsystem! 'nur im Testsystem!
If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then
@@ -1574,7 +1612,7 @@ Public Class frmKassenbuch
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
End If End If
If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then
Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cm_FT.Items.Add(plose) cm_FT.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
@@ -1634,6 +1672,13 @@ Public Class frmKassenbuch
cm_FT.Items.Add(ids) cm_FT.Items.Add(ids)
End If End If
If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then
Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .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) cm_FT.Show(Cursor.Position)
End Sub End Sub
@@ -1674,6 +1719,93 @@ Public Class frmKassenbuch
End If End If
ElseIf item.Name = "setMissingSignatures" Then
Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL")
If dt.Rows.Count = 0 Then
MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!")
Return False
End If
If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then
Dim result As Boolean = False
For Each r As DataRow In dt.Rows
Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat"))
Dim summeBRUTTO As Double = BELEG.rksv_umsatz
Dim QR_CodeString As String = ""
Dim LastJWS As String = ""
Dim EA As String = ""
Dim kindOfReceiptCase As String = ""
Select Case BELEG.Beleg_TYP
Case "0"
Continue For 'null Belege nicht senden!
Case "E" 'Eingang/Ausgang
If BELEG.Belegart = "1" Then
EA = "E"
Else
EA = "A"
End If
Case "L"
If BELEG.Belegart = "1" Then
EA = "E"
Else
EA = "A"
End If
Case Else
If BELEG.Belegart = "1" Then
EA = "E"
Else
EA = "A"
End If
End Select
kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG
result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference)
If result Then
BELEG.FT_MissingSignature = False
BELEG.SAVE()
Else
MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!")
BELEG.FT_MissingSignature = False
BELEG.FT_setMissingSignatureFailed = True
BELEG.SAVE()
End If
Next
If result Then
init()
End If
End If
ElseIf item.Name = "tempoutoforder" Then
If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
rksv.SET_OUTOFORDERBELEG()
init()
End If
End If
ElseIf item.Name = "outoforder" Then ElseIf item.Name = "outoforder" Then
@@ -1701,7 +1833,7 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignOInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id)
If result <> "" Then If result <> "" Then
@@ -1733,7 +1865,7 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then
Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id) Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline)
If result <> "" Then If result <> "" Then
@@ -1754,7 +1886,7 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id) Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline)
If result <> "" Then If result <> "" Then

View File

@@ -1,5 +1,6 @@
 
Imports GrapeCity.ActiveReports Imports GrapeCity.ActiveReports
Imports java.security.acl
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
Public Class frmNacherfassungLeihgeld Public Class frmNacherfassungLeihgeld
@@ -363,12 +364,17 @@ Public Class frmNacherfassungLeihgeld
Dim QR_CodeString As String = "" Dim QR_CodeString As String = ""
Dim LastJWS As String = "" Dim LastJWS As String = ""
Dim isFiskaltrust As Boolean = False Dim isFiskaltrust As Boolean = False
If KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
isFiskaltrust = client_chilkat.isFiskaltrust()
End If
If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt
Dim answer = "" Dim answer = ""
Dim verarbeitet As Boolean = False Dim verarbeitet As Boolean = False
If KASSE.rksv_FT_RestServiceURL <> "" Then If isFiskaltrust Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf")
'result.Wait() 'result.Wait()
verarbeitet = result verarbeitet = result
@@ -376,7 +382,10 @@ Public Class frmNacherfassungLeihgeld
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 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 End If
If Not verarbeitet AndAlso Not isFiskaltrust Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not isFiskaltrust Then
If Not TESTBUCHUNG Then If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1) KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma) cRKSV.DELETE(BELEG, KASSE.rksv_firma)
@@ -386,8 +395,15 @@ Public Class frmNacherfassungLeihgeld
'BELEG = cRKSV.STORNO(BELEG, "Programmfehler") 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
' MsgBox("Programmfehler bei der digitalen Signatur.") ' MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
Else
BELEG.FT_MissingSignature = True
End If End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If
If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If End If

View File

@@ -3147,13 +3147,13 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END" sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END"
End Select End Select
sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag, sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription,tbl_IDS_Stationen.OutletName, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter, case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag], Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag],
case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & " WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & "
GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz; GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz,tbl_IDS_Stationen.OutletName;
" "
Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL")
@@ -3210,7 +3210,12 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "") rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "")
rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "")
rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") Dim Station As String = SQL.isDbnullEmpty(rpt.Fields.Item("OutletName").Value, "")
If Station <> "" Then
Station = " (" & Station & ")"
End If
rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station
rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "") rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "")
rpt.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "") rpt.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "")

View File

@@ -64,6 +64,10 @@ Public Class cNCTSGestellungsadressen
Public Function SAVE() As Boolean Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
If Not VERAG_PROG_ALLGEMEIN.cProgramFunctions.ValidateSQLFieldLengths(list, "tblNCTSGestellungsadressen", "", "FMZOLL") Then
Return False
End If
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblNCTSGestellungsadressen WITH(updlock,serializable) WHERE nga_id=@nga_id) " & Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblNCTSGestellungsadressen WITH(updlock,serializable) WHERE nga_id=@nga_id) " &
" BEGIN " & getUpdateCmd() & " END " & " BEGIN " & getUpdateCmd() & " END " &

View File

@@ -2512,7 +2512,7 @@ Public Class DATENVERVER_OPTIONS
End Function End Function
Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String) As String Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String, Optional fixedIssuerAssignedID As Boolean = True) As String
Dim tempFile As String = pdfPath & ".tmp" Dim tempFile As String = pdfPath & ".tmp"
@@ -2522,6 +2522,12 @@ Public Class DATENVERVER_OPTIONS
Dim xmlBytes = File.ReadAllBytes(xmlPath) Dim xmlBytes = File.ReadAllBytes(xmlPath)
If fixedIssuerAssignedID Then
fixIssuerAssignedID(xmlBytes)
End If
Dim fileName As String = "factur-x.xml" Dim fileName As String = "factur-x.xml"
If HasAttachment(pdf, fileName) Then If HasAttachment(pdf, fileName) Then
@@ -2557,6 +2563,75 @@ Public Class DATENVERVER_OPTIONS
End Function End Function
Public Shared Sub fixIssuerAssignedID(ByRef xmlBytes As Byte())
Dim xmlDoc As New System.Xml.XmlDocument()
xmlDoc.PreserveWhitespace = True
Using ms As New MemoryStream(xmlBytes)
xmlDoc.Load(ms)
End Using
Dim ns As New System.Xml.XmlNamespaceManager(xmlDoc.NameTable)
ns.AddNamespace(
"ram",
"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
)
Dim documents = xmlDoc.SelectNodes(
"//ram:AdditionalReferencedDocument",
ns
)
For Each document As XmlElement In documents
Dim idNode As XmlNode =
document.SelectSingleNode("ram:ID", ns)
If idNode Is Nothing Then
Continue For
End If
' Wert der bisherigen ID merken
Dim idValue As String = idNode.InnerText
' Neue IssuerAssignedID erzeugen
Dim issuerAssignedID As XmlElement =
xmlDoc.CreateElement(
"ram",
"IssuerAssignedID",
"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
)
issuerAssignedID.InnerText = idValue
' ID entfernen
document.RemoveChild(idNode)
' IssuerAssignedID an ERSTE Stelle setzen
document.InsertBefore(
issuerAssignedID,
document.FirstChild
)
Next
Using ms As New MemoryStream()
xmlDoc.Save(ms)
xmlBytes = ms.ToArray()
End Using
End Sub
Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean
Dim catalog = pdf.GetCatalog().GetPdfObject() Dim catalog = pdf.GetCatalog().GetPdfObject()

View File

@@ -225,7 +225,13 @@ Public Class cVERAG_CustomsDeclarations
' CBAM Pattern (HSCode) ' CBAM Pattern (HSCode)
' ------------------------------------------------------------ ' ------------------------------------------------------------
Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode") Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode")
Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") &
" AND zaItem_OriginCountry NOT IN (
'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR',
'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL',
'PL','PT','RO','SK','SI','ES','SE',
'CH','NO','IS','LI','XI'
)"
Dim cbamWhereISOCntry As String = " i.zaItem_OriginCountry NOT IN ( Dim cbamWhereISOCntry As String = " i.zaItem_OriginCountry NOT IN (
/*EU-27 (ISO2)*/ /*EU-27 (ISO2)*/