Fiskaltrust, Automailversand, etc.
This commit is contained in:
@@ -702,7 +702,7 @@ Public Class cFiskaltrustClient
|
|||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function getVersion(Terminal_ID) As String
|
Private Function getVersion(Terminal_ID) As String
|
||||||
|
|
||||||
Return Terminal_ID & "_" & Application.ProductVersion
|
Return Terminal_ID & "_" & Application.ProductVersion
|
||||||
|
|
||||||
|
|||||||
402
SDL/Classes/cFiskaltrustClient_chilkat.vb
Normal file
402
SDL/Classes/cFiskaltrustClient_chilkat.vb
Normal file
@@ -0,0 +1,402 @@
|
|||||||
|
|
||||||
|
Imports System.Data.SqlClient
|
||||||
|
Imports System.Reflection
|
||||||
|
Imports Chilkat
|
||||||
|
Imports Newtonsoft.Json
|
||||||
|
|
||||||
|
|
||||||
|
Public Class cFiskaltrustClient_chilkat
|
||||||
|
|
||||||
|
Private ReadOnly _baseUrl As String
|
||||||
|
Private ReadOnly _cashboxId As String
|
||||||
|
Private ReadOnly _accessToken As String
|
||||||
|
Private ReadOnly _country As String
|
||||||
|
|
||||||
|
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
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function SignReceipt(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)
|
||||||
|
|
||||||
|
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SignReceipt_test(posSystemId As String) As 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 amount = 100
|
||||||
|
Dim vat = 0
|
||||||
|
Dim POS = LIST
|
||||||
|
Dim kindOfPayment = "Cash"
|
||||||
|
|
||||||
|
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId)
|
||||||
|
|
||||||
|
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SignNullReceipt(posSystemId As String) As String
|
||||||
|
Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function SignClosingReceipt(receiptType As String, posSystemId As String) As String
|
||||||
|
|
||||||
|
Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId).Emit())
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function Echo(kassenName As String) As String
|
||||||
|
|
||||||
|
Dim json As New JsonObject()
|
||||||
|
json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
|
||||||
|
|
||||||
|
Return SendChilkat(GetEndpoint("test"), json.Emit())
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function Journal(Optional typ As String = "") As String
|
||||||
|
|
||||||
|
Dim endpoint = GetEndpoint("journal")
|
||||||
|
|
||||||
|
If typ <> "" Then endpoint &= "?type=" & typ
|
||||||
|
|
||||||
|
Return SendChilkat(endpoint, "", True)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String
|
||||||
|
|
||||||
|
Dim retries As Integer = 3
|
||||||
|
Dim lastEx As Exception = Nothing
|
||||||
|
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||||
|
Dim rest As New Chilkat.Rest
|
||||||
|
Dim failureDesc As String
|
||||||
|
rest.VerboseLogging = True
|
||||||
|
|
||||||
|
|
||||||
|
For i As Integer = 1 To retries
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
Dim uri As New Uri(_baseUrl)
|
||||||
|
|
||||||
|
If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then
|
||||||
|
|
||||||
|
Throw New Exception(rest.LastErrorText)
|
||||||
|
failureDesc = rest.LastErrorText
|
||||||
|
Return failureDesc
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
rest.AddHeader("cashboxid", _cashboxId)
|
||||||
|
rest.AddHeader("accesstoken", _accessToken)
|
||||||
|
|
||||||
|
Dim response As String
|
||||||
|
|
||||||
|
If isGet Then
|
||||||
|
response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint)
|
||||||
|
Else
|
||||||
|
|
||||||
|
|
||||||
|
If _country = "AT" Then
|
||||||
|
rest.AddHeader("Content-Type", "text/plain")
|
||||||
|
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||||
|
Else
|
||||||
|
rest.AddHeader("Content-Type", "application/json")
|
||||||
|
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then
|
||||||
|
Return response
|
||||||
|
Else
|
||||||
|
failureDesc = rest.LastErrorText
|
||||||
|
End If
|
||||||
|
|
||||||
|
Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response)
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
lastEx = ex
|
||||||
|
Threading.Thread.Sleep(500)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
Throw lastEx
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As JsonObject
|
||||||
|
|
||||||
|
Dim json As New JsonObject()
|
||||||
|
|
||||||
|
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||||
|
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||||
|
json.UpdateString("cbTerminalID", posSystemId)
|
||||||
|
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
|
||||||
|
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
|
||||||
|
json.UpdateString("ftReceiptCase", 4919338172267102209)
|
||||||
|
|
||||||
|
Dim chargeItems = json.AppendArray("cbChargeItems")
|
||||||
|
|
||||||
|
For Each p In POS
|
||||||
|
|
||||||
|
If chargeItems.AddObjectAt(-1) Then
|
||||||
|
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.UpdateString("Description", p.LeistungsBez)
|
||||||
|
item.UpdateString("ftChargeItemCase", 4919338167972134929)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
Dim payItems = json.AppendArray("cbPayItems")
|
||||||
|
payItems.AddObjectAt(-1)
|
||||||
|
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
|
||||||
|
pay.UpdateInt("Quantity", 1)
|
||||||
|
pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
|
||||||
|
pay.UpdateString("Description", kindOfPayment)
|
||||||
|
pay.UpdateString("ftPayItemCase", 4919338167972134913)
|
||||||
|
|
||||||
|
Return json
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function BuildPayloadNullReceipt(posSystemId As String, country As String) As JsonObject
|
||||||
|
|
||||||
|
Dim json As New JsonObject()
|
||||||
|
|
||||||
|
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||||
|
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||||
|
json.UpdateString("cbTerminalID", posSystemId)
|
||||||
|
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
|
||||||
|
|
||||||
|
Return json
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function BuildPayloadClosingReceipt(receiptType As String, posSystemId As String) As JsonObject
|
||||||
|
|
||||||
|
Dim json As New JsonObject()
|
||||||
|
|
||||||
|
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||||
|
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||||
|
json.UpdateString("cbTerminalID", posSystemId)
|
||||||
|
|
||||||
|
Return json
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetEndpoint(type As String) As String
|
||||||
|
|
||||||
|
Select Case type
|
||||||
|
|
||||||
|
Case "payment"
|
||||||
|
|
||||||
|
Select Case _country
|
||||||
|
Case "DE" : Return "/json/v1/Sign"
|
||||||
|
Case "AT" : Return "/json/Sign"
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Case "test"
|
||||||
|
|
||||||
|
Select Case _country
|
||||||
|
Case "DE" : Return "/json/v1/Echo"
|
||||||
|
Case "AT" : Return "/json/Echo"
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Case "journal"
|
||||||
|
|
||||||
|
Select Case _country
|
||||||
|
Case "DE" : Return "/json/v0/Journal"
|
||||||
|
Case "AT" : Return "/json/Journal"
|
||||||
|
End Select
|
||||||
|
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Throw New Exception("Unsupported country")
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function getVersion(Terminal_ID As String) As String
|
||||||
|
Return Terminal_ID & "_" & Application.ProductVersion
|
||||||
|
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 saved As Boolean = False
|
||||||
|
|
||||||
|
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")
|
||||||
|
saved = .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")
|
||||||
|
saved = .SAVE()
|
||||||
|
If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then
|
||||||
|
'QR_CodeString = .ftData
|
||||||
|
End If
|
||||||
|
|
||||||
|
End With
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
|
Return saved
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ Public Class cRKSV
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
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)
|
Shared 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), ByRef QR_CodeString As String, ByRef LastJWS As String) As Boolean
|
||||||
Try
|
Try
|
||||||
|
|
||||||
|
|
||||||
@@ -123,16 +123,30 @@ Public Class cRKSV
|
|||||||
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
|
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
|
||||||
Dim StandUmsatzzaehler = umsatzZaehler 'KASSE.rksv_Umsatzzaehler
|
Dim StandUmsatzzaehler = umsatzZaehler 'KASSE.rksv_Umsatzzaehler
|
||||||
|
|
||||||
Dim client As New cFiskaltrustClient(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
|
If False 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.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
|
||||||
Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
|
'If result <> "" Then
|
||||||
|
' Return client.saveRKSV_FT(result, QR_CodeString)
|
||||||
|
'Else
|
||||||
|
' Return False
|
||||||
|
'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, POS, "Cash", kasse.rksv_id)
|
||||||
If result <> "" Then
|
If result <> "" Then
|
||||||
Return client.saveRKSV_FT(result, QR_CodeString)
|
Return client.saveRKSV_FT(result, QR_CodeString)
|
||||||
Else
|
Else
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Public Class cAutomailversand
|
|||||||
'STATUS 3-_> Sammel-Rg gedruckt
|
'STATUS 3-_> Sammel-Rg gedruckt
|
||||||
'STATUS 4-_> ? irgendwas mit SR 6 Maut/Diesel??
|
'STATUS 4-_> ? irgendwas mit SR 6 Maut/Diesel??
|
||||||
|
|
||||||
|
|
||||||
'NUR STATUS 2 -> d.b. Rechnungsdatum + RechnungsNr vergeben!
|
'NUR STATUS 2 -> d.b. Rechnungsdatum + RechnungsNr vergeben!
|
||||||
|
|
||||||
Dim rechnungenMailversand = ""
|
Dim rechnungenMailversand = ""
|
||||||
@@ -160,7 +159,7 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr)
|
setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr)
|
||||||
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then
|
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then
|
||||||
loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs,,, KDE_ERW.kde_merge_pdf)
|
loadAndSetAnhaenge_new(SR_DT, ATTACHMENTS, listPDFs,,, KDE_ERW.kde_merge_pdf)
|
||||||
|
|
||||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
||||||
|
|
||||||
@@ -249,6 +248,7 @@ Public Class cAutomailversand
|
|||||||
setEmpfaengerMail_ER(SPEDBUCH, AD, MailTo, MailtoCC, MailtoBCC, "")
|
setEmpfaengerMail_ER(SPEDBUCH, AD, MailTo, MailtoCC, MailtoBCC, "")
|
||||||
|
|
||||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
||||||
|
|
||||||
MailTo = ""
|
MailTo = ""
|
||||||
MailtoCC = ""
|
MailtoCC = ""
|
||||||
MailtoBCC = setAccountToSend(FirmaID)
|
MailtoBCC = setAccountToSend(FirmaID)
|
||||||
@@ -275,7 +275,7 @@ Public Class cAutomailversand
|
|||||||
Dim Mailsubject As String = ""
|
Dim Mailsubject As String = ""
|
||||||
Dim HTMLMail As String = ""
|
Dim HTMLMail As String = ""
|
||||||
setEmailText(r, FirmaID, RECHNUNG.RechnungsNr, Mailsubject, HTMLMail, RECHNUNG.Sammelrechnung, dt, RECHNUNG.BelegartenNr, SPEDBUCH, RECHNUNG)
|
setEmailText(r, FirmaID, RECHNUNG.RechnungsNr, Mailsubject, HTMLMail, RECHNUNG.Sammelrechnung, dt, RECHNUNG.BelegartenNr, SPEDBUCH, RECHNUNG)
|
||||||
loadAndSetAnhaenge(dt, ATTACHMENTS, listPDFs, RECHNUNG, SPEDBUCH, KDE_ERW.kde_merge_pdf)
|
loadAndSetAnhaenge_new(dt, ATTACHMENTS, listPDFs, RECHNUNG, SPEDBUCH, KDE_ERW.kde_merge_pdf)
|
||||||
|
|
||||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
||||||
|
|
||||||
@@ -530,18 +530,124 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Sub loadAndSetAnhaenge_new(SR_DT As DataTable, ATTACHMENTS As List(Of cFakt_MailATTach), listPDFs As List(Of String), Optional RECHNUNG As cRechnungsausgang = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing, Optional mergeAllPDFS As Boolean = False)
|
||||||
|
|
||||||
|
Dim zielPfad_PDFZusammenfassung = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Anhang.pdf", ".pdf",, False, "Zusammenfassung")
|
||||||
|
|
||||||
|
'====================================================
|
||||||
|
' EINZELRECHNUNG
|
||||||
|
'====================================================
|
||||||
|
If RECHNUNG IsNot Nothing Then
|
||||||
|
|
||||||
|
Dim mergeList As New List(Of String)
|
||||||
|
|
||||||
|
' Beleg
|
||||||
|
Dim belegName = If(RECHNUNG.BelegartenKz = "AR", "Rechnung.pdf", "Gutschrift.pdf")
|
||||||
|
|
||||||
|
For Each pdf In listPDFs
|
||||||
|
ATTACHMENTS.Add(New cFakt_MailATTach(pdf, belegName))
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Rechnungsanhänge
|
||||||
|
RECHNUNG.LOAD_ANHAENGE()
|
||||||
|
|
||||||
|
For Each anh In RECHNUNG.ANHAENGE
|
||||||
|
|
||||||
|
HandlePdf(anh.dsId, anh.Bezeichnung, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False, mergeList, ATTACHMENTS)
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Zoll-Unterlagen
|
||||||
|
LoadZollAttachments(SPEDBUCH, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False, mergeList, ATTACHMENTS)
|
||||||
|
|
||||||
|
' Zusammenfassung erzeugen
|
||||||
|
AddMergedPdf(mergeList, zielPfad_PDFZusammenfassung, ATTACHMENTS)
|
||||||
|
|
||||||
|
' Beleg + Anhänge zusammenführen
|
||||||
|
If mergeAllPDFS AndAlso ATTACHMENTS.Count > 1 Then
|
||||||
|
|
||||||
|
Dim prefix = If(RECHNUNG.BelegartenKz = "AR", "Rechnungs", "Gutschrifts")
|
||||||
|
|
||||||
|
Dim zielPfad = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(prefix & "anhang.pdf", ".pdf",, False, "Zusammenfassung")
|
||||||
|
|
||||||
|
Dim pdfs As New List(Of String)
|
||||||
|
pdfs = ATTACHMENTS.Select(Function(a) a.Pfad.ToString).ToList()
|
||||||
|
|
||||||
|
If FormularManagerNEU.MergePdfFiles(pdfs, zielPfad) Then
|
||||||
|
ATTACHMENTS.Clear()
|
||||||
|
ATTACHMENTS.Add(New cFakt_MailATTach(zielPfad, ""))
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
'====================================================
|
||||||
|
' SAMMELRECHNUNG
|
||||||
|
'====================================================
|
||||||
|
If SR_DT Is Nothing OrElse SR_DT.Rows.Count = 0 Then Return
|
||||||
|
|
||||||
|
Dim mergeListSR As New List(Of String)(listPDFs)
|
||||||
|
|
||||||
|
' Zoll-Unterlagen
|
||||||
|
For Each row As DataRow In SR_DT.Rows
|
||||||
|
|
||||||
|
Dim spedbuchTemp As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(row("FilialenNr"), row("AbfertigungsNr"), row("SpeditionsbuchUnterNr"))
|
||||||
|
Dim filialenNr = If(IsDBNull(row("FilialenNr")), 0, CInt(row("FilialenNr")))
|
||||||
|
Dim firmaId = If(IsDBNull(row("Firma_ID")), 0, CInt(row("Firma_ID")))
|
||||||
|
|
||||||
|
LoadZollAttachments(spedbuchTemp, filialenNr, firmaId, True, mergeListSR, ATTACHMENTS)
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Rechnungsanhänge
|
||||||
|
For Each row As DataRow In SR_DT.Rows
|
||||||
|
|
||||||
|
Dim filialenNr = If(IsDBNull(row("FilialenNr")), 0, CInt(row("FilialenNr")))
|
||||||
|
|
||||||
|
Dim firmaId = If(IsDBNull(row("Firma_ID")), 0, CInt(row("Firma_ID")))
|
||||||
|
|
||||||
|
Dim anhaenge = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(row("RK_ID"))
|
||||||
|
|
||||||
|
If anhaenge Is Nothing Then Continue For
|
||||||
|
|
||||||
|
For Each anh In anhaenge
|
||||||
|
|
||||||
|
HandlePdf(anh.dsId, anh.Bezeichnung, filialenNr, firmaId, True, mergeListSR, ATTACHMENTS)
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Zusammenfassung erzeugen
|
||||||
|
AddMergedPdf(mergeListSR, zielPfad_PDFZusammenfassung, ATTACHMENTS)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Private Sub loadAndSetAnhaenge(SR_DT As DataTable, ATTACHMENTS As List(Of cFakt_MailATTach), listPDFs As List(Of String), Optional RECHNUNG As cRechnungsausgang = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing, Optional mergeAllPDFS As Boolean = False)
|
Private Sub loadAndSetAnhaenge(SR_DT As DataTable, ATTACHMENTS As List(Of cFakt_MailATTach), listPDFs As List(Of String), Optional RECHNUNG As cRechnungsausgang = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing, Optional mergeAllPDFS As Boolean = False)
|
||||||
|
|
||||||
|
'---- Zusammenfassung der PDFs in 3 Schritten:
|
||||||
|
|
||||||
|
'1--> Beleg
|
||||||
|
'2--> Anhänge der Rechnung
|
||||||
|
'3--> Zoll-Anhänge aus SPED-BUCH
|
||||||
|
|
||||||
Dim zielPfadZusammenfassung = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Attachment.pdf", ".pdf",, False, "Zusammenfassung")
|
Dim zielPfadZusammenfassung = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Attachment.pdf", ".pdf",, False, "Zusammenfassung")
|
||||||
Dim pdfAnhang_merge As Boolean = False
|
Dim pdfAnhang_merge As Boolean = False
|
||||||
|
|
||||||
'----------------------------------------------------------------- EINZELRECHNUNGEN------------------------------------------------
|
'----------------------------------------------------------------- EINZELRECHNUNGEN------------------------------------------------
|
||||||
If RECHNUNG IsNot Nothing Then
|
If RECHNUNG IsNot Nothing Then
|
||||||
|
|
||||||
|
'1--> Beleg
|
||||||
For Each l In listPDFs
|
For Each l In listPDFs
|
||||||
ATTACHMENTS.Add(New cFakt_MailATTach(l, If(RECHNUNG.BelegartenKz = "AR", "Rechnung.pdf", "Gutschrift.pdf")))
|
ATTACHMENTS.Add(New cFakt_MailATTach(l, If(RECHNUNG.BelegartenKz = "AR", "Rechnung.pdf", "Gutschrift.pdf")))
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
'2--> Anhänge der Rechnung
|
||||||
Dim zsmf_ER As New List(Of String)
|
Dim zsmf_ER As New List(Of String)
|
||||||
RECHNUNG.LOAD_ANHAENGE()
|
RECHNUNG.LOAD_ANHAENGE()
|
||||||
|
|
||||||
@@ -549,7 +655,7 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId)
|
||||||
|
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
||||||
|
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
If path <> "" Then
|
If path <> "" Then
|
||||||
@@ -568,7 +674,7 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
'3--> Zoll-Anhänge aus SPED-BUCH
|
||||||
If SPEDBUCH IsNot Nothing Then
|
If SPEDBUCH IsNot Nothing Then
|
||||||
|
|
||||||
Dim ZOLL = IIf(SPEDBUCH.DokumentId_Mitteilung IsNot Nothing, "AT", "DE")
|
Dim ZOLL = IIf(SPEDBUCH.DokumentId_Mitteilung IsNot Nothing, "AT", "DE")
|
||||||
@@ -577,7 +683,7 @@ Public Class cAutomailversand
|
|||||||
Case "DE"
|
Case "DE"
|
||||||
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
|
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Steuerbeleg)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Steuerbeleg)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_ER.Add(path)
|
zsmf_ER.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -587,7 +693,7 @@ Public Class cAutomailversand
|
|||||||
End If
|
End If
|
||||||
If SPEDBUCH.DokumentId_VBD IsNot Nothing Then
|
If SPEDBUCH.DokumentId_VBD IsNot Nothing Then
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_VBD)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_VBD)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_ER.Add(path)
|
zsmf_ER.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -601,7 +707,7 @@ Public Class cAutomailversand
|
|||||||
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
|
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
|
||||||
|
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Steuerbeleg)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Steuerbeleg)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_ER.Add(path)
|
zsmf_ER.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -613,7 +719,7 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
|
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Mitteilung)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH.DokumentId_Mitteilung)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, RECHNUNG.FilialenNr, RECHNUNG.Firma_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_ER.Add(path)
|
zsmf_ER.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -689,7 +795,7 @@ Public Class cAutomailversand
|
|||||||
Case "DE"
|
Case "DE"
|
||||||
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
|
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Steuerbeleg)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Steuerbeleg)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, FilialenNr, FIRMA_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, FilialenNr, FIRMA_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_SR.Add(path)
|
zsmf_SR.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -699,7 +805,7 @@ Public Class cAutomailversand
|
|||||||
End If
|
End If
|
||||||
If SPEDBUCH_TEMP.DokumentId_VBD IsNot Nothing Then
|
If SPEDBUCH_TEMP.DokumentId_VBD IsNot Nothing Then
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_VBD)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_VBD)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, FilialenNr, FIRMA_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, FilialenNr, FIRMA_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_SR.Add(path)
|
zsmf_SR.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -713,7 +819,7 @@ Public Class cAutomailversand
|
|||||||
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
|
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
|
||||||
|
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Steuerbeleg)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Steuerbeleg)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, FilialenNr, FIRMA_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, FilialenNr, FIRMA_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_SR.Add(path)
|
zsmf_SR.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -725,7 +831,7 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
|
|
||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Mitteilung)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(SPEDBUCH_TEMP.DokumentId_Mitteilung)
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, FilialenNr, FIRMA_ID, False)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, FilialenNr, FIRMA_ID, False)
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
zsmf_SR.Add(path)
|
zsmf_SR.Add(path)
|
||||||
Else
|
Else
|
||||||
@@ -755,7 +861,7 @@ Public Class cAutomailversand
|
|||||||
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId)
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId)
|
||||||
|
|
||||||
'hier die LOGIK, was alles zusammengefasst werden soll!
|
'hier die LOGIK, was alles zusammengefasst werden soll!
|
||||||
pdfAnhang_merge = PDFS_zusammenfassen(path, FilialenNr, FIRMA_ID, True)
|
pdfAnhang_merge = mergeSinglePDFDocuments(path, FilialenNr, FIRMA_ID, True)
|
||||||
|
|
||||||
If pdfAnhang_merge Then
|
If pdfAnhang_merge Then
|
||||||
If path <> "" Then
|
If path <> "" Then
|
||||||
@@ -826,10 +932,20 @@ Public Class cAutomailversand
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Private Function PDFS_zusammenfassen(path As String, Filiale As Integer, Firma As Integer, isSR As Boolean)
|
Private Function mergeSinglePDFDocuments(path As String, Filiale As Integer, Firma As Integer, isSR As Boolean)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dim zusammenfassen As Boolean = False
|
Dim zusammenfassen As Boolean = False
|
||||||
|
|
||||||
|
'True
|
||||||
|
' → mergeList
|
||||||
|
' → später zu einer PDF zusammenführen
|
||||||
|
|
||||||
|
'False
|
||||||
|
' → sofort als separates Mail-Attachment
|
||||||
|
|
||||||
Select Case Firma
|
Select Case Firma
|
||||||
Case 19
|
Case 19
|
||||||
If Filiale = 4817 Then
|
If Filiale = 4817 Then
|
||||||
@@ -848,7 +964,7 @@ Public Class cAutomailversand
|
|||||||
Else
|
Else
|
||||||
|
|
||||||
'mit Marlene sprechen!
|
'mit Marlene sprechen!
|
||||||
If Not (path.ToString.ToLower.Contains("flyercbam")) Then
|
If Not (path.ToString.ToLower.Contains("flyercbam") OrElse Not (path.ToString.ToLower.Contains("sammelrechnung"))) Then
|
||||||
Return True
|
Return True
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -887,6 +1003,95 @@ Public Class cAutomailversand
|
|||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Sub AddToMergeList(list As List(Of String), path As String)
|
||||||
|
|
||||||
|
If String.IsNullOrWhiteSpace(path) Then Return
|
||||||
|
|
||||||
|
If Not list.Any(Function(p) System.IO.Path.GetFileName(p).Equals(System.IO.Path.GetFileName(path), StringComparison.OrdinalIgnoreCase)) Then
|
||||||
|
|
||||||
|
list.Add(path)
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub AddAttachmentIfNotExists(attachments As List(Of cFakt_MailATTach), path As String, bezeichnung As String)
|
||||||
|
|
||||||
|
If String.IsNullOrWhiteSpace(path) Then Return
|
||||||
|
|
||||||
|
Dim fileName = System.IO.Path.GetFileName(path)
|
||||||
|
|
||||||
|
If Not attachments.Any(Function(a) System.IO.Path.GetFileName(a.Pfad).Equals(fileName, StringComparison.OrdinalIgnoreCase)) Then
|
||||||
|
|
||||||
|
attachments.Add(New cFakt_MailATTach(path, bezeichnung))
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub HandlePdf(docId As Object, displayName As String, filiale As Integer, firma As Integer, isSR As Boolean, mergeList As List(Of String), attachments As List(Of cFakt_MailATTach))
|
||||||
|
|
||||||
|
If docId Is Nothing Then Return
|
||||||
|
|
||||||
|
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(docId)
|
||||||
|
|
||||||
|
If mergeSinglePDFDocuments(path, filiale, firma, isSR) Then
|
||||||
|
AddToMergeList(mergeList, path)
|
||||||
|
Else
|
||||||
|
AddAttachmentIfNotExists(attachments, path, displayName)
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub LoadZollAttachments(spedbuch As cSpeditionsbuch, filiale As Integer, firma As Integer, isSR As Boolean, mergeList As List(Of String), attachments As List(Of cFakt_MailATTach), Optional FiskalMail As Boolean = False)
|
||||||
|
|
||||||
|
If spedbuch Is Nothing Then Return
|
||||||
|
|
||||||
|
Dim isAT = spedbuch.DokumentId_Mitteilung IsNot Nothing
|
||||||
|
|
||||||
|
If FiskalMail Then
|
||||||
|
attachments.Clear() 'liste leeren
|
||||||
|
End If
|
||||||
|
|
||||||
|
If isAT Then
|
||||||
|
HandlePdf(spedbuch.DokumentId_Steuerbeleg, "Verzollungsnachweis.pdf", filiale, firma, isSR, mergeList, attachments)
|
||||||
|
|
||||||
|
HandlePdf(spedbuch.DokumentId_Mitteilung, "Versandschein.pdf", filiale, firma, isSR, mergeList, attachments)
|
||||||
|
|
||||||
|
Else
|
||||||
|
|
||||||
|
HandlePdf(spedbuch.DokumentId_Steuerbeleg, "Steuerbescheid.pdf", filiale, firma, isSR, mergeList, attachments)
|
||||||
|
|
||||||
|
If Not FiskalMail Then 'bei FIskal-Mail nicht mitschicken
|
||||||
|
HandlePdf(spedbuch.DokumentId_VBD, "Abgabenbescheid.pdf", filiale, firma, isSR, mergeList, attachments)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub AddMergedPdf(mergeList As List(Of String), zielPfad As String, attachments As List(Of cFakt_MailATTach))
|
||||||
|
|
||||||
|
If Not mergeList.Any Then Return
|
||||||
|
|
||||||
|
If mergeList.Count = 1 Then
|
||||||
|
|
||||||
|
Dim fi As New FileInfo(mergeList(0))
|
||||||
|
attachments.Add(New cFakt_MailATTach(mergeList(0), fi.Name))
|
||||||
|
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
If FormularManagerNEU.MergePdfFiles(mergeList, zielPfad) Then
|
||||||
|
|
||||||
|
Dim fi As New FileInfo(zielPfad)
|
||||||
|
attachments.Add(New cFakt_MailATTach(zielPfad, fi.Name))
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Function setLog(SR_DT As DataTable, row As DataRow, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, Optional ATTACHMENTS As List(Of cFakt_MailATTach) = Nothing, Optional Mailsubject As String = "", Optional Mailhtml As String = "", Optional MailTo As String = "", Optional MailtoCC As String = "", Optional MailtoBCC As String = "", Optional Mail As Microsoft.Office.Interop.Outlook.MailItem = Nothing, Optional RECHNUNG As cRechnungsausgang = Nothing, Optional FISKAL As cFiskal_Daten = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing) As Boolean
|
Private Function setLog(SR_DT As DataTable, row As DataRow, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, Optional ATTACHMENTS As List(Of cFakt_MailATTach) = Nothing, Optional Mailsubject As String = "", Optional Mailhtml As String = "", Optional MailTo As String = "", Optional MailtoCC As String = "", Optional MailtoBCC As String = "", Optional Mail As Microsoft.Office.Interop.Outlook.MailItem = Nothing, Optional RECHNUNG As cRechnungsausgang = Nothing, Optional FISKAL As cFiskal_Daten = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing) As Boolean
|
||||||
|
|
||||||
|
|
||||||
@@ -1332,10 +1537,18 @@ Public Class cAutomailversand
|
|||||||
'addAttachments(Mail_StbFA, RechnungsNr, cbxMergePDF.Checked)
|
'addAttachments(Mail_StbFA, RechnungsNr, cbxMergePDF.Checked)
|
||||||
''-----------------------------------------------------------------
|
''-----------------------------------------------------------------
|
||||||
|
|
||||||
|
LoadZollAttachments(SPEDBUCH, SPEDBUCH.FilialenNr, FirmaID, False, attachList, Nothing, True)
|
||||||
|
|
||||||
|
For Each att In attachList
|
||||||
|
Mail_StbFA.Attachments.Add(att, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
|
||||||
|
Next
|
||||||
|
|
||||||
Mail_StbFA.Display()
|
Mail_StbFA.Display()
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
|
LoadZollAttachments(SPEDBUCH, SPEDBUCH.FilialenNr, FirmaID, False, attachList, Nothing, True)
|
||||||
|
|
||||||
Dim accountToSend = setAccountToSend(FirmaID)
|
Dim accountToSend = setAccountToSend(FirmaID)
|
||||||
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(MailTo, Subject, TextHTML, accountToSend, False, False, MailCC, accountToSend, attachList,, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "d.breimaier@verag.ag", accountToSend))
|
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(MailTo, Subject, TextHTML, accountToSend, False, False, MailCC, accountToSend, attachList,, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "d.breimaier@verag.ag", accountToSend))
|
||||||
|
|
||||||
|
|||||||
@@ -796,6 +796,7 @@
|
|||||||
<Compile Include="Classes\cEP0735_Versand.vb" />
|
<Compile Include="Classes\cEP0735_Versand.vb" />
|
||||||
<Compile Include="Classes\cEPBes.vb" />
|
<Compile Include="Classes\cEPBes.vb" />
|
||||||
<Compile Include="Classes\cFinanzOnlineWebService.vb" />
|
<Compile Include="Classes\cFinanzOnlineWebService.vb" />
|
||||||
|
<Compile Include="Classes\cFiskaltrustClient_chilkat.vb" />
|
||||||
<Compile Include="Classes\cFiskal_Daten.vb" />
|
<Compile Include="Classes\cFiskal_Daten.vb" />
|
||||||
<Compile Include="Classes\cFormularVorlagen.vb" />
|
<Compile Include="Classes\cFormularVorlagen.vb" />
|
||||||
<Compile Include="Classes\cGenWord.vb" />
|
<Compile Include="Classes\cGenWord.vb" />
|
||||||
|
|||||||
46
SDL/USTV/usrCntlUSTV.Designer.vb
generated
46
SDL/USTV/usrCntlUSTV.Designer.vb
generated
@@ -23,12 +23,13 @@ Partial Class usrCntlUSTV
|
|||||||
<System.Diagnostics.DebuggerStepThrough()>
|
<System.Diagnostics.DebuggerStepThrough()>
|
||||||
Private Sub InitializeComponent()
|
Private Sub InitializeComponent()
|
||||||
Me.components = New System.ComponentModel.Container()
|
Me.components = New System.ComponentModel.Container()
|
||||||
Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrCntlUSTV))
|
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrCntlUSTV))
|
||||||
Me.pnlFilter = New System.Windows.Forms.Panel()
|
Me.pnlFilter = New System.Windows.Forms.Panel()
|
||||||
Me.dgvUSTV = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
|
Me.dgvUSTV = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
|
||||||
Me.Label1 = New System.Windows.Forms.Label()
|
Me.Label1 = New System.Windows.Forms.Label()
|
||||||
Me.Panel1 = New System.Windows.Forms.Panel()
|
Me.Panel1 = New System.Windows.Forms.Panel()
|
||||||
|
Me.btnoffeneAntraege = New System.Windows.Forms.Button()
|
||||||
Me.txtSucheID = New System.Windows.Forms.TextBox()
|
Me.txtSucheID = New System.Windows.Forms.TextBox()
|
||||||
Me.MyComboBox1 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
Me.MyComboBox1 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
||||||
Me.Label12 = New System.Windows.Forms.Label()
|
Me.Label12 = New System.Windows.Forms.Label()
|
||||||
@@ -84,7 +85,7 @@ Partial Class usrCntlUSTV
|
|||||||
Me.ContextMenuStrip2 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
Me.ContextMenuStrip2 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||||
Me.ContextMenuStrip3 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
Me.ContextMenuStrip3 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||||
Me.ContextMenuStrip4 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
Me.ContextMenuStrip4 = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||||
Me.btnoffeneAntraege = New System.Windows.Forms.Button()
|
Me.btn_Zahlungen_importieren = New System.Windows.Forms.Button()
|
||||||
CType(Me.dgvUSTV, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.dgvUSTV, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
Me.Panel1.SuspendLayout()
|
Me.Panel1.SuspendLayout()
|
||||||
Me.Panel2.SuspendLayout()
|
Me.Panel2.SuspendLayout()
|
||||||
@@ -106,8 +107,8 @@ Partial Class usrCntlUSTV
|
|||||||
Me.dgvUSTV.AKTUALISIERUNGS_INTERVALL = -1
|
Me.dgvUSTV.AKTUALISIERUNGS_INTERVALL = -1
|
||||||
Me.dgvUSTV.AllowUserToAddRows = False
|
Me.dgvUSTV.AllowUserToAddRows = False
|
||||||
Me.dgvUSTV.AllowUserToDeleteRows = False
|
Me.dgvUSTV.AllowUserToDeleteRows = False
|
||||||
DataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
|
DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
|
||||||
Me.dgvUSTV.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle3
|
Me.dgvUSTV.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2
|
||||||
Me.dgvUSTV.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
Me.dgvUSTV.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
||||||
Me.dgvUSTV.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.dgvUSTV.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.dgvUSTV.Location = New System.Drawing.Point(0, 108)
|
Me.dgvUSTV.Location = New System.Drawing.Point(0, 108)
|
||||||
@@ -178,6 +179,18 @@ Partial Class usrCntlUSTV
|
|||||||
Me.Panel1.Size = New System.Drawing.Size(1737, 108)
|
Me.Panel1.Size = New System.Drawing.Size(1737, 108)
|
||||||
Me.Panel1.TabIndex = 0
|
Me.Panel1.TabIndex = 0
|
||||||
'
|
'
|
||||||
|
'btnoffeneAntraege
|
||||||
|
'
|
||||||
|
Me.btnoffeneAntraege.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnoffeneAntraege.ForeColor = System.Drawing.Color.Black
|
||||||
|
Me.btnoffeneAntraege.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
|
Me.btnoffeneAntraege.Location = New System.Drawing.Point(806, 24)
|
||||||
|
Me.btnoffeneAntraege.Name = "btnoffeneAntraege"
|
||||||
|
Me.btnoffeneAntraege.Size = New System.Drawing.Size(83, 40)
|
||||||
|
Me.btnoffeneAntraege.TabIndex = 79
|
||||||
|
Me.btnoffeneAntraege.Text = "offene Anträge"
|
||||||
|
Me.btnoffeneAntraege.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
'txtSucheID
|
'txtSucheID
|
||||||
'
|
'
|
||||||
Me.txtSucheID.Location = New System.Drawing.Point(554, 36)
|
Me.txtSucheID.Location = New System.Drawing.Point(554, 36)
|
||||||
@@ -780,6 +793,7 @@ Partial Class usrCntlUSTV
|
|||||||
'Panel3
|
'Panel3
|
||||||
'
|
'
|
||||||
Me.Panel3.AutoSize = True
|
Me.Panel3.AutoSize = True
|
||||||
|
Me.Panel3.Controls.Add(Me.btn_Zahlungen_importieren)
|
||||||
Me.Panel3.Controls.Add(Me.btn3470)
|
Me.Panel3.Controls.Add(Me.btn3470)
|
||||||
Me.Panel3.Controls.Add(Me.Button4)
|
Me.Panel3.Controls.Add(Me.Button4)
|
||||||
Me.Panel3.Controls.Add(Me.btnVZ)
|
Me.Panel3.Controls.Add(Me.btnVZ)
|
||||||
@@ -940,17 +954,20 @@ Partial Class usrCntlUSTV
|
|||||||
Me.ContextMenuStrip4.Name = "ContextMenuStrip1"
|
Me.ContextMenuStrip4.Name = "ContextMenuStrip1"
|
||||||
Me.ContextMenuStrip4.Size = New System.Drawing.Size(61, 4)
|
Me.ContextMenuStrip4.Size = New System.Drawing.Size(61, 4)
|
||||||
'
|
'
|
||||||
'btnoffeneAntraege
|
'btn_Zahlungen_importieren
|
||||||
'
|
'
|
||||||
Me.btnoffeneAntraege.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
Me.btn_Zahlungen_importieren.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
Me.btnoffeneAntraege.ForeColor = System.Drawing.Color.Black
|
Me.btn_Zahlungen_importieren.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
|
||||||
Me.btnoffeneAntraege.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
Me.btn_Zahlungen_importieren.ForeColor = System.Drawing.Color.Black
|
||||||
Me.btnoffeneAntraege.Location = New System.Drawing.Point(806, 24)
|
Me.btn_Zahlungen_importieren.Image = Global.SDL.My.Resources.Resources.Excel_logo
|
||||||
Me.btnoffeneAntraege.Name = "btnoffeneAntraege"
|
Me.btn_Zahlungen_importieren.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||||
Me.btnoffeneAntraege.Size = New System.Drawing.Size(83, 40)
|
Me.btn_Zahlungen_importieren.Location = New System.Drawing.Point(665, 6)
|
||||||
Me.btnoffeneAntraege.TabIndex = 79
|
Me.btn_Zahlungen_importieren.Name = "btn_Zahlungen_importieren"
|
||||||
Me.btnoffeneAntraege.Text = "offene Anträge"
|
Me.btn_Zahlungen_importieren.Size = New System.Drawing.Size(132, 40)
|
||||||
Me.btnoffeneAntraege.UseVisualStyleBackColor = True
|
Me.btn_Zahlungen_importieren.TabIndex = 31
|
||||||
|
Me.btn_Zahlungen_importieren.Text = "Erstattungspos. importieren"
|
||||||
|
Me.btn_Zahlungen_importieren.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||||
|
Me.btn_Zahlungen_importieren.UseVisualStyleBackColor = True
|
||||||
'
|
'
|
||||||
'usrCntlUSTV
|
'usrCntlUSTV
|
||||||
'
|
'
|
||||||
@@ -1030,4 +1047,5 @@ Partial Class usrCntlUSTV
|
|||||||
Friend WithEvents btn3470 As Button
|
Friend WithEvents btn3470 As Button
|
||||||
Friend WithEvents ContextMenuStrip4 As ContextMenuStrip
|
Friend WithEvents ContextMenuStrip4 As ContextMenuStrip
|
||||||
Friend WithEvents btnoffeneAntraege As Button
|
Friend WithEvents btnoffeneAntraege As Button
|
||||||
|
Friend WithEvents btn_Zahlungen_importieren As Button
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
Imports System.ComponentModel
|
Imports System.ComponentModel
|
||||||
|
Imports System.Linq.Expressions
|
||||||
|
Imports System.Text
|
||||||
|
Imports GrapeCity.DataVisualization.TypeScript
|
||||||
Imports Microsoft.Office.Interop
|
Imports Microsoft.Office.Interop
|
||||||
Imports VERAG_PROG_ALLGEMEIN
|
Imports VERAG_PROG_ALLGEMEIN
|
||||||
|
|
||||||
@@ -1745,4 +1748,273 @@ Public Class usrCntlUSTV
|
|||||||
cbxDifferenzbetrag.CheckState = CheckState.Checked
|
cbxDifferenzbetrag.CheckState = CheckState.Checked
|
||||||
init(,,, True)
|
init(,,, True)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub btn_Zahlungen_importieren_Click(sender As Object, e As EventArgs) Handles btn_Zahlungen_importieren.Click
|
||||||
|
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
Dim fd As New OpenFileDialog
|
||||||
|
fd.InitialDirectory = "\\share01.verag.ost.dmn\F\19 VERAG 360 - MDM\MWST Eingänge\"
|
||||||
|
fd.Filter = "Excel Dateien (*.xlsx)|*.xlsx"
|
||||||
|
|
||||||
|
If fd.ShowDialog() <> DialogResult.OK Then Exit Sub
|
||||||
|
|
||||||
|
If Not fd.FileName.ToUpper().EndsWith(".XLSX") Then
|
||||||
|
MessageBox.Show("Bitte eine XLSX-Datei auswählen.")
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim exclApp As Object = Nothing
|
||||||
|
Dim Datei As Object = Nothing
|
||||||
|
Dim Blatt As Object = Nothing
|
||||||
|
|
||||||
|
Dim dt As New DataTable
|
||||||
|
|
||||||
|
If dt IsNot Nothing And Not dt.Columns.Contains("name") Then
|
||||||
|
|
||||||
|
dt.Columns.Add("AntragID", GetType(String))
|
||||||
|
dt.Columns.Add("Steuerbetrag", GetType(Double))
|
||||||
|
dt.Columns.Add("Bank", GetType(String))
|
||||||
|
dt.Columns.Add("BelegNr", GetType(String))
|
||||||
|
dt.Columns.Add("GS", GetType(String))
|
||||||
|
dt.Columns.Add("RZVZ", GetType(String))
|
||||||
|
dt.Columns.Add("Info", GetType(String))
|
||||||
|
dt.Columns.Add("3470", GetType(String))
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
exclApp = CreateObject("Excel.Application")
|
||||||
|
exclApp.DisplayAlerts = False
|
||||||
|
exclApp.CutCopyMode = False
|
||||||
|
|
||||||
|
Datei = exclApp.Workbooks.Open(fd.FileName)
|
||||||
|
Blatt = Datei.Worksheets(1)
|
||||||
|
|
||||||
|
' Header einlesen
|
||||||
|
Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
|
||||||
|
|
||||||
|
For col As Integer = 1 To Blatt.UsedRange.Columns.Count
|
||||||
|
|
||||||
|
Dim header As String = Convert.ToString(Blatt.Cells(3, col).Value).Trim()
|
||||||
|
|
||||||
|
If header <> "" AndAlso Not headerMap.ContainsKey(header) Then
|
||||||
|
headerMap.Add(header, col)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
' Pflichtspalten prüfen
|
||||||
|
Dim requiredHeaders As String() = {
|
||||||
|
"ID",
|
||||||
|
"Steuerbetrag",
|
||||||
|
"BANK",
|
||||||
|
"BelNr",
|
||||||
|
"GS",
|
||||||
|
"RZVZ",
|
||||||
|
"3470",
|
||||||
|
"INFO"
|
||||||
|
}
|
||||||
|
|
||||||
|
For Each h As String In requiredHeaders
|
||||||
|
|
||||||
|
If Not headerMap.ContainsKey(h) Then
|
||||||
|
MsgBox("Pflichtspalte nicht gefunden: " & h)
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count
|
||||||
|
|
||||||
|
For row As Integer = 4 To letzteZeile
|
||||||
|
|
||||||
|
Dim USTAV_ID As String =
|
||||||
|
getTrimedString(Convert.ToString(Blatt.Cells(row, headerMap("ID")).Value), 6)
|
||||||
|
|
||||||
|
Dim Zahlungsbetrag As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("Steuerbetrag")).Value)
|
||||||
|
|
||||||
|
Dim Kuerzel As String =
|
||||||
|
getTrimedString(Convert.ToString(Blatt.Cells(row, headerMap("Spalte1")).Value), 6)
|
||||||
|
|
||||||
|
Dim Bank As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("BANK")).Value)
|
||||||
|
|
||||||
|
Dim GS As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("GS")).Value)
|
||||||
|
|
||||||
|
Dim RZVZ As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("RZVZ")).Value)
|
||||||
|
|
||||||
|
Dim INFO As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("INFO")).Value)
|
||||||
|
|
||||||
|
Dim _3470 As String =
|
||||||
|
Convert.ToString(Blatt.Cells(row, headerMap("3470")).Value)
|
||||||
|
|
||||||
|
If String.IsNullOrWhiteSpace(USTAV_ID) Then
|
||||||
|
Continue For
|
||||||
|
End If
|
||||||
|
|
||||||
|
If IsNumeric(USTAV_ID) AndAlso Bank <> "" AndAlso IsNumeric(Bank) AndAlso GS <> "" Then
|
||||||
|
|
||||||
|
|
||||||
|
Dim R As DataRow = dt.NewRow
|
||||||
|
R("AntragID") = USTAV_ID
|
||||||
|
R("Steuerbetrag") = Zahlungsbetrag
|
||||||
|
R("Bank") = Bank
|
||||||
|
R("BelegNr") = Kuerzel
|
||||||
|
R("GS") = GS
|
||||||
|
R("RZVZ") = RZVZ
|
||||||
|
R("Info") = INFO
|
||||||
|
|
||||||
|
dt.Rows.Add(R)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
If dt.Rows.Count > 0 Then
|
||||||
|
|
||||||
|
If vbYes = MsgBox("Es wurden " & dt.Rows.Count & " Datensätze erkannt. " & vbNewLine & "Sollen diese eingearbeitet werden?", vbYesNoCancel) Then
|
||||||
|
|
||||||
|
For Each r As DataRow In dt.Rows
|
||||||
|
|
||||||
|
Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(r.Item("AntragID"))
|
||||||
|
|
||||||
|
If USTV_ANTRAG.hasEntry Then
|
||||||
|
|
||||||
|
Select Case r.Item("3470").ToString.ToLower
|
||||||
|
Case "ja"
|
||||||
|
If Not USTV_ANTRAG.UStVAn_3470 Then
|
||||||
|
USTV_ANTRAG.UStVAn_3470 = True
|
||||||
|
USTV_ANTRAG.SAVE()
|
||||||
|
End If
|
||||||
|
|
||||||
|
'Case "nein"
|
||||||
|
' If USTV_ANTRAG.UStVAn_3470 Then
|
||||||
|
' USTV_ANTRAG.UStVAn_3470 = False
|
||||||
|
' USTV_ANTRAG.SAVE()
|
||||||
|
' End If
|
||||||
|
|
||||||
|
End Select
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen()
|
||||||
|
UStV_ERS.UStVEr_ID = USTV_ANTRAG.getMaxPosNrErst()
|
||||||
|
UStV_ERS.UStVEr_interneNr = USTV_ANTRAG.getMaxinternePosNrErst()
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
Else
|
||||||
|
Exit Sub
|
||||||
|
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Finally
|
||||||
|
|
||||||
|
If Datei IsNot Nothing Then
|
||||||
|
Datei.Close(False)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If exclApp IsNot Nothing Then
|
||||||
|
exclApp.Quit()
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Blatt IsNot Nothing Then
|
||||||
|
Runtime.InteropServices.Marshal.ReleaseComObject(Blatt)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Datei IsNot Nothing Then
|
||||||
|
Runtime.InteropServices.Marshal.ReleaseComObject(Datei)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If exclApp IsNot Nothing Then
|
||||||
|
Runtime.InteropServices.Marshal.ReleaseComObject(exclApp)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Blatt = Nothing
|
||||||
|
Datei = Nothing
|
||||||
|
exclApp = Nothing
|
||||||
|
|
||||||
|
GC.Collect()
|
||||||
|
GC.WaitForPendingFinalizers()
|
||||||
|
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
|
||||||
|
MessageBox.Show(ex.Message & Environment.NewLine & ex.StackTrace)
|
||||||
|
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Me.Refresh()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Function getTrimedString(s As String, l As Integer) As String
|
||||||
|
Try
|
||||||
|
If s Is Nothing Then Return ""
|
||||||
|
If s.ToString.Length > l Then
|
||||||
|
Return s.Substring(0, l)
|
||||||
|
End If
|
||||||
|
Return s.ToString
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("getTrimedString: " & ex.Message & ex.StackTrace)
|
||||||
|
End Try
|
||||||
|
Return ""
|
||||||
|
End Function
|
||||||
|
Function getTrimedStringACCES(s As Object, l As Integer) As String
|
||||||
|
|
||||||
|
Try
|
||||||
|
If s Is Nothing Then Return ""
|
||||||
|
If s Is DBNull.Value Then Return ""
|
||||||
|
If s.ToString.Length > l Then
|
||||||
|
Return s.Substring(0, l)
|
||||||
|
End If
|
||||||
|
Return s
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("getTrimedString: " & ex.Message & ex.StackTrace)
|
||||||
|
End Try
|
||||||
|
Return ""
|
||||||
|
End Function
|
||||||
|
Function getTrimedStringACCESEUR(s As Object, l As Integer) As String
|
||||||
|
|
||||||
|
Try
|
||||||
|
If s Is Nothing Then Return ""
|
||||||
|
If s Is DBNull.Value Then Return ""
|
||||||
|
If s.ToString.Length > l Then
|
||||||
|
Return s.Substring(0, l)
|
||||||
|
End If
|
||||||
|
|
||||||
|
If IsNumeric(s) Then
|
||||||
|
Return CDbl(s).ToString("C2")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return s
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
MsgBox("getTrimedString: " & ex.Message & ex.StackTrace)
|
||||||
|
End Try
|
||||||
|
Return ""
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function isleernothing(s) As Object
|
||||||
|
If s Is DBNull.Value Then Return Nothing
|
||||||
|
If s.ToString.Trim = "" Then Return Nothing
|
||||||
|
Return s.trim
|
||||||
|
End Function
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -1708,7 +1708,7 @@ Public Class frmBU_Mahnlauf
|
|||||||
|
|
||||||
'noch keine Unterscheidung der Abteilungen bei MDM, daher hardcodiert.
|
'noch keine Unterscheidung der Abteilungen bei MDM, daher hardcodiert.
|
||||||
Dim MautVertrMail = "z.batinic@verag.ag;alex@verag.ag;maut.ro@verag.ag;ma@verag.ag;n.ljubas@verag.ag;s.vidovic@verag.ag;"
|
Dim MautVertrMail = "z.batinic@verag.ag;alex@verag.ag;maut.ro@verag.ag;ma@verag.ag;n.ljubas@verag.ag;s.vidovic@verag.ag;"
|
||||||
Dim MautFaktMail = "s.kriegner@verag.ag;"
|
Dim MautFaktMail = "s.kriegner@verag.ag;mmdabrechnung@verag.ag;"
|
||||||
|
|
||||||
Select Case cbxKontotyp._value
|
Select Case cbxKontotyp._value
|
||||||
Case "A" : Mail.To = MautVertrMail & MautFaktMail
|
Case "A" : Mail.To = MautVertrMail & MautFaktMail
|
||||||
|
|||||||
2
SDL/kassenbuch/frmBelegNeu.Designer.vb
generated
2
SDL/kassenbuch/frmBelegNeu.Designer.vb
generated
@@ -1782,7 +1782,7 @@ Partial Class frmBelegNeu
|
|||||||
'cm_FT
|
'cm_FT
|
||||||
'
|
'
|
||||||
Me.cm_FT.Name = "ContextMenuStrip1"
|
Me.cm_FT.Name = "ContextMenuStrip1"
|
||||||
Me.cm_FT.Size = New System.Drawing.Size(61, 4)
|
Me.cm_FT.Size = New System.Drawing.Size(181, 26)
|
||||||
'
|
'
|
||||||
'frmBelegNeu
|
'frmBelegNeu
|
||||||
'
|
'
|
||||||
|
|||||||
@@ -1705,8 +1705,8 @@ Public Class frmBelegNeu
|
|||||||
Dim verarbeitet As Boolean = False
|
Dim verarbeitet As Boolean = False
|
||||||
If KASSE.rksv_FT_RestServiceURL <> "" Then
|
If KASSE.rksv_FT_RestServiceURL <> "" Then
|
||||||
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, 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)
|
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)
|
||||||
result.Wait()
|
'result.Wait()
|
||||||
verarbeitet = result.Result
|
verarbeitet = result
|
||||||
Else
|
Else
|
||||||
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
|
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
|
||||||
End If
|
End If
|
||||||
@@ -1962,16 +1962,21 @@ Public Class frmBelegNeu
|
|||||||
KASSE.LOAD(cboKassen._value)
|
KASSE.LOAD(cboKassen._value)
|
||||||
|
|
||||||
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
|
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
|
||||||
|
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
|
||||||
|
|
||||||
If item.Name = "null" Then
|
If item.Name = "null" Then
|
||||||
'beide
|
'beide
|
||||||
Dim result As String = Await client.SignNullReceiptAsync(KASSE.rksv_id)
|
'Dim result As String = Await client.SignNullReceiptAsync(KASSE.rksv_id)
|
||||||
|
|
||||||
|
Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id)
|
||||||
|
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
|
|
||||||
|
|
||||||
ElseIf item.Name = "test" Then
|
ElseIf item.Name = "test" Then
|
||||||
'beide
|
'beide
|
||||||
Dim result As String = Await client.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
|
'Dim result As String = Await client.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
|
||||||
|
Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
|
|
||||||
|
|
||||||
@@ -1982,10 +1987,12 @@ Public Class frmBelegNeu
|
|||||||
|
|
||||||
ElseIf item.Name = "bar" Then
|
ElseIf item.Name = "bar" Then
|
||||||
'beide
|
'beide
|
||||||
Dim result As String = Await client.SignReceiptAsync_test(KASSE.rksv_id)
|
'Dim result As String = Await client.SignReceiptAsync_test(KASSE.rksv_id)
|
||||||
|
Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id)
|
||||||
|
|
||||||
If result <> "" Then
|
If result <> "" Then
|
||||||
If vbYes = MsgBox("Testdaten in DB speichern?", vbYesNoCancel) Then
|
|
||||||
|
If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then
|
||||||
Dim QR_CodeString As String = ""
|
Dim QR_CodeString As String = ""
|
||||||
client.saveRKSV_FT(result, QR_CodeString)
|
client.saveRKSV_FT(result, QR_CodeString)
|
||||||
End If
|
End If
|
||||||
@@ -1997,13 +2004,15 @@ Public Class frmBelegNeu
|
|||||||
|
|
||||||
ElseIf item.Name = "monthly" Then
|
ElseIf item.Name = "monthly" Then
|
||||||
'beide
|
'beide
|
||||||
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
||||||
|
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id)
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
|
|
||||||
ElseIf item.Name = "daily" Then
|
ElseIf item.Name = "daily" Then
|
||||||
'Nur DE
|
'Nur DE
|
||||||
If KASSE.rksv_FT_Country = "DE" Then
|
If KASSE.rksv_FT_Country = "DE" Then
|
||||||
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
||||||
|
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id)
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
Else
|
Else
|
||||||
MsgBox("nicht für AT-Kassen möglich!")
|
MsgBox("nicht für AT-Kassen möglich!")
|
||||||
@@ -2012,12 +2021,14 @@ Public Class frmBelegNeu
|
|||||||
|
|
||||||
ElseIf item.Name = "yearly" Then
|
ElseIf item.Name = "yearly" Then
|
||||||
|
|
||||||
Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
' Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
|
||||||
|
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id)
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
|
|
||||||
ElseIf item.Name = "journal" Then
|
ElseIf item.Name = "journal" Then
|
||||||
|
|
||||||
Dim result As String = Await client.Journal(2)
|
'Dim result As String = Await client.Journal(2)
|
||||||
|
Dim result As String = client_chilkat.Journal(2)
|
||||||
MsgBox(result)
|
MsgBox(result)
|
||||||
|
|
||||||
|
|
||||||
@@ -2030,6 +2041,8 @@ Public Class frmBelegNeu
|
|||||||
|
|
||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
Class TestRKSVW
|
Class TestRKSVW
|
||||||
|
|||||||
@@ -4916,7 +4916,7 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub setBillingDateCompleted(Lieferant_ As String, date_ As Date)
|
Sub setBillingDateCompleted(Lieferant_ As String, date_ As Date)
|
||||||
SQL.doSQL("UPDATE tblMDMEinarbeitung SET cast(billingdate as Date)='" & date_.ToShortDateString & "' WHERE supplier = " & Lieferant_ & " AND billingdate is null ", "FMZOLL")
|
SQL.doSQL("UPDATE tblMDMEinarbeitung SET billingdate ='" & date_.ToShortDateString & "' WHERE supplier = '" & Lieferant_ & "' AND billingdate is null ", "FMZOLL")
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user