Compare commits

...

3 Commits

14 changed files with 1004 additions and 146 deletions

View File

@@ -1,8 +1,7 @@
Imports System.Net.Http
Imports System.Data.SqlClient
Imports System.Net.Http
Imports System.Reflection
Imports System.Text
Imports System.Threading
Imports DocumentFormat.OpenXml.Drawing
Imports DocumentFormat.OpenXml.Wordprocessing
Imports Newtonsoft.Json
Public Class cFiskaltrustClient
@@ -24,9 +23,9 @@ Public Class cFiskaltrustClient
' ================================
' PUBLIC API
' ================================
Public Async Function SignReceiptAsync(amount As Double, vat As Double, POS As List(Of EABelegPositionen)) As Task(Of String)
Public Async Function SignReceiptAsync(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), KindOfPayment As String, posSystemId As String) As Task(Of String)
Dim payload = BuildPayload(amount, vat, POS)
Dim payload = BuildPayloadReceipt(amount, vat, POS, KindOfPayment, posSystemId)
Dim endpoint = GetEndpoint("payment")
Dim requestContent As StringContent
@@ -46,50 +45,10 @@ Public Class cFiskaltrustClient
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function SignReceiptAsync_test() As Task(Of String)
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)
Public Async Function Echo(KassenName As String) As Task(Of String)
Dim payload = BuildPayload(100, 0, LIST)
Dim endpoint = GetEndpoint("payment")
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
'Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(payload)
'requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function Echo() As Task(Of String)
Dim payload = "VERBINDUNGSPRÜFUNG ERFOLGREICH"
Dim payload = KassenName & " - VERBINDUNG OK"
Dim endpoint = GetEndpoint("test")
Dim requestContent As StringContent
@@ -116,7 +75,22 @@ Public Class cFiskaltrustClient
End Function
' Optional: Storno Beispiel
Public Async Function CancelReceiptAsync(reference As String) As Task(Of String)
'reference unique id!
Public Async Function CancelReceiptAsync(reference As String, POS As List(Of EABelegPositionen), amount As Decimal, kindOfPayment As String) As Task(Of String)
' ChargeItems Liste vorbereiten
Dim chargeItems = New List(Of Object)
For Each p In POS
chargeItems.Add(New With {
.Quantity = p.Anzahl,
.Amount = p.Preis,
.VATRate = 0,
.Description = p.LeistungsBez,
.ftChargeItemCase = 4919338167972134929
})
Next
Dim payload = New With {
.ftCashBoxID = _cashboxId,
@@ -124,8 +98,18 @@ Public Class cFiskaltrustClient
.cbTerminalID = "T1",
.cbReceiptReference = reference,
.cbReceiptMoment = DateTime.UtcNow.ToString("o"),
.ftReceiptCase = 4919338172267102210 ' Storno
}
.ftReceiptCase = 4919338172267102210,
.cbChargeItems = chargeItems,
.cbPayItems = New Object() {
New With {
.Quantity = 1.0,
.Amount = amount,
.Description = kindOfPayment,
.ftPayItemCase = 4919338167972134913
}
}
}
Dim requestContent As StringContent
@@ -146,63 +130,252 @@ Public Class cFiskaltrustClient
End Function
Public Async Function SignNullReceiptAsync(posSystemId As String) As Task(Of String)
Dim payload = BuildPayloadNullReceipt(posSystemId, _country)
Dim endpoint = GetEndpoint("payment")
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(text)
requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function SignClosinglReceiptAsync(type As String, posSystemId As String) As Task(Of String)
Dim payload = BuildPayloadCosinglReceipt(type, posSystemId)
Dim endpoint = GetEndpoint("payment")
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(text)
requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function Journal(type As String) As Task(Of String)
Dim payload = ""
Dim endpoint = GetEndpoint("journal")
If type > 0 Then
endpoint &= "?type=" & type
End If
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(text)
requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function SignReceiptAsync_test(posSystemId As String) As Task(Of String)
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 payload = BuildPayloadReceipt(100, 0, LIST, "Cash", posSystemId)
Dim endpoint = GetEndpoint("payment")
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
'Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(payload)
'requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(endpoint, payload, requestContent)
End Function
Public Async Function CancelReceiptAsync_test(reference As String, amount As Decimal, kindOfPayment As String) As Task(Of String)
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 chargeItems = New List(Of Object)
Dim payload = New With {
.ftCashBoxID = _cashboxId,
.ftPosSystemId = "POS-1",
.cbTerminalID = "T1",
.cbReceiptReference = reference,
.cbReceiptMoment = DateTime.UtcNow.ToString("o"),
.ftReceiptCase = 4919338172267102210,
.cbChargeItems = chargeItems,
.cbPayItems = New Object() {
New With {
.Quantity = 1.0,
.Amount = amount,
.Description = kindOfPayment,
.ftPayItemCase = 4919338167972134913
}
}
}
Dim requestContent As StringContent
If _country = "AT" Then
' Plaintext
Dim text As String = If(payload?.ToString(), "")
Dim json As String = JsonConvert.SerializeObject(text)
requestContent = New StringContent(json, Encoding.UTF8, "text/plain")
Else
' JSON Objekt
Dim json As String = JsonConvert.SerializeObject(payload)
requestContent = New StringContent(json, Encoding.UTF8, "application/json")
End If
Return Await SendAsync(GetEndpoint("payment"), payload, requestContent)
End Function
Private Async Function SendAsync(endpoint As String, payload As Object, requestContent As StringContent) As Task(Of String)
Dim exToThrow As Exception = Nothing
Dim url = _baseUrl & endpoint
Dim retries As Integer = 3
Dim delayMs As Integer = 500
For attempt = 1 To retries
Dim lastException As Exception = Nothing
Dim shouldRetry As Boolean = False
For attempt As Integer = 1 To retries
shouldRetry = False
Try
Using request As New HttpRequestMessage(HttpMethod.Post, url)
request.Headers.Add("cashboxid", _cashboxId)
request.Headers.Add("accesstoken", _accessToken)
request.Content = requestContent
If requestContent IsNot Nothing Then
request.Content = requestContent
End If
Dim response = Await _httpClient.SendAsync(request)
Dim result = Await response.Content.ReadAsStringAsync()
' Logging Hook
Log($"[{DateTime.Now}] Response ({response.StatusCode}): {result}")
Log($"[{DateTime.Now}] Response ({CInt(response.StatusCode)}): {result}")
If response.IsSuccessStatusCode Then
Return result
End If
' Retry only on transient errors
If CType(response.StatusCode, Integer) >= 500 Then
Throw New Exception("Server error: " & result)
Dim statusCode As Integer = CInt(response.StatusCode)
If statusCode >= 500 Then
shouldRetry = True
Throw New Exception($"Server error ({statusCode}): {result}")
Else
' Client error → no retry
Throw New Exception("Client error: " & result)
Throw New Exception($"Client error ({statusCode}): {result}")
End If
End Using
Catch ex As Exception
Log($"[{DateTime.Now}] Attempt {attempt} failed: {ex.Message}")
lastException = ex
If attempt = retries Then
exToThrow = ex
End If
Log($"[{DateTime.Now}] Attempt {attempt} failed: {ex.Message}")
End Try
' Await außerhalb von Catch
If shouldRetry AndAlso attempt < retries Then
Await Task.Delay(delayMs)
End If
Next
If exToThrow IsNot Nothing Then
Await Task.Delay(1000)
Throw exToThrow
If lastException IsNot Nothing Then
Throw lastException
End If
Throw New Exception("Unexpected error")
@@ -210,11 +383,19 @@ Public Class cFiskaltrustClient
End Function
Private Function BuildPayload(amount As Double, vat As Double, POS As List(Of EABelegPositionen)) As Object
Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), KindOfPayment As String, posSystemId As String) As Object
' ChargeItems Liste vorbereiten
Dim chargeItems = New List(Of Object)
Dim PayItemCase As Long
Select Case KindOfPayment
Case "Cash" : PayItemCase = 4919338167972134913
Case "Card" : PayItemCase = 4919338167972134913 '-> richtigen Type finden
End Select
For Each p In POS
chargeItems.Add(New With {
.Quantity = p.Anzahl,
@@ -228,7 +409,7 @@ Public Class cFiskaltrustClient
' Payload Objekt erstellen
Dim payload = New With {
.ftCashBoxID = _cashboxId,
.ftPosSystemId = "POS-1",
.ftPosSystemId = posSystemId,
.cbTerminalID = "T1",
.cbReceiptReference = Guid.NewGuid().ToString(),
.cbReceiptMoment = DateTime.UtcNow.ToString("o"),
@@ -237,17 +418,78 @@ Public Class cFiskaltrustClient
New With {
.Quantity = 1.0,
.Amount = amount,
.Description = "Cash",
.ftPayItemCase = 4919338167972134913
.Description = KindOfPayment,
.ftPayItemCase = PayItemCase
}
},
.ftReceiptCase = 4919338172267102209
.ftReceiptCase = 4919338172267102209 'IMPLICIT-FLOW -> STANDARD-BARVERKAUF
}
Return payload
End Function
Private Function BuildPayloadNullReceipt(posSystemId As String, country As String) As Object
Dim ftReceiptCase_ As Long
Dim cbReceiptReference_ As String
Select Case country
Case "DE"
ftReceiptCase_ = 4919338172267102210 'NULL-BELEG DE
cbReceiptReference_ = "ZeroReceiptAfterFailure"
Case Else
ftReceiptCase_ = 4707387510509010946 'NULL-BELEG AT
cbReceiptReference_ = "2"
End Select
Dim payload = New With {
.ftCashBoxID = _cashboxId,
.ftPosSystemId = posSystemId,
.cbTerminalID = "T1",
.cbReceiptReference = cbReceiptReference_,
.cbReceiptMoment = DateTime.UtcNow.ToString("o"),
.cbChargeItems = New Object() {},
.cbPayItems = New Object() {},
.ftReceiptCase = ftReceiptCase_
}
Return payload
End Function
Private Function BuildPayloadCosinglReceipt(type As String, posSystemId As String)
'Kassenabschlussbelege
Dim caseID As Long
Select Case type
Case "daily" : caseID = 4919338172267102210
Case "monthly" : caseID = 4919338172267102213
Case "yearly" : caseID = 4919338172267102214
End Select
Dim payload = New With {
.ftCashBoxID = _cashboxId,
.ftPosSystemId = posSystemId,
.cbTerminalID = "T1",
.cbReceiptReference = type & "-closing-" & DateTime.UtcNow.ToString("o"),
.cbReceiptMoment = DateTime.UtcNow.ToString("o"),
.cbChargeItems = New Object() {},
.cbPayItems = New Object() {},
.ftReceiptCase = caseID
}
Return payload
End Function
Private Function GetEndpoint(type As String) As String
@@ -274,6 +516,17 @@ Public Class cFiskaltrustClient
Throw New Exception("Unsupported country")
End Select
ElseIf type = "journal" Then
Select Case _country
Case "DE"
Return "/json/v0/Journal"
Case "AT"
Return "/json/Journal"
Case Else
Throw New Exception("Unsupported country")
End Select
End If
@@ -282,8 +535,405 @@ Public Class cFiskaltrustClient
End Function
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String) As Boolean
If result_zahlung <> "" Then
Dim json As New Chilkat.JsonObject
Dim success As Boolean = json.Load(result_zahlung)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
Return False
End If
Dim ftSig As New cFiskaltrustSignatures()
Dim ftReceiptMoment As New Chilkat.CkDateTime
Dim dt As New Chilkat.DtObj
Dim getAsLocal As Boolean = False
Dim ftID As Integer = -1
success = json.DateOf("ftReceiptMoment", ftReceiptMoment)
Debug.WriteLine(ftReceiptMoment.GetAsTimestamp(getAsLocal))
With ftSig
.ftCashBoxID = json.StringOf("ftCashBoxID")
.ftQueueID = json.StringOf("ftQueueID")
.ftQueueItemID = json.StringOf("ftQueueItemID")
.ftQueueRow = json.IntOf("ftQueueRow")
.cbTerminalID = json.StringOf("cbTerminalID")
.cbReceiptReference = json.StringOf("cbReceiptReference")
.ftCashBoxIdentification = json.StringOf("ftCashBoxIdentification")
.ftReceiptIdentification = json.StringOf("ftReceiptIdentification")
.ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal)
.ftState = json.StringOf("ftState")
ftID = .SAVE()
End With
Dim num As Integer = json.SizeOfArray("ftSignatures")
If num = 0 Then
Return False
End If
Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
If (json.LastMethodSuccess = False) Then
Return False
End If
Dim numSignatures As Integer = Signatures.Size
For i = 0 To numSignatures - 1
Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i)
Dim ftSigPos As New cFiskaltrustSignaturPositions()
With ftSigPos
.ftSignatures = ftSig.ft_id
.ftData = SignObj.StringOf("Data")
.ftSignatureFormat = SignObj.StringOf("ftSignatureFormat")
.ftSignatureType = SignObj.StringOf("ftSignatureType")
.SAVE()
If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = 3 Then
QR_CodeString = .ftData
End If
End With
Next
End If
End Function
Public Function exportJournal(ByRef result_Journal As String) As Boolean
If result_Journal <> "" Then
Dim jsonArr As New Chilkat.JsonArray
Dim success As Boolean = jsonArr.Load(result_Journal)
If (success <> True) Then
Debug.WriteLine(jsonArr.LastErrorText)
Return False
End If
Dim dt As New DataTable
dt.Columns.Add("ftReceiptJournalId", GetType(String))
dt.Columns.Add("ftReceiptMoment", GetType(String))
dt.Columns.Add("ftReceiptNumber", GetType(String))
dt.Columns.Add("ftReceiptTotal", GetType(String))
dt.Columns.Add("ftQueueId", GetType(String))
dt.Columns.Add("ftReceiptHash", GetType(String))
dt.Columns.Add("ftQueueItemId", GetType(String))
dt.Columns.Add("TimeStamp", GetType(String))
Dim i = 0
Dim num As Integer = jsonArr.Size
If num = 0 Then
Return False
End If
Dim tmstmp As New Chilkat.CkDateTime
Dim getAsLocal As Boolean = False
While i < num
Dim SignObj As Chilkat.JsonObject = jsonArr.ObjectAt(i)
Dim R As DataRow = dt.NewRow
With SignObj
R("ftReceiptJournalId") = .StringOf("ftReceiptJournalId")
R("ftReceiptMoment") = .StringOf("ftReceiptMoment")
R("ftReceiptNumber") = .IntOf("ftReceiptNumber")
R("ftReceiptTotal") = .StringOf("ftReceiptTotal")
R("ftQueueId") = .StringOf("ftQueueId")
R("ftQueueItemId") = .StringOf("ftQueueItemId")
R("ftReceiptHash") = .StringOf("ftReceiptHash")
R("TimeStamp") = tmstmp.GetAsTimestamp(getAsLocal)
End With
dt.Rows.Add(R)
i = i + 1
End While
If dt.Rows.Count > 0 Then
Dim Path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt)
End If
End If
End Function
Private Sub Log(message As String)
Console.WriteLine(message)
End Sub
End Class
Public Class cFiskaltrustSignatures
Property ft_id As Integer
Property ftQueueID As Object = Nothing
Property ftQueueItemID As Object = Nothing
Property ftQueueRow As Object = Nothing
Property ftCashBoxIdentification As Object = Nothing
Property ftReceiptIdentification As Object = Nothing
Property ftReceiptMoment As Object = Nothing
Property ftState As Object = Nothing
Property ftCashBoxID As Object = Nothing
Property cbTerminalID As Object = Nothing
Property cbReceiptReference As Object = Nothing
Public hasEntry = False
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Sub New()
End Sub
Sub New(ft_id)
Me.ft_id = ft_id
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ft_id", ft_id,, True))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftQueueID", ftQueueID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftQueueItemID", ftQueueItemID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftQueueRow", ftQueueRow))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftCashBoxIdentification", ftCashBoxIdentification))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftReceiptIdentification", ftReceiptIdentification))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftReceiptMoment", ftReceiptMoment))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftState", ftState))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftCashBoxID", ftCashBoxID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbTerminalID", cbTerminalID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbReceiptReference", cbReceiptReference))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN " & getInsertCmd() & " END " '&
'" commit tran "
Dim id = SQL.doSQLVarListID(ft_id, sqlstr, "FMZOLL", , list)
Me.ft_id = id
Return id > 0
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblRKSV_FT WHERE ft_id=@ft_id ", conn)
cmd.Parameters.AddWithValue("@ft_id", ft_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
'Public Function getUpdateCmd() As String
' Try
' Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
' Dim str As String = ""
' For Each i In list
' If Not i.isPrimaryParam Then
' str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
' End If
' Next
' str = str.Substring(0, str.Length - 1) 'wg. ','
' Return (" UPDATE [tblTABLE] SET " & str & " WHERE _BASE_id=@_BASE_id ")
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
' End Try
' Return ""
'End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblRKSV_FT (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class
Public Class cFiskaltrustSignaturPositions
Property ftSignatures As Integer
Property ftSignatureFormat As Object = Nothing
Property ftSignatureType As Object = Nothing
Property ftData As Object = Nothing
Public hasEntry = False
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Sub New()
End Sub
Sub New(ftSignatures, ftSignatureType)
Me.ftSignatures = ftSignatures
Me.ftSignatureType = ftSignatureType
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftSignatures", ftSignatures))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftSignatureFormat", ftSignatureFormat))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftSignatureType", ftSignatureType))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftData", ftData))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN " & getInsertCmd() & " END " '&
'" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblRKSV_FTSignatures WHERE ftSignatures=@ftSignatures AND ftSignatureType = @ftSignatureType ", conn)
cmd.Parameters.AddWithValue("@ftSignatures", ftSignatures)
cmd.Parameters.AddWithValue("@ftSignatureType", ftSignatureType)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
'Public Function getUpdateCmd() As String
' Try
' Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
' Dim str As String = ""
' For Each i In list
' If Not i.isPrimaryParam Then
' str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
' End If
' Next
' str = str.Substring(0, str.Length - 1) 'wg. ','
' Return (" UPDATE [tblTABLE] SET " & str & " WHERE _BASE_id=@_BASE_id ")
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
' End Try
' Return ""
'End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblRKSV_FTSignatures (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class

View File

@@ -92,7 +92,7 @@ Public Class cRKSV
End Function
Shared Function insertRKSVFiskaltrust(ByVal kasse As cRKSV_Kasse, CompanyGUID As String, ByVal umsatzZaehler As Double, ByVal belegDat As DateTime, ByVal steuerSchluessel As Integer, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, POS As List(Of EABelegPositionen)) As Boolean
Shared Async Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, CompanyGUID As String, ByVal umsatzZaehler As Double, ByVal belegDat As DateTime, ByVal steuerSchluessel As Integer, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, POS As List(Of EABelegPositionen), QR_CodeString As String, LastJWS As String) As Task(Of Boolean)
Try
@@ -125,11 +125,12 @@ Public Class cRKSV
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
Dim StandUmsatzzaehler = umsatzZaehler 'KASSE.rksv_Umsatzzaehler
Dim countryID As String
Dim client As New cFiskaltrustClient(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
Dim result = client.SignReceiptAsync(summeBRUTTO, steuersatz, POS)
Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
client.saveRKSV_FT(result, QR_CodeString)
Catch ex As Exception

View File

@@ -189,10 +189,12 @@ Public Class usrcntlCreditsafe
Dim o As Form = Me.FindForm
' If Me.Parent.GetType() Is GetType(Form) Then o = Me.FindForm
Dim Land As String = cboLand._value
For Each row As DataGridViewRow In dgvCreditsafe.SelectedRows
comp = New Company(IIf(IsDBNull(row.Cells("name").Value), "", row.Cells("name").Value),
IIf(IsDBNull(row.Cells("vatNo").Value), "", row.Cells("vatNo").Value),
(cboLand._value),
(Land),
IIf(IsDBNull(row.Cells("safeNo").Value), "", row.Cells("safeNo").Value),
IIf(IsDBNull(row.Cells("regNo").Value), "", row.Cells("regNo").Value),
IIf(IsDBNull(row.Cells("street").Value), "", row.Cells("street").Value),

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.5.5.2")>
<Assembly: AssemblyFileVersion("1.5.5.2")>
<Assembly: AssemblyVersion("1.5.5.3")>
<Assembly: AssemblyFileVersion("1.5.5.3")>

View File

@@ -596,7 +596,7 @@ Public Class usrCntlATLAS_NCTS004
If Not ncts_OUT.SAVE_ALL() Then Exit Sub
Dim saveFile = ""
If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(ncts_OUT, saveFile, cboDakosyAction._value, Application.StartupPath) Then
If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(ncts_OUT, saveFile, cboDakosyAction._value, Application.StartupPath, cDy_ART) Then
If saveFile <> "" Then
If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, BezugsNr, DY_ANM.dy_Id, Me.FIRMA_DY) Then
DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
@@ -697,7 +697,7 @@ Public Class usrCntlATLAS_NCTS004
If vbYes = MsgBox("Erfolgreich erstellt! Soll(en) die Ausfuhr-Gestellung(en) abgeschickt werden?", vbYesNoCancel) Then
Dim saveFile = ""
If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, cboDakosyAction._value, Application.StartupPath) Then
If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, cboDakosyAction._value, Application.StartupPath, cDy_ART) Then
If saveFile <> "" Then
If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, BezugsNr, DY_ANM.dy_Id, Me.FIRMA_DY) Then
DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)

View File

@@ -627,9 +627,6 @@ Public Class frmBU_Mahnlauf
End If
Dim MahnTEXT_VOR = ""
Dim MahnTEXT_NACH = ""
Dim MAHNTEXT As String = "Zahlungserinnerung"
@@ -699,7 +696,14 @@ Public Class frmBU_Mahnlauf
Dim Verzugszinsen As Double = 0
Dim Verzugtage = DateDiff(DateInterval.Day, CDate(rpt.Fields.Item("Faelligkeit").Value), Now)
If Verzugtage > 0 And Ausstand > 0 Then
If Firma_ID = 19 And MAHNSTUFE > 1 Then 'erst ab Mahnstufe 2 sollen bei MDM Verzugszinsen berechnet werden.
If Firma_ID = 19 Then
If MAHNSTUFE > 1 Then 'erst ab Mahnstufe 2 sollen bei MDM Verzugszinsen berechnet werden.
Verzugszinsen = ZinssatzVerzugszinsen / 365 * Ausstand * Verzugtage
VerzugszinsenGes += Verzugszinsen
End If
Else
Verzugszinsen = ZinssatzVerzugszinsen / 365 * Ausstand * Verzugtage
VerzugszinsenGes += Verzugszinsen
End If

View File

@@ -146,6 +146,7 @@ Partial Class frmBelegNeu
Me.DataGridViewTextBoxColumn9 = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components)
CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout()
Me.pnlData.SuspendLayout()
@@ -1778,6 +1779,11 @@ Partial Class frmBelegNeu
Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4)
'
'cm_FT
'
Me.cm_FT.Name = "ContextMenuStrip1"
Me.cm_FT.Size = New System.Drawing.Size(61, 4)
'
'frmBelegNeu
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
@@ -1928,4 +1934,5 @@ Partial Class frmBelegNeu
Friend WithEvents LinkLabel1 As LinkLabel
Friend WithEvents cboBuchungsoforterzeugen As CheckBox
Friend WithEvents Button4 As Button
Friend WithEvents cm_FT As ContextMenuStrip
End Class

View File

@@ -159,6 +159,9 @@
<metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="cm_FT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>173, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>86</value>
</metadata>

View File

@@ -1,5 +1,6 @@
Imports System.Drawing.Printing
Imports System.Globalization
Imports Microsoft.Office.Core
Imports Microsoft.Win32
Imports SDL.RKSVServer
Imports VERAG_PROG_ALLGEMEIN
@@ -1578,7 +1579,7 @@ Public Class frmBelegNeu
If cbxBelegOffnen.Checked AndAlso BELEG.EC_daid > 0 Then
openZahlungsbeleg(BELEG.EC_daid)
End If
Me.Close()
Me.Close()
End If
Case "2" : If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then
If cbxBelegOffnen.Checked AndAlso BELEG.EC_daid > 0 Then
@@ -1703,15 +1704,18 @@ Public Class frmBelegNeu
Dim verarbeitet As Boolean = False
If KASSE.rksv_FT_RestServiceURL <> "" Then
verarbeitet = cRKSV.insertRKSVFiskaltrust(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, BELEG.POS)
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, BELEG.POS, QR_CodeString, LastJWS)
verarbeitet = result.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
If Not verarbeitet 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)
@@ -1720,7 +1724,7 @@ Public Class frmBelegNeu
End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If
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
@@ -1885,29 +1889,136 @@ Public Class frmBelegNeu
Process.Start("https://wiki.verag.ag/de/software/aviso/howtos/Bankomat")
End Sub
Private Async Function Button4_ClickAsync(sender As Object, e As EventArgs) As Task Handles Button4.Click
Try
Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged
KASSE.LOAD(cboKassen._value)
Button4.Visible = KASSE.rksv_FT_RestServiceURL <> ""
End Sub
Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click
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("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
If Not cm_FT.Items.ContainsKey("test") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "test", .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("journal") Then
Dim ids = New ToolStripMenuItem() With {.Text = "Journal", .Name = "journal", .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
Private Async Function mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) As Task(Of Object)
cm_FT.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
KASSE.LOAD(cboKassen._value)
If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Dim result As String = Await client.Echo()
Dim result2 As String = Await client.SignReceiptAsync_test()
MsgBox(result)
MsgBox(result2)
Else
MsgBox("keine Rest-Service URL hinterlegt!")
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
If item.Name = "null" Then
'beide
Dim result As String = Await client.SignNullReceiptAsync(KASSE.rksv_id)
MsgBox(result)
ElseIf item.Name = "test" Then
'beide
Dim result As String = Await client.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
MsgBox(result)
ElseIf item.Name = "storno" Then
'beide
Dim result As String = Await client.CancelReceiptAsync_test("-1", 100, "Cash")
MsgBox(result)
ElseIf item.Name = "bar" Then
'beide
Dim result As String = Await client.SignReceiptAsync_test(KASSE.rksv_id)
MsgBox(result)
ElseIf item.Name = "monthly" Then
'beide
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
MsgBox(result)
ElseIf item.Name = "daily" Then
'Nur DE
If KASSE.rksv_FT_Country = "DE" Then
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
MsgBox(result)
Else
MsgBox("nicht für AT-Kassen möglich!")
End If
ElseIf item.Name = "yearly" Then
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
MsgBox(result)
ElseIf item.Name = "journal" Then
Dim result As String = Await client.Journal(2)
MsgBox(result)
End If
Catch ex As Exception
End Try
End If
End Function
End Class
Class TestRKSVW

View File

@@ -64,7 +64,14 @@ Public Class frmKassenbuch
KennwortTime = Now
initDgv() 'nur set
init()
cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_aktiv]=1 OR [rksvde_aktiv]=1 or rksv_id=4) ", False, "FMZOLL") ' [rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] ", False, "FMZOLL")
Else
cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_aktiv]=1 OR [rksvde_aktiv]=1 or rksv_id=4) ", False, "FMZOLL")
End If
' [rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
btnBelegKunde.Enabled = False
@@ -742,42 +749,70 @@ Public Class frmKassenbuch
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
MsgBox("Leider noch nicht verfügbar")
Exit Sub
Dim client As RKSVWcfClient = New RKSVWcfClient()
client.Endpoint.Address = New System.ServiceModel.EndpointAddress("http://192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/?singleWsdl")
client.Open()
' svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials();
Dim credentials As New SDL.RKSVServer.DBUserCredentials
Private Async Function Button4_ClickAsync(sender As Object, e As EventArgs) As Task Handles Button4.Click
credentials.Database = "RKSVWcfDB"
credentials.Server = "AVISO\SQLEXPRESS"
Select Case cboKassen._value
Case "VERAG-SUB-KASSE-ZOLL"
credentials.Username = "Admin"
credentials.Password = "verag#2"
credentials.CashboxID = "VERAG-SUB-KASSE-ZOLL"
credentials.CompanyGUID = "9119d9ae-f549-4a0f-a50f-0500ec7ca059"
Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
Dim certificate = ""
Dim certificateChain = ""
Dim exportResult = ""
cRKSV.getDEP(certificate, exportResult)
If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim client_FT As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
'hier noch eine Auwahlmöglichkeit bauen!
Dim Journalid = 2 'ReceiptJournal
'4919338167972134914 -> DSFinV-K export
'4919338167972134915 -> TAR file export
'2 -> ReceiptJournal
Dim result = Await client_FT.Journal(Journalid)
If result <> "" Then
client_FT.exportJournal(result)
End If
Else
'If (client.ExportJWS()) Then
' Else
'MessageBox.Show(answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
' End If
Case ""
MsgBox("Keine Kasse gewählt!")
Exit Sub
End Select
MsgBox("Leider noch nicht verfügbar")
End Sub
'Dim client As RKSVWcfClient = New RKSVWcfClient()
'client.Endpoint.Address = New System.ServiceModel.EndpointAddress("http://192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/?singleWsdl")
'client.Open()
'' svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials();
'Dim credentials As New SDL.RKSVServer.DBUserCredentials
'credentials.Database = "RKSVWcfDB"
'credentials.Server = "AVISO\SQLEXPRESS"
'Select Case cboKassen._value
' Case "VERAG-SUB-KASSE-ZOLL"
' credentials.Username = "Admin"
' credentials.Password = "verag#2"
' credentials.CashboxID = "VERAG-SUB-KASSE-ZOLL"
' credentials.CompanyGUID = "9119d9ae-f549-4a0f-a50f-0500ec7ca059"
' Dim certificate = ""
' Dim certificateChain = ""
' Dim exportResult = ""
' cRKSV.getDEP(certificate, exportResult)
' 'If (client.ExportJWS()) Then
' ' Else
' 'MessageBox.Show(answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
' ' End If
' Case ""
' MsgBox("Keine Kasse gewählt!")
'End Select
End If
End Function
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
@@ -1103,15 +1138,26 @@ Public Class frmKassenbuch
End If
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
Private Async Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
Label18.ForeColor = Color.Black
If Not IsNumeric(cboKassen._value) Then
Label18.ForeColor = Color.Red
Exit Sub
End If
Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma)
If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id)
Dim QR_CodeString As String = ""
client.saveRKSV_FT(result, QR_CodeString)
Else
cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma)
End If
' End If
End Sub

View File

@@ -1315,7 +1315,7 @@ Public Class usrcntlKundeBearbeitenFull
Case "4001000-4099999" : cbxFiBu.Checked = True : cboFirma.changeItem("26") : cboFiliale.changeItem("7002")
Case "728000-799999" : cbxFiBu.Checked = True : cboFirma.changeItem("1") : cboFiliale.changeItem("4803")
Case "30000-49999" : cbxFiBu.Checked = True : cboFirma.changeItem("11") : cboFiliale.changeItem("4803")
Case "500000-599999" : cbxFiBu.Checked = True : cboFirma.changeItem("1") : cboFiliale.changeItem("4803")
Case "500000-599999" : cbxFiBu.Checked = True : cboFirma.changeItem("11") : cboFiliale.changeItem("4803")
Case "900000-999999" : cbxFiBu.Checked = False : cboFirma.changeItem("1") : cboFiliale.changeItem("4803")
Case "800000-899999" : cbxFiBu.Checked = False : cboFirma.changeItem("1") : cboFiliale.changeItem("4803")
Case "9900000-9999999" : cbxFiBu.Checked = False : cboFirma.changeItem("17") : cboFiliale.changeItem("5801")
@@ -1666,11 +1666,18 @@ Public Class usrcntlKundeBearbeitenFull
txtTel.Text = f.UsrcntlCreditsafe1.comp.phoneNo
If f.UsrcntlCreditsafe1.comp.country IsNot Nothing Then
cbxLandKz.changeItem(f.UsrcntlCreditsafe1.comp.country.Substring(0, 1))
cbxLandKz.changeItem(f.UsrcntlCreditsafe1.comp.country.Substring(0, 2))
If cbxLandKz._value = "" Then
cbxLandKz.changeItem(f.UsrcntlCreditsafe1.comp.country.Substring(0, 1))
End If
End If
If f.UsrcntlCreditsafe1.comp.vatNo <> "" Then
cboUSt_UstIdNrLand.changeItem(f.UsrcntlCreditsafe1.comp.vatNo.Substring(0, 2))
If f.UsrcntlCreditsafe1.comp.country <> "" Then

View File

@@ -23,8 +23,8 @@ Partial Class usrcntlFremdrechnungen
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim DataGridViewCellStyle5 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle6 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Me.PDFHochladenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.FlowLayoutPanel = New System.Windows.Forms.FlowLayoutPanel()
Me.btnSDL_Alle = New System.Windows.Forms.Button()
@@ -72,6 +72,8 @@ Partial Class usrcntlFremdrechnungen
Me.dgvLFRechnung = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.dgvDetails = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.Panel4 = New System.Windows.Forms.Panel()
Me.Label10 = New System.Windows.Forms.Label()
Me.lblmissingPDFs = New System.Windows.Forms.Label()
Me.FlowLayoutPanel.SuspendLayout()
Me.ContextMenuStrip1.SuspendLayout()
Me.Panel1.SuspendLayout()
@@ -300,6 +302,8 @@ Partial Class usrcntlFremdrechnungen
Me.Panel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.Panel1.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Panel1.Controls.Add(Me.lblmissingPDFs)
Me.Panel1.Controls.Add(Me.Label10)
Me.Panel1.Controls.Add(Me.lblCountMissingInvoices)
Me.Panel1.Controls.Add(Me.Label1)
Me.Panel1.Controls.Add(Me.Label2)
@@ -674,8 +678,8 @@ Partial Class usrcntlFremdrechnungen
Me.dgvLFRechnung.AllowUserToDeleteRows = False
Me.dgvLFRechnung.AllowUserToResizeColumns = False
Me.dgvLFRechnung.AllowUserToResizeRows = False
DataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
Me.dgvLFRechnung.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle5
DataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
Me.dgvLFRechnung.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle1
Me.dgvLFRechnung.BackgroundColor = System.Drawing.Color.White
Me.dgvLFRechnung.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvLFRechnung.Location = New System.Drawing.Point(4, 3)
@@ -692,8 +696,8 @@ Partial Class usrcntlFremdrechnungen
Me.dgvDetails.AllowUserToDeleteRows = False
Me.dgvDetails.AllowUserToResizeColumns = False
Me.dgvDetails.AllowUserToResizeRows = False
DataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
Me.dgvDetails.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle6
DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
Me.dgvDetails.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2
Me.dgvDetails.BackgroundColor = System.Drawing.Color.White
Me.dgvDetails.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvDetails.Location = New System.Drawing.Point(-1, 3)
@@ -712,6 +716,27 @@ Partial Class usrcntlFremdrechnungen
Me.Panel4.Size = New System.Drawing.Size(1356, 108)
Me.Panel4.TabIndex = 11
'
'Label10
'
Me.Label10.AutoSize = True
Me.Label10.Location = New System.Drawing.Point(4, 88)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(80, 13)
Me.Label10.TabIndex = 68
Me.Label10.Text = "fehlende PDFs:"
'
'lblmissingPDFs
'
Me.lblmissingPDFs.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.lblmissingPDFs.BackColor = System.Drawing.Color.White
Me.lblmissingPDFs.Location = New System.Drawing.Point(173, 88)
Me.lblmissingPDFs.Name = "lblmissingPDFs"
Me.lblmissingPDFs.RightToLeft = System.Windows.Forms.RightToLeft.Yes
Me.lblmissingPDFs.Size = New System.Drawing.Size(74, 13)
Me.lblmissingPDFs.TabIndex = 69
Me.lblmissingPDFs.Text = "0"
Me.lblmissingPDFs.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'usrcntlFremdrechnungen
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -783,4 +808,6 @@ Partial Class usrcntlFremdrechnungen
Friend WithEvents Label1 As Label
Friend WithEvents RechnungsanhangHochladenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents RechnungsanhangloeschenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents lblmissingPDFs As Label
Friend WithEvents Label10 As Label
End Class

View File

@@ -597,6 +597,7 @@ Public Class usrcntlFremdrechnungen
Dim btcNotSet As Integer = 0
Dim missingInvoices As Integer = 0
'Dim missingPDFs As Integer = 0
Dim uta As cUTA
Dim ids As cIDS

View File

@@ -5,7 +5,6 @@ Imports System.Net
Imports System.Reflection
Imports System.Text.RegularExpressions
Imports System.Threading
Imports iTextSharp.text.pdf
Public Class cCreditSafeAPI