diff --git a/SDL/Classes/cEABeleg.vb b/SDL/Classes/cEABeleg.vb
index 9cc921ff..76246071 100644
--- a/SDL/Classes/cEABeleg.vb
+++ b/SDL/Classes/cEABeleg.vb
@@ -284,6 +284,8 @@ Public Class EABeleg
Property EC_daid As Integer = 0
Property FT_ReceiptReference 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)
@@ -364,8 +366,13 @@ Public Class EABeleg
Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing)
Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), 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_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)
' 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("ECTerminalreturnCode", ECTerminalreturnCode))
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_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()
'If p.CanRead Then
diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb
index 7a44006a..60153005 100644
--- a/SDL/Classes/cFiskaltrustClient_chilkat.vb
+++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb
@@ -10,6 +10,7 @@ Public Class FtReceiptCases
' Test-/Nullbeleg
Public Const ZeroReceipt As Long = &H4445000000000002L
+ ' Kassenlebenszyklus
Public Const InitialOperation As Long = &H4445000000000003L
Public Const OutOfOperation As Long = &H4445000000000004L
@@ -22,6 +23,12 @@ Public Class FtReceiptCases
Public Const ImplicitTransaction As Long = &H100000000L
Public Const ReversalReceipt As Long = &H40000L
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
@@ -44,6 +51,17 @@ Public Class FtJournalType
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
'DE
@@ -71,25 +89,31 @@ Public Class cFiskaltrustClient_chilkat
Private ReadOnly _cashboxId As String
Private ReadOnly _accessToken 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)
_baseUrl = baseUrl.TrimEnd("/"c)
_cashboxId = cashboxId
_accessToken = accessToken
_country = country
+
+ If _cashboxId <> "" AndAlso baseUrl <> "" AndAlso _accessToken <> "" AndAlso _country <> "" Then
+ _isFiskaltrust = True
+ Else
+ _isFiskaltrust = False
+ End If
+
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
-
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, "")
-
- Return SendChilkat(GetEndpoint("payment"), payload.Emit())
-
+ Public Function isFiskaltrust() As Boolean
+ Return _isFiskaltrust
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 p = New EABelegPositionen
@@ -110,81 +134,134 @@ Public Class cFiskaltrustClient_chilkat
Dim vat = 0
Dim POS = LIST
Dim kindOfPayment = "Cash"
+ Try
+ Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "", TSEisOnline)
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "")
-
- 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
- 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
+
+ Try
+ Dim LIST = New List(Of EABelegPositionen)
+ Dim p = New EABelegPositionen
+ p.Mandant = "VERA"
+ p.Niederlassung = "SUB"
+ p.Benutzer = 74
+ p.BelegDat = Now
+ p.BelegNr = 1
+ p.PreislistenNr = 1
+ p.PreislistenPos = 1
+ p.LeistungsNr = 300
+ p.LeistungsBez = "TEST"
+ p.Preis = 10
+ p.Anzahl = 1
+ LIST.Add(p)
+
+ Dim amount = 100
+ Dim vat = 0
+ Dim POS = LIST
+ Dim kindOfPayment = "Cash"
+
+ 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
- Public Function ChancelReceipt_test(reference As String, posSystemId As String) As String
+ 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)
- Dim LIST = New List(Of EABelegPositionen)
- Dim p = New EABelegPositionen
- p.Mandant = "VERA"
- p.Niederlassung = "SUB"
- p.Benutzer = 74
- p.BelegDat = Now
- p.BelegNr = 1
- p.PreislistenNr = 1
- p.PreislistenPos = 1
- p.LeistungsNr = 300
- p.LeistungsBez = "TEST"
- p.Preis = 10
- p.Anzahl = 1
- LIST.Add(p)
+ 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
- Dim amount = 100
- Dim vat = 0
- Dim POS = LIST
- Dim kindOfPayment = "Cash"
-
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference)
-
- Return SendChilkat(GetEndpoint("storno"), payload.Emit())
End Function
-
Public Function SignNullReceipt(posSystemId As String) As String
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
+ Try
+ 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
Public Function SignOutOfOrderReceipt(posSystemId As String) As String
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit())
+ 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 SignOInitialOperationReceipt(posSystemId As String) As String
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit())
+ 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())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit())
+ Try
+ 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
Public Function Echo(kassenName As String) As String
+ Try
+ Dim json As New JsonObject()
+ json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
- Dim json As New JsonObject()
- 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
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
@@ -289,9 +366,12 @@ Public Class cFiskaltrustClient_chilkat
Throw lastEx
+
+
+
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()
@@ -312,49 +392,64 @@ Public Class cFiskaltrustClient_chilkat
If _receiptCase = "Storno" Then
- ' 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
+ If TSEisOnline Then
+ 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
' New reference for a normal receipt
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
-
- ' 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
- 'End Select
-
-
+ If TSEisOnline Then
+ receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction
+ Else
+ receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
+ End If
End If
json.UpdateString("ftReceiptCase", receipCase.ToString())
-
-
Dim chargeItems = json.AppendArray("cbChargeItems")
For Each p In POS
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)
- item.UpdateInt("Quantity", p.Anzahl)
- item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", "."))
- item.UpdateNumber("VATRate", vat.ToString().Replace(",", "."))
+ item.UpdateInt("Quantity", quantity)
+ item.UpdateNumber("Amount", lineAmount)
+ item.UpdateNumber("VATRate", vat)
item.UpdateString("Description", p.LeistungsBez)
Dim ChargeItemCase As Long
@@ -430,8 +525,6 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("cbUser", "Admin")
json.UpdateString("ftReceiptCaseData", "")
-
-
Dim chargeItems = json.AppendArray("cbChargeItems")
Dim payItems = json.AppendArray("cbPayItems")
@@ -573,7 +666,14 @@ Public Class cFiskaltrustClient_chilkat
.ftReceiptIdentification = json.StringOf("ftReceiptIdentification")
.ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal)
.ftState = json.StringOf("ftState")
- .ftBeleg_ID = beleg_temp.BelegNr
+
+ If beleg_temp Is Nothing Then
+ .ftBeleg_ID = -1
+ Else
+ .ftBeleg_ID = beleg_temp.BelegNr
+ End If
+
+
saved = .SAVE()
If saved AndAlso beleg_temp IsNot Nothing Then
@@ -594,8 +694,8 @@ Public Class cFiskaltrustClient_chilkat
Dim num As Integer = json.SizeOfArray("ftSignatures")
If num = 0 Then
- MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen!")
- Return True
+ MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen" & vbNewLine & "Beleg kann nachträglich signiert werden!")
+ Return False
End If
Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
@@ -714,15 +814,8 @@ Public Class cFiskaltrustClient_chilkat
End If
-
-
End Function
-
- Private Sub Log(message As String)
- Console.WriteLine(message)
- End Sub
-
Public Function PrettyPrintJson(jsonText As String) As String
Dim json As New Chilkat.JsonObject()
diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb
index 0f51914b..9a7d3684 100644
--- a/SDL/Classes/cRKSV.vb
+++ b/SDL/Classes/cRKSV.vb
@@ -89,7 +89,7 @@ Public Class cRKSV
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
@@ -133,7 +133,7 @@ Public Class cRKSV
'End If
Else
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
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False)
Else
@@ -968,7 +968,7 @@ Public Class cRKSV
End Try
Return False
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
If beleg_temp.rksv_BelegId <= 0 Then
@@ -1013,7 +1013,7 @@ Public Class cRKSV
Else
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
client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True)
Else
diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb
index 767c9e86..bbc88c3f 100644
--- a/SDL/Fakturierung/cAutomailversand.vb
+++ b/SDL/Fakturierung/cAutomailversand.vb
@@ -404,6 +404,12 @@ Public Class cAutomailversand
Subject = Subject.Replace("%Belegtyp%", belegtyp)
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 = TextHTML.Replace("%Belegtyp%", belegtyp)
diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb
index 63659f44..22b04357 100644
--- a/SDL/Fakturierung/cFakturierung.vb
+++ b/SDL/Fakturierung/cFakturierung.vb
@@ -3058,6 +3058,9 @@ Public Class cFakturierung
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))
+
+
+
Select Case RECHNUNG.BelegartenKz
Case "AR"
desc.Name = "SPEDITIONSRECHNUNG"
@@ -3108,29 +3111,34 @@ Public Class cFakturierung
' 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
- desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA)
- If vatBuyer Then
- desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer)
- desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller)
+ desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA)
+ If vatBuyer Then
+ desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer)
+ desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller)
+ End If
+
+ End If
+ '-----------------------------
+ desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum)
+
+ Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0)
+ Dim steuerProzenFaktor As Double = 0
+ If steuerProzent > 0 AndAlso steuerProzent < 1 Then
+ steuerProzenFaktor = steuerProzent * 100
End If
- End If
- '-----------------------------
- desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum)
- Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0)
- Dim steuerProzenFaktor As Double = 0
- If steuerProzent > 0 AndAlso steuerProzent < 1 Then
- steuerProzenFaktor = steuerProzent * 100
- End If
+ Dim sumNetto As Double = 0
+ For Each p In RECHNUNG.POSITIONEN
-
- Dim sumNetto As Double = 0
- For Each p In RECHNUNG.POSITIONEN
-
- Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
+ Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
name:=p.LeistungsBez,
billedQuantity:=Convert.ToDecimal(p.Anzahl),
unitCode:=QuantityCodes.C62, ' immer in Stück
@@ -3140,27 +3148,27 @@ Public Class cFakturierung
taxPercent:=IIf(p.Steuerpflichtig, Convert.ToDecimal(RECHNUNG.Steuersatz_Proz * 100), 0),
taxType:=IIf(p.Steuerpflichtig, TaxTypes.VAT, TaxTypes.VAT)
)
- Dim netUnitPrice = Convert.ToDecimal(p.Preis)
- Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis))
- Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl)
- sumNetto += netPricePos
- Next
+ Dim netUnitPrice = Convert.ToDecimal(p.Preis)
+ Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis))
+ Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl)
+ sumNetto += netPricePos
+ Next
- 'Summe aller Rechnungspositions-Nettobeträge der Rechnung
- Dim lineTotalAmont = sumNetto
- 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung,
- 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ??????????????????
- Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0)
- ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0
- Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount)
- 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer
- 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
- Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
- 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag
- 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
- Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
+ 'Summe aller Rechnungspositions-Nettobeträge der Rechnung
+ Dim lineTotalAmont = sumNetto
+ 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung,
+ 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ??????????????????
+ Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0)
+ ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0
+ Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount)
+ 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer
+ 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
+ Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
+ 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag
+ 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
+ Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
- desc.SetTotals(
+ desc.SetTotals(
lineTotalAmount:=Convert.ToDecimal(lineTotalAmont),
chargeTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Zuschläge der Dokumentenebene
allowanceTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Abschläge der Dokumenteneben
@@ -3173,96 +3181,96 @@ Public Class cFakturierung
)
- desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum)
+ desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum)
- 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then
- ' desc.SetPaymentMeansSepaDirectDebit("", "")
- 'Else
- desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ)
- 'End If
+ 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then
+ ' desc.SetPaymentMeansSepaDirectDebit("", "")
+ 'Else
+ desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ)
+ 'End If
- Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG)
- If isReverseCharge Then
- Select Case RECHNUNG.RechnungSprache
- Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI)
- Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI)
- End Select
- End If
+ Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG)
+ If isReverseCharge Then
+ Select Case RECHNUNG.RechnungSprache
+ Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI)
+ Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI)
+ End Select
+ End If
- If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then
- desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z)
- End If
+ If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then
+ desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z)
+ End If
- If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then
- desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S))
- End If
+ If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then
+ desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S))
+ End If
- Select Case FIRMA.Firma_ID
- Case 21, 22, 23 '"UNISPED"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Select Case FIRMA.Firma_ID
+ Case 21, 22, 23 '"UNISPED"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- Case 26 'VERAG-UNISPED"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Case 26 'VERAG-UNISPED"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- Case 24 'AMBAR"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- 'Änderung Ticket_Nr.: 6983
- 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
- desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
+ Case 24 'AMBAR"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ 'Änderung Ticket_Nr.: 6983
+ 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
+ desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
- Case 20 '"IMEX"
- If RECHNUNG.RechnungsLandKz = "TR" Then
- desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank")
- Else
- If hasVK(RECHNUNG) Then
- desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG")
+ Case 20 '"IMEX"
+ If RECHNUNG.RechnungsLandKz = "TR" Then
+ desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank")
Else
- If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then
- desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", )
+ If hasVK(RECHNUNG) Then
+ desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG")
Else
- desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG")
+ If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then
+ desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", )
+ Else
+ desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG")
+ End If
End If
End If
- End If
- Case 19
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ Case 19
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- Case Else 'VERAG,ATILLA
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Case Else 'VERAG,ATILLA
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- End Select
+ End Select
- Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False)
+ Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False)
- Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None)
- desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
- End Using
+ Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None)
+ desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
+ End Using
- Return tmpPathZugpferd
+ Return tmpPathZugpferd
- 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write)
- 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
+ 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write)
+ 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
- 'stream.Flush()
- 'stream.Close()
- 'Return tmpPathZugpferd
+ 'stream.Flush()
+ 'stream.Close()
+ 'Return tmpPathZugpferd
- ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then
+ ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then
- '---------------------------------------------------------------------------------
- '--------------------------------SAMMELRECHNUNG-----------------------------------
- '---------------------------------------------------------------------------------
+ '---------------------------------------------------------------------------------
+ '--------------------------------SAMMELRECHNUNG-----------------------------------
+ '---------------------------------------------------------------------------------
- Dim ROW As DataRow = SR_DT.Rows(0)
+ Dim ROW As DataRow = SR_DT.Rows(0)
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(ROW("Firma_ID"))
Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr"))
@@ -3297,6 +3305,17 @@ Public Class cFakturierung
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
'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.
diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb
index 2f7ad9f8..ee05eec8 100644
--- a/SDL/Formulare/KDFormulare/frmFormulare.vb
+++ b/SDL/Formulare/KDFormulare/frmFormulare.vb
@@ -5,7 +5,9 @@ Imports System.Reflection
Imports System.Text.RegularExpressions
Imports System.Windows.Documents
Imports com.sun.tools.internal.ws.wsdl.document.mime
+Imports DAKOSY_Worker.Abgabenbescheid_008
Imports GrapeCity.ActiveReports
+Imports GrapeCity.DataVisualization.TypeScript
Imports itextsharp.text.pdf
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
@@ -1171,136 +1173,136 @@ Public Class frmFormulare
For Each c In MyFlowLayoutPanel1.Controls
- Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail)
- For Each pfad In pfadList
- If pfad <> "" Then list.Add(pfad)
- Next
+ Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail)
+ For Each pfad In pfadList
+ If pfad <> "" Then list.Add(pfad)
Next
+ Next
- Dim dest_path = ""
- If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub
+ Dim dest_path = ""
+ If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub
- If list.Count = 1 Then
- dest_path = list(0)
- Else
- dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False)
- If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
- dest_path = "" : MsgBox("Fehler PDF")
- End If
+ If list.Count = 1 Then
+ dest_path = list(0)
+ Else
+ dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False)
+ If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
+ dest_path = "" : MsgBox("Fehler PDF")
End If
+ End If
- If dest_path <> "" Then
- If sender Is Button2 Then
- Process.Start(dest_path)
- ElseIf sender Is btn Then
- 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path)
- Try
+ If dest_path <> "" Then
+ If sender Is Button2 Then
+ Process.Start(dest_path)
+ ElseIf sender Is btn Then
+ 'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path)
+ Try
If listMail IsNot Nothing AndAlso listMail.Count > 0 Then
- For Each l In listMail
- Dim outl As New Outlook.Application
-
- Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
- Mail = outl.CreateItem(0)
-
- 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl)
- 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc
-
- If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText
- If l.Mail_To <> "" Then Mail.To = l.Mail_To
- If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC
- If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC
- If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject
-
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
- Try
- Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR")
- Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True)
- Catch ex2 As Exception
- MsgBox(ex2.Message)
- End Try
- End If
-
- Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf")
- Mail.Display()
-
- Next
- Else
+ For Each l In listMail
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
- 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl))
'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl)
- 'Mail.SendUsingAccount = outl.Session.DefaultAccount
+ 'If StandAcc IsNot Nothing Then Mail.SendUsingAccount = StandAcc
+ If l.MailHTMLText <> "" Then Mail.HTMLBody = l.MailHTMLText
+ If l.Mail_To <> "" Then Mail.To = l.Mail_To
+ If l.Mail_CC <> "" Then Mail.CC = l.Mail_CC
+ If l.Mail_BCC <> "" Then Mail.CC = l.Mail_BCC
+ If l.Mail_Subject <> "" Then Mail.Subject = l.Mail_Subject
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
Try
Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR")
- Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True)
+ Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, False, True)
Catch ex2 As Exception
MsgBox(ex2.Message)
End Try
-
-
End If
- If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text
- If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then
- Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA)
- Dim TextHTML = ""
- TextHTML &= tX.txt_text
- TextHTML &= "
"
- TextHTML &= "
"
- TextHTML &= "Mit freundlichen Grüßen
"
- TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
"
- TextHTML &= "
"
- TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True)
+ Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf")
+ Mail.Display()
+
+ Next
+ Else
+ Dim outl As New Outlook.Application
+
+ Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
+ Mail = outl.CreateItem(0)
+
+ 'MsgBox(VERAG_PROG_ALLGEMEIN.cProgramFunctions.printdefaultOutlookAccount(outl))
+ 'Dim StandAcc = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getdefaultOutlookAccount(outl)
+ 'Mail.SendUsingAccount = outl.Session.DefaultAccount
- Mail.HTMLBody = "
" & TextHTML & "
"
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
+ Try
+ Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR")
+ Mail.HTMLBody &= cFakturierung.getSignature(cboTextKonserveSprache._value, 24, True, True)
+ Catch ex2 As Exception
+ MsgBox(ex2.Message)
+ End Try
- Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ")
- If AVISO IsNot Nothing Then
- Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr)
- Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr)
- End If
- Mail.Subject = Mail.Subject.Replace("%LKW%", "")
- Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "")
+ End If
+ If Me.txtEmail.Text <> "" Then Mail.To = Me.txtEmail.Text
+ If cboTextkonserve._value <> "" AndAlso cboTextKonserveSprache._value <> "" Then
+ Dim tX As New VERAG_PROG_ALLGEMEIN.cTextkonserve("FRM_MNGR_MailText", cboTextkonserve._value, cboTextKonserveSprache._value, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA)
+
+ Dim TextHTML = ""
+ TextHTML &= tX.txt_text
+ TextHTML &= "
"
+ TextHTML &= "
"
+ TextHTML &= "Mit freundlichen Grüßen
"
+ TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
"
+ TextHTML &= "
"
+ TextHTML &= cFakturierung.getSignature(cboTextKonserveSprache._value, tX.txt_firmaSig, True, True)
+
+
+ Mail.HTMLBody = "" & TextHTML & "
"
+
+
+ Mail.Subject = IIf(tX.txt_betreff <> "", tX.txt_betreff, " ")
+ If AVISO IsNot Nothing Then
+ Mail.Subject = Mail.Subject.Replace("%LKW%", AVISO.LKW_Nr)
+ Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", AVISO.LKW_Nr)
End If
+ Mail.Subject = Mail.Subject.Replace("%LKW%", "")
+ Mail.Subject = Mail.Subject.Replace("%LKWKennzeichen%", "")
+ End If
Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf")
Mail.Display()
- End If
-
-
- 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg"
- ' Mail.SaveAs(matilPath)
- ' Process.Start(matilPath)
-
- Catch ex As Exception
- MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace)
- End Try
- ElseIf sender Is btnPrint Then
- 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "")
- If dest_path.ToUpper.EndsWith("PDF") Then
- VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString)
- Else
- VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString)
End If
+
+ 'Dim matilPath = "C:\TEMP\VERAG_Mail.msg"
+ ' Mail.SaveAs(matilPath)
+ ' Process.Start(matilPath)
+
+ Catch ex As Exception
+ MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message & ex.StackTrace)
+ End Try
+ ElseIf sender Is btnPrint Then
+ 'VERAG_PROG_ALLGEMEIN.cFormularManager.PrintFile(dest_path, "")
+ If dest_path.ToUpper.EndsWith("PDF") Then
+ VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaSpirePDF({dest_path}, cboPrinter.SelectedItem.ToString)
+ Else
+ VERAG_PROG_ALLGEMEIN.cFormularManager.PrintViaGS(dest_path, cboPrinter.SelectedItem.ToString)
End If
+
End If
End If
+ End If
- printed = True
+ printed = True
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
@@ -1316,7 +1318,10 @@ Public Class frmFormulare
Dim ADR As New cAdressen(KundenNr)
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
diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb
index 077620ca..79dcd172 100644
--- a/SDL/kassenbuch/frmBelegNeu.Designer.vb
+++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb
@@ -147,6 +147,7 @@ Partial Class frmBelegNeu
Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
Me.ContextMenuStrip1 = 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()
Me.pnl.SuspendLayout()
Me.pnlData.SuspendLayout()
@@ -648,6 +649,7 @@ Partial Class frmBelegNeu
'pnlData
'
Me.pnlData.BackColor = System.Drawing.Color.FromArgb(CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer))
+ Me.pnlData.Controls.Add(Me.lblTSEisOffline)
Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen)
Me.pnlData.Controls.Add(Me.lblErr_Fahrer)
Me.pnlData.Controls.Add(Me.lblErr_Pass)
@@ -1784,6 +1786,20 @@ Partial Class frmBelegNeu
Me.cm_FT.Name = "ContextMenuStrip1"
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
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
@@ -1935,4 +1951,5 @@ Partial Class frmBelegNeu
Friend WithEvents cboBuchungsoforterzeugen As CheckBox
Friend WithEvents Button4 As Button
Friend WithEvents cm_FT As ContextMenuStrip
+ Friend WithEvents lblTSEisOffline As Label
End Class
diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb
index 52ea50ad..b9551008 100644
--- a/SDL/kassenbuch/frmBelegNeu.vb
+++ b/SDL/kassenbuch/frmBelegNeu.vb
@@ -45,6 +45,7 @@ Public Class frmBelegNeu
Public aktFiliale 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)
@@ -231,9 +232,8 @@ Public Class frmBelegNeu
' Case "WAI" : cboFiliale.changeItem(5103)
' End Select
- If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then
- Button4.Visible = True
- End If
+
+ Button4.Visible = checkFiskaltrust()
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cboKassen.Enabled = True
@@ -1704,49 +1704,59 @@ Public Class frmBelegNeu
Dim answer = ""
Dim verarbeitet As Boolean = False
- Dim isFiskaltrust As Boolean = False
- 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")
- 'result.Wait()
- verarbeitet = result
- isFiskaltrust = True
- 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
- End If
+ Dim isFiskaltrust = checkFiskaltrust()
- If Not verarbeitet AndAlso Not isFiskaltrust Then
- If Not TESTBUCHUNG Then
-
- KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
- cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF)
+ verarbeitet = result
+ 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
End If
- Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer
- MsgBox(Errmsg, MsgBoxStyle.Critical)
- VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
- Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
+
+ If Not verarbeitet Then
+
+ If Not isFiskaltrust Then
+
+ If Not TESTBUCHUNG Then
+
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+
+ End If
+ Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer
+ MsgBox(Errmsg, MsgBoxStyle.Critical)
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
+ Else
+ BELEG.FT_MissingSignature = True
+ End If
+
+ If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+
+
+ End If
+
+
End If
- If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
-
- End If
- 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
- ' If Not TESTBUCHUNG Then
- ' KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1)
- ' cRKSV.DELETE(BELEG)
- ' End If
- ' MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' ' Me.Cursor = Cursors.Default
- ' 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- ' ' MsgBox("Programmfehler bei der digitalen Signatur.")
+ 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+ ' If Not TESTBUCHUNG Then
+ ' KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1)
+ ' cRKSV.DELETE(BELEG)
+ ' End If
+ ' MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' ' Me.Cursor = Cursors.Default
+ ' 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ ' ' MsgBox("Programmfehler bei der digitalen Signatur.")
- ' Return False
- 'End If
- 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+ ' Return False
+ 'End If
+ 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
- ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI")
- If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt
+ ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI")
+ If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt
Dim answer = ""
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
@@ -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
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
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
Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click
- If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
- 'nur im Testsystem!
- 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)}
+ If Not cm_FT.Items.ContainsKey("ft_neusignierung") AndAlso BELEG IsNot Nothing AndAlso (BELEG.gebucht Or BELEG.gebuchtStorno) AndAlso BELEG.FT_setMissingSignatureFailed Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Beleg neu signieren", .Name = "ft_neusignierung", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
@@ -1994,154 +1964,65 @@ 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)
- 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
+
+ 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"
+ Return False '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
- If result <> "" Then
+ 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!!!!!
- 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 = ""
- client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False)
+ If result Then
+ BELEG.FT_setMissingSignatureFailed = False
+ BELEG.SAVE()
+ MsgBox("Beleg erfolgreich gesendet!")
End If
- Else
- Return False
- End If
-
-
- 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 = "monthly" Then
-
- 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))
+ If result Then
+ init()
+ End If
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
- MsgBox("nicht für AT-Kassen möglich!")
- 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
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- If item.Name = "exportJournal" Then
- client_chilkat.exportJournal(result)
- End If
-
- End If
-
-
-
End If
diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb
index 57b3e6f8..7d179b2c 100644
--- a/SDL/kassenbuch/frmFremdbeleg.vb
+++ b/SDL/kassenbuch/frmFremdbeleg.vb
@@ -224,13 +224,16 @@ Public Class frmFremdbeleg
End If
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
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, 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()
verarbeitet = result
Else
@@ -238,17 +241,24 @@ Public Class frmFremdbeleg
End If
- If Not verarbeitet AndAlso Not isFiskaltrust 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)
+ If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+
+ If Not isFiskaltrust Then
+
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ End If
+ MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ 'MsgBox("Programmfehler bei der digitalen Signatur.")
+ Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
+ Else
+ BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!!
End If
- MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- 'MsgBox("Programmfehler bei der digitalen Signatur.")
- Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
+
+ End If
End If
- End If
If KASSE.rksvDE_aktiv Then
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb
index 297c5128..1a54abd4 100644
--- a/SDL/kassenbuch/frmKassenbuch.Designer.vb
+++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb
@@ -66,6 +66,8 @@ Partial Class frmKassenbuch
Me.Label14 = New System.Windows.Forms.Label()
Me.Label13 = New System.Windows.Forms.Label()
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.picTSEOnline = New System.Windows.Forms.PictureBox()
Me.lblTSEOnline = New System.Windows.Forms.Label()
@@ -95,8 +97,6 @@ Partial Class frmKassenbuch
Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem()
Me.Button1 = New System.Windows.Forms.Button()
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.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnlTop.SuspendLayout()
@@ -104,13 +104,13 @@ Partial Class frmKassenbuch
Me.pnlSuche.SuspendLayout()
Me.pnlSearch.SuspendLayout()
Me.pnlMain.SuspendLayout()
+ CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout()
- CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Label2
@@ -668,6 +668,29 @@ Partial Class frmKassenbuch
Me.pnlMain.Size = New System.Drawing.Size(778, 433)
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
'
Me.lblFiskaltrustHeader.AutoSize = True
@@ -834,7 +857,7 @@ Partial Class frmKassenbuch
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.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.Size = New System.Drawing.Size(410, 16)
Me.lbldailyCashboxClosing.TabIndex = 436
@@ -972,7 +995,7 @@ Partial Class frmKassenbuch
'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.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.Size = New System.Drawing.Size(231, 13)
Me.lblRKSV_KASSEN_Bez.TabIndex = 426
@@ -1025,29 +1048,6 @@ Partial Class frmKassenbuch
Me.cm_FT.Name = "ContextMenuStrip1"
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
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1072,6 +1072,7 @@ Partial Class frmKassenbuch
Me.pnlSearch.PerformLayout()
Me.pnlMain.ResumeLayout(False)
Me.pnlMain.PerformLayout()
+ CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picNULLbeleg, 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()
Me.pnl.ResumeLayout(False)
Me.pnl.PerformLayout()
- CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb
index 57484f9c..599a1bfb 100644
--- a/SDL/kassenbuch/frmKassenbuch.vb
+++ b/SDL/kassenbuch/frmKassenbuch.vb
@@ -1,5 +1,4 @@
-Imports GrapeCity.DataVisualization.TypeScript
-Imports SDL.RKSVServer
+Imports DocumentFormat.OpenXml.Drawing
Public Class frmKassenbuch
Dim SQL As New SQL
@@ -22,6 +21,7 @@ Public Class frmKassenbuch
Dim InitialStartIsCreated As Boolean = True
Dim OutOfOrderIsCreated As Boolean = False
Dim TSEIsOnline As Boolean = False
+ Dim MiddlewareIsOnline As Boolean = False
Dim isADMIN As Boolean = False
@@ -106,7 +106,7 @@ Public Class frmKassenbuch
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
lblTages.Visible = True
@@ -123,7 +123,7 @@ Public Class frmKassenbuch
picTSEOnline.Visible = True
pbInitialStart.Visible = True
- showPic(isOnline, picTSEOnline)
+ showPic(TSEisOnline, picTSEOnline)
showPic(tagesabschluss, picTages)
showPic(monatsabschlussIsSet, picMonats)
showPic(Jahresabschluss, picJahres)
@@ -158,9 +158,6 @@ Public Class frmKassenbuch
btnBelegAusgang.Enabled = False
pnl.Visible = True
-
-
-
'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 " &
' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
@@ -209,64 +206,86 @@ Public Class frmKassenbuch
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 = ""
- resetFIskaltrust()
-
- lbldailyCashboxClosing.Visible = True
- Button11.Visible = True
-
- Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
- If tagesabschluss > 0 Then tagesabschlussIsSet = True
-
- Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
- If monatsabschluss > 0 Then monatsabschlussIsSet = True
-
- Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
- If jahresabschluss > 0 Then jahresabschlussIsSet = True
- If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then
- NULLBelegIsCreated = False
- End If
-
- If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then
-
- OutOfOrderIsCreated = True
-
- End If
-
-
- If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then
- InitialStartIsCreated = False
- End If
+ 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)
- Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ")
+ If client_chilkat.isFiskaltrust() Then
- If result.Contains("VERBINDUNG OK") Then
- TSEIsOnline = True
- End If
+ resetFIskaltrust()
- InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated)
+ lbldailyCashboxClosing.Visible = True
+ Button11.Visible = True
- If Not NULLBelegIsCreated Then
- diasableBarverkauf("NULLBELEG")
- ElseIf tagesabschlussIsSet Then
- diasableBarverkauf("TAGESABSCHLUSS")
- ElseIf OutOfOrderIsCreated Then
- diasableBarverkauf("OUTOFORDER")
- Else
- If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
- btnBelegKunde.Enabled = True
- btnBelegAusgang.Enabled = True
- btnBelegEingang.Enabled = True
- btnBelegGSKunde.Enabled = True
- btnBelegLeihgeld.Enabled = True
- btnStorno.Enabled = True
+ Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If tagesabschluss > 0 Then tagesabschlussIsSet = True
+
+ Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If monatsabschluss > 0 Then monatsabschlussIsSet = True
+
+ Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If jahresabschluss > 0 Then jahresabschlussIsSet = True
+ If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then
+ NULLBelegIsCreated = False
End If
+
+ If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then
+ OutOfOrderIsCreated = True
+ End If
+
+
+ If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then
+ InitialStartIsCreated = False
+ End If
+
+ 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
+ TSEIsOnline = True
+ MiddlewareIsOnline = True
+ Else
+ TSEIsOnline = False
+ MiddlewareIsOnline = True
+ End If
+ Else
+ TSEIsOnline = False
+ MiddlewareIsOnline = False
+
+ End If
+
+
+ InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated)
+
+ If Not MiddlewareIsOnline Then
+ diasableBarverkauf("MIDDLEWARE")
+ ElseIf Not InitialStartIsCreated Then
+ diasableBarverkauf("INITIALSTART")
+ ElseIf tagesabschlussIsSet Then
+ diasableBarverkauf("TAGESABSCHLUSS")
+ ElseIf OutOfOrderIsCreated Then
+ diasableBarverkauf("OUTOFORDER")
+ 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
+ btnBelegKunde.Enabled = True
+ btnBelegAusgang.Enabled = True
+ btnBelegEingang.Enabled = True
+ btnBelegGSKunde.Enabled = True
+ btnBelegLeihgeld.Enabled = True
+ btnStorno.Enabled = True
+ End If
+ End If
+ Else
+ lbldailyCashboxClosing.Visible = False
+ Button11.Visible = False
End If
- Else
- lbldailyCashboxClosing.Visible = False
- Button11.Visible = False
+
End If
@@ -277,9 +296,11 @@ Public Class frmKassenbuch
Private Sub diasableBarverkauf(status)
Select Case status
- Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde noch kein 0-Beleg über FT erstellt!"
- Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss für heute wurde bereits durchgeführt!"
+ ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)"
+ 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 "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!"
End Select
btnBelegKunde.Enabled = False
@@ -321,7 +342,7 @@ Public Class frmKassenbuch
End Sub
Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year)
- Sub initDgv()
+ Sub initDgv(Optional isFiskaltrust As Boolean = False)
With DataGridView2
.Columns.Clear()
@@ -343,9 +364,10 @@ Public Class frmKassenbuch
If PERSONAL.isLeihgeldkasse Then
lgTxt = ",[Fahrer],[Passnummer] "
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, " &
- " 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" &
- " 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 & "' " &
+ " 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 & "' AND b.rksv_BelegId > -1" &
" 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, " &
' " 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
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
.Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master
End If
+
For Each r As DataGridViewRow In .Rows
If r.Cells("storniert").Value = "JA" Then
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
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)
Exit Sub
+ Else
+ BELEGTmp.rksv_qr = QRQString
End If
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
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)
Exit Sub
End If
@@ -1363,7 +1399,7 @@ Public Class frmKassenbuch
End If
End Sub
-
+
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New frmKassenbuchPWD(PERSONAL)
If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
@@ -1546,6 +1582,8 @@ Public Class frmKassenbuch
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
'nur im Testsystem!
If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then
@@ -1574,7 +1612,7 @@ Public Class frmKassenbuch
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
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)}
cm_FT.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
@@ -1634,6 +1672,13 @@ Public Class frmKassenbuch
cm_FT.Items.Add(ids)
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)
End Sub
@@ -1674,6 +1719,93 @@ Public Class frmKassenbuch
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
@@ -1701,7 +1833,7 @@ Public Class frmKassenbuch
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
@@ -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
- 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
@@ -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
- 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
@@ -1853,7 +1985,7 @@ Public Class frmKassenbuch
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 = ""
+ Dim result As String = ""
Select Case item.Name
Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation)
Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal)
diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
index a70a0a39..77148d1a 100644
--- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
+++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
@@ -1,5 +1,6 @@
Imports GrapeCity.ActiveReports
+Imports java.security.acl
Imports VERAG_PROG_ALLGEMEIN
Public Class frmNacherfassungLeihgeld
@@ -363,143 +364,158 @@ Public Class frmNacherfassungLeihgeld
Dim QR_CodeString As String = ""
Dim LastJWS As String = ""
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
- Dim answer = ""
+ Dim answer = ""
- 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, "Verkauf")
- '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 AndAlso Not isFiskaltrust 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)
- End If
- MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' Me.Cursor = Cursors.Default
- 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- ' MsgBox("Programmfehler bei der digitalen Signatur.")
- Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
- End If
- KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
- End If
-
-
- If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt
- Dim answer = ""
- If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
- If Not TESTBUCHUNG Then
- KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
- cRKSV.DELETE(BELEG, KASSE.rksv_firma)
- End If
- MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' Me.Cursor = Cursors.Default
- 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- ' MsgBox("Programmfehler bei der digitalen Signatur.")
- Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
- End If
- If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
- 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- If KASSE.rksv_KassaGuid = "KASSE_01" Then
- BELEG.rksv_jws = Nothing
- BELEG.rksv_qr = Nothing
- End If
- 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-
- End If
- 'RKSV-Daten beim Beleg ergänzen:
- BELEG.rksv_jws = LastJWS
- BELEG.rksv_qr = QR_CodeString
- BELEG.rksv_BelegId = RKSV_Beleg_Id
- BELEG.rksv_id = KASSE.rksv_id
- BELEG.rksv_umsatz = summeBRUTTO
- BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
- BELEG.SAVE()
-
- 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird...
- Dim barbetrag As Double = 0
- Dim BelegNrProvision = 0
- If cbxProvision.Checked Then
- printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked)
- End If
-
-
- 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken
- cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken
-
- If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision)
-
-
- 'nur bei VERAG die fragen
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then
- Dim abbruch As Boolean = False
- If cRKSV.SpedBuchExists(BELEG) Then
- If vbYes = MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then
- abbruch = True
- End If
- End If
-
- If Not abbruch Then
- cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, , barbetrag, BelegNrProvision)
- Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG)
- If Not spedBuchExisting Then
- MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!")
+ Dim verarbeitet As Boolean = False
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf")
+ 'result.Wait()
+ verarbeitet = result
Else
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG
-
- If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then
- Dim frmNacherfassung As New frmNacherfassungNEU()
- frmNacherfassung.srchFiliale = BELEG.FilialenNr
- frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr
- frmNacherfassung.srchUnterNr = 0
- frmNacherfassung.ShowDialog(Me)
- End If
- End If
+ 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 isFiskaltrust Then
-
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then
- Dim verarbOK As Boolean = True
- Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr)
- SPEDBUCH.BelegNr = BelegNrFIBU
- Dim RK_ID As Integer = -1
-
- If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False
- If RK_ID > 0 Then
- Dim RECHNUNG As New cRechnungsausgang(RK_ID)
- RECHNUNG.KdAuftragsNr = BelegNrFIBU
- If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False
- If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then
- RECHNUNG.[DruckDatumZeit] = Nothing
- RECHNUNG.SAVE_DruckDatumZeit()
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
- End If
+ MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' Me.Cursor = Cursors.Default
+ 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ ' MsgBox("Programmfehler bei der digitalen Signatur.")
+ Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
- If verarbOK Then
- 'MsgBox("Rechnung erstellt!")
Else
- MsgBox("Fehler bei Rechnungserstellung!")
+ BELEG.FT_MissingSignature = True
End If
+
End If
+ If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+ End If
+
+
+ If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt
+ Dim answer = ""
+ If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ End If
+ MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' Me.Cursor = Cursors.Default
+ 'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ ' MsgBox("Programmfehler bei der digitalen Signatur.")
+ Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
+ End If
+ If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ If KASSE.rksv_KassaGuid = "KASSE_01" Then
+ BELEG.rksv_jws = Nothing
+ BELEG.rksv_qr = Nothing
+ End If
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
End If
+ 'RKSV-Daten beim Beleg ergänzen:
+ BELEG.rksv_jws = LastJWS
+ BELEG.rksv_qr = QR_CodeString
+ BELEG.rksv_BelegId = RKSV_Beleg_Id
+ BELEG.rksv_id = KASSE.rksv_id
+ BELEG.rksv_umsatz = summeBRUTTO
+ BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
+ BELEG.SAVE()
+
+ 'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird...
+ Dim barbetrag As Double = 0
+ Dim BelegNrProvision = 0
+ If cbxProvision.Checked Then
+ printProvision(barbetrag, BelegNrProvision, cbxProvinMAKassa.Checked)
+ End If
+
+
+ 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken
+ cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken
+
+ If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision)
+
+
+ 'nur bei VERAG die fragen
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then
+ Dim abbruch As Boolean = False
+ If cRKSV.SpedBuchExists(BELEG) Then
+ If vbYes = MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then
+ abbruch = True
+ End If
+ End If
+
+ If Not abbruch Then
+ cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, , barbetrag, BelegNrProvision)
+ Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG)
+ If Not spedBuchExisting Then
+ MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!")
+ Else
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG
+
+ If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then
+ Dim frmNacherfassung As New frmNacherfassungNEU()
+ frmNacherfassung.srchFiliale = BELEG.FilialenNr
+ frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr
+ frmNacherfassung.srchUnterNr = 0
+ frmNacherfassung.ShowDialog(Me)
+ End If
+ End If
+ End If
+
+
+
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then
+ Dim verarbOK As Boolean = True
+ Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr)
+ SPEDBUCH.BelegNr = BelegNrFIBU
+ Dim RK_ID As Integer = -1
+
+ If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False
+ If RK_ID > 0 Then
+ Dim RECHNUNG As New cRechnungsausgang(RK_ID)
+ RECHNUNG.KdAuftragsNr = BelegNrFIBU
+ If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False
+ If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then
+ RECHNUNG.[DruckDatumZeit] = Nothing
+ RECHNUNG.SAVE_DruckDatumZeit()
+ End If
+ End If
+
+ If verarbOK Then
+ 'MsgBox("Rechnung erstellt!")
+ Else
+ MsgBox("Fehler bei Rechnungserstellung!")
+
+ End If
+ End If
+
+ End If
+ End If
+
+
+ Me.Close()
+ Me.DialogResult = Windows.Forms.DialogResult.OK
+ Me.Cursor = Cursors.Default
End If
-
- Me.Close()
- Me.DialogResult = Windows.Forms.DialogResult.OK
- Me.Cursor = Cursors.Default
- End If
-
Catch ex As Exception
Me.Cursor = Cursors.Default
MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & If(BELEG.rksv_BelegId > 0, "ACHTUNG: BELEG BEREITS SIGNIERT!!!", "") & vbNewLine & vbNewLine & ex.Message & ex.StackTrace)
diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb
index b148f700..919dc00e 100644
--- a/SDL/mdm/frmMDMDatenverarbetiung.vb
+++ b/SDL/mdm/frmMDMDatenverarbetiung.vb
@@ -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"
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,
Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag],
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 & "
- 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")
@@ -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("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.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "")
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
index 826b029b..17d7e096 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
@@ -64,6 +64,10 @@ Public Class cNCTSGestellungsadressen
Public Function SAVE() As Boolean
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) " &
" BEGIN " & getUpdateCmd() & " END " &
diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
index 53c4a512..2a04c7c5 100644
--- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
+++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
@@ -2512,7 +2512,7 @@ Public Class DATENVERVER_OPTIONS
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"
@@ -2522,6 +2522,12 @@ Public Class DATENVERVER_OPTIONS
Dim xmlBytes = File.ReadAllBytes(xmlPath)
+
+ If fixedIssuerAssignedID Then
+ fixIssuerAssignedID(xmlBytes)
+ End If
+
+
Dim fileName As String = "factur-x.xml"
If HasAttachment(pdf, fileName) Then
@@ -2557,6 +2563,75 @@ Public Class DATENVERVER_OPTIONS
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
Dim catalog = pdf.GetCatalog().GetPdfObject()
diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
index 909f6554..929e53f1 100644
--- a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
+++ b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
@@ -225,7 +225,13 @@ Public Class cVERAG_CustomsDeclarations
' CBAM Pattern (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 (
/*EU-27 (ISO2)*/