diff --git a/SDL/Classes/cFiskaltrustClient.vb b/SDL/Classes/cFiskaltrustClient.vb
index 2b61e0f5..384b82ba 100644
--- a/SDL/Classes/cFiskaltrustClient.vb
+++ b/SDL/Classes/cFiskaltrustClient.vb
@@ -702,7 +702,7 @@ Public Class cFiskaltrustClient
End Function
- Public Function getVersion(Terminal_ID) As String
+ Private Function getVersion(Terminal_ID) As String
Return Terminal_ID & "_" & Application.ProductVersion
diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb
new file mode 100644
index 00000000..ed52b292
--- /dev/null
+++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb
@@ -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
+
diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb
index 8214dc49..c9dd04d9 100644
--- a/SDL/Classes/cRKSV.vb
+++ b/SDL/Classes/cRKSV.vb
@@ -92,7 +92,7 @@ Public Class cRKSV
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
@@ -123,21 +123,35 @@ Public Class cRKSV
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
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)
- If result <> "" Then
- Return client.saveRKSV_FT(result, QR_CodeString)
+ '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
- Return False
+ 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
+ Return client.saveRKSV_FT(result, QR_CodeString)
+ Else
+ Return False
+ End If
+
End If
+
+
+
+
Catch ex As Exception
MsgBox("Es ist ein Fehler bei der Signatur aufgetreten (insertRKSV): " & vbNewLine & ex.Message & ex.StackTrace)
- Return False
+ Return False
End Try
End Function
diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb
index c55d8d9b..d6df9cf0 100644
--- a/SDL/Fakturierung/cAutomailversand.vb
+++ b/SDL/Fakturierung/cAutomailversand.vb
@@ -16,7 +16,6 @@ Public Class cAutomailversand
'STATUS 3-_> Sammel-Rg gedruckt
'STATUS 4-_> ? irgendwas mit SR 6 Maut/Diesel??
-
'NUR STATUS 2 -> d.b. Rechnungsdatum + RechnungsNr vergeben!
Dim rechnungenMailversand = ""
@@ -160,7 +159,7 @@ Public Class cAutomailversand
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
- 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"
@@ -249,6 +248,7 @@ Public Class cAutomailversand
setEmpfaengerMail_ER(SPEDBUCH, AD, MailTo, MailtoCC, MailtoBCC, "")
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
+
MailTo = ""
MailtoCC = ""
MailtoBCC = setAccountToSend(FirmaID)
@@ -275,7 +275,7 @@ Public Class cAutomailversand
Dim Mailsubject As String = ""
Dim HTMLMail As String = ""
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"
@@ -530,18 +530,124 @@ Public Class cAutomailversand
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)
+ '---- 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 pdfAnhang_merge As Boolean = False
'----------------------------------------------------------------- EINZELRECHNUNGEN------------------------------------------------
If RECHNUNG IsNot Nothing Then
+ '1--> Beleg
For Each l In listPDFs
ATTACHMENTS.Add(New cFakt_MailATTach(l, If(RECHNUNG.BelegartenKz = "AR", "Rechnung.pdf", "Gutschrift.pdf")))
Next
+ '2--> Anhänge der Rechnung
Dim zsmf_ER As New List(Of String)
RECHNUNG.LOAD_ANHAENGE()
@@ -549,7 +655,7 @@ Public Class cAutomailversand
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 path <> "" Then
@@ -568,7 +674,7 @@ Public Class cAutomailversand
Next
-
+ '3--> Zoll-Anhänge aus SPED-BUCH
If SPEDBUCH IsNot Nothing Then
Dim ZOLL = IIf(SPEDBUCH.DokumentId_Mitteilung IsNot Nothing, "AT", "DE")
@@ -577,7 +683,7 @@ Public Class cAutomailversand
Case "DE"
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
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
zsmf_ER.Add(path)
Else
@@ -587,7 +693,7 @@ Public Class cAutomailversand
End If
If SPEDBUCH.DokumentId_VBD IsNot Nothing Then
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
zsmf_ER.Add(path)
Else
@@ -601,11 +707,11 @@ Public Class cAutomailversand
If SPEDBUCH.DokumentId_Steuerbeleg IsNot Nothing Then
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
zsmf_ER.Add(path)
Else
- ATTACHMENTS.Add(New cFakt_MailATTach(path, "Verzollungsnachweis.pdf"))
+ ATTACHMENTS.Add(New cFakt_MailATTach(path, "Verzollungsnachweis.pdf"))
End If
End If
@@ -613,7 +719,7 @@ Public Class cAutomailversand
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
zsmf_ER.Add(path)
Else
@@ -689,7 +795,7 @@ Public Class cAutomailversand
Case "DE"
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
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
zsmf_SR.Add(path)
Else
@@ -699,7 +805,7 @@ Public Class cAutomailversand
End If
If SPEDBUCH_TEMP.DokumentId_VBD IsNot Nothing Then
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
zsmf_SR.Add(path)
Else
@@ -713,7 +819,7 @@ Public Class cAutomailversand
If SPEDBUCH_TEMP.DokumentId_Steuerbeleg IsNot Nothing Then
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
zsmf_SR.Add(path)
Else
@@ -725,7 +831,7 @@ Public Class cAutomailversand
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
zsmf_SR.Add(path)
Else
@@ -755,7 +861,7 @@ Public Class cAutomailversand
Dim path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId)
'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 path <> "" Then
@@ -826,10 +932,20 @@ Public Class cAutomailversand
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
+ 'True
+ ' → mergeList
+ ' → später zu einer PDF zusammenführen
+
+ 'False
+ ' → sofort als separates Mail-Attachment
+
Select Case Firma
Case 19
If Filiale = 4817 Then
@@ -848,7 +964,7 @@ Public Class cAutomailversand
Else
'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
End If
End If
@@ -887,6 +1003,95 @@ Public Class cAutomailversand
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
@@ -1246,11 +1451,11 @@ Public Class cAutomailversand
End If
Dim AD As New cAdressen(kundenNr)
- Dim KD As New cKunde(kundenNr)
- Dim Sprache As String = "EN"
- Dim attachList As New List(Of String)
+ Dim KD As New cKunde(kundenNr)
+ Dim Sprache As String = "EN"
+ Dim attachList As New List(Of String)
- Subject = "Meldung innergemeinschaftlicher Erwerb - " & AD.Ordnungsbegriff
+ Subject = "Meldung innergemeinschaftlicher Erwerb - " & AD.Ordnungsbegriff
Select Case RechnungsLandKz
Case "A", "AT", "D", "DE", "CH" : Sprache = "DE"
@@ -1303,54 +1508,62 @@ Public Class cAutomailversand
- If showMail Then
+ If showMail Then
- Dim outl As New Outlook.Application
- Dim Mail_StbFA As Microsoft.Office.Interop.Outlook.MailItem
- Mail_StbFA = outl.CreateItem(0)
- Mail_StbFA.Subject = Subject
+ Dim outl As New Outlook.Application
+ Dim Mail_StbFA As Microsoft.Office.Interop.Outlook.MailItem
+ Mail_StbFA = outl.CreateItem(0)
+ Mail_StbFA.Subject = Subject
- If FirmaID = 24 Then Mail_StbFA.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR",, True)
+ If FirmaID = 24 Then Mail_StbFA.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR",, True)
- TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID,,,, "")
- TextHTML &= ""
+ TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID,,,, "")
+ TextHTML &= ""
- Mail_StbFA.HTMLBody = TextHTML
+ Mail_StbFA.HTMLBody = TextHTML
- Mail_StbFA.To = MailTo
- Mail_StbFA.CC = MailCC
+ Mail_StbFA.To = MailTo
+ Mail_StbFA.CC = MailCC
- ''-----------------------------------------------------------------
- ''Steuerbescheid anfügen
- ''-----------------------------------------------------------------
- 'getAnhaenge(False)
+ ''-----------------------------------------------------------------
+ ''Steuerbescheid anfügen
+ ''-----------------------------------------------------------------
+ 'getAnhaenge(False)
- ''Anhang an Mail anfügen
- ''-----------------------------------------------------------------
- 'addAttachments(Mail_StbFA, RechnungsNr, cbxMergePDF.Checked)
- ''-----------------------------------------------------------------
+ ''Anhang an Mail anfügen
+ ''-----------------------------------------------------------------
+ '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()
+
+ Else
+
+ LoadZollAttachments(SPEDBUCH, SPEDBUCH.FilialenNr, FirmaID, False, attachList, Nothing, True)
+
+ 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))
+
+ ''-----------------------------------------------------------------
+ ''Steuerbescheid anfügen
+ ''-----------------------------------------------------------------
+ 'getAnhaenge(False)
+
+ ''Anhang an Mail anfügen
+ ''-----------------------------------------------------------------
+ 'addAttachments(Mail_StbFA, RechnungsNr, cbxMergePDF.Checked)
+ ''-----------------------------------------------------------------
- Mail_StbFA.Display()
-
- Else
- 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))
-
- ''-----------------------------------------------------------------
- ''Steuerbescheid anfügen
- ''-----------------------------------------------------------------
- 'getAnhaenge(False)
-
- ''Anhang an Mail anfügen
- ''-----------------------------------------------------------------
- 'addAttachments(Mail_StbFA, RechnungsNr, cbxMergePDF.Checked)
- ''-----------------------------------------------------------------
-
-
- End If
+ End If
diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj
index facb9532..44032f34 100644
--- a/SDL/SDL.vbproj
+++ b/SDL/SDL.vbproj
@@ -796,6 +796,7 @@
+
diff --git a/SDL/USTV/usrCntlUSTV.Designer.vb b/SDL/USTV/usrCntlUSTV.Designer.vb
index d623e959..9b96f204 100644
--- a/SDL/USTV/usrCntlUSTV.Designer.vb
+++ b/SDL/USTV/usrCntlUSTV.Designer.vb
@@ -23,12 +23,13 @@ Partial Class usrCntlUSTV
Private Sub InitializeComponent()
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))
Me.pnlFilter = New System.Windows.Forms.Panel()
Me.dgvUSTV = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.Label1 = New System.Windows.Forms.Label()
Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.btnoffeneAntraege = New System.Windows.Forms.Button()
Me.txtSucheID = New System.Windows.Forms.TextBox()
Me.MyComboBox1 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Label12 = New System.Windows.Forms.Label()
@@ -84,7 +85,7 @@ Partial Class usrCntlUSTV
Me.ContextMenuStrip2 = 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.btnoffeneAntraege = New System.Windows.Forms.Button()
+ Me.btn_Zahlungen_importieren = New System.Windows.Forms.Button()
CType(Me.dgvUSTV, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel1.SuspendLayout()
Me.Panel2.SuspendLayout()
@@ -106,8 +107,8 @@ Partial Class usrCntlUSTV
Me.dgvUSTV.AKTUALISIERUNGS_INTERVALL = -1
Me.dgvUSTV.AllowUserToAddRows = 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))
- Me.dgvUSTV.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle3
+ DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.dgvUSTV.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2
Me.dgvUSTV.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvUSTV.Dock = System.Windows.Forms.DockStyle.Fill
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.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
'
Me.txtSucheID.Location = New System.Drawing.Point(554, 36)
@@ -780,6 +793,7 @@ Partial Class usrCntlUSTV
'Panel3
'
Me.Panel3.AutoSize = True
+ Me.Panel3.Controls.Add(Me.btn_Zahlungen_importieren)
Me.Panel3.Controls.Add(Me.btn3470)
Me.Panel3.Controls.Add(Me.Button4)
Me.Panel3.Controls.Add(Me.btnVZ)
@@ -940,17 +954,20 @@ Partial Class usrCntlUSTV
Me.ContextMenuStrip4.Name = "ContextMenuStrip1"
Me.ContextMenuStrip4.Size = New System.Drawing.Size(61, 4)
'
- 'btnoffeneAntraege
+ 'btn_Zahlungen_importieren
'
- 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
+ Me.btn_Zahlungen_importieren.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btn_Zahlungen_importieren.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+ Me.btn_Zahlungen_importieren.ForeColor = System.Drawing.Color.Black
+ Me.btn_Zahlungen_importieren.Image = Global.SDL.My.Resources.Resources.Excel_logo
+ Me.btn_Zahlungen_importieren.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.btn_Zahlungen_importieren.Location = New System.Drawing.Point(665, 6)
+ Me.btn_Zahlungen_importieren.Name = "btn_Zahlungen_importieren"
+ Me.btn_Zahlungen_importieren.Size = New System.Drawing.Size(132, 40)
+ 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
'
@@ -1030,4 +1047,5 @@ Partial Class usrCntlUSTV
Friend WithEvents btn3470 As Button
Friend WithEvents ContextMenuStrip4 As ContextMenuStrip
Friend WithEvents btnoffeneAntraege As Button
+ Friend WithEvents btn_Zahlungen_importieren As Button
End Class
diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb
index 558945ef..d0c00a26 100644
--- a/SDL/USTV/usrCntlUSTV.vb
+++ b/SDL/USTV/usrCntlUSTV.vb
@@ -1,4 +1,7 @@
Imports System.ComponentModel
+Imports System.Linq.Expressions
+Imports System.Text
+Imports GrapeCity.DataVisualization.TypeScript
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
@@ -729,10 +732,10 @@ Public Class usrCntlUSTV
MsgBox("Funktion nicht implementiert!")
- End If
-
End If
+ End If
+
End Sub
@@ -1745,4 +1748,273 @@ Public Class usrCntlUSTV
cbxDifferenzbetrag.CheckState = CheckState.Checked
init(,,, True)
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
diff --git a/SDL/buchhaltung/frmBU_Mahnlauf.vb b/SDL/buchhaltung/frmBU_Mahnlauf.vb
index 558247f5..d430cb13 100644
--- a/SDL/buchhaltung/frmBU_Mahnlauf.vb
+++ b/SDL/buchhaltung/frmBU_Mahnlauf.vb
@@ -1708,7 +1708,7 @@ Public Class frmBU_Mahnlauf
'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 MautFaktMail = "s.kriegner@verag.ag;"
+ Dim MautFaktMail = "s.kriegner@verag.ag;mmdabrechnung@verag.ag;"
Select Case cbxKontotyp._value
Case "A" : Mail.To = MautVertrMail & MautFaktMail
diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb
index 5a6be92f..22caeabb 100644
--- a/SDL/kassenbuch/frmBelegNeu.Designer.vb
+++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb
@@ -1782,7 +1782,7 @@ Partial Class frmBelegNeu
'cm_FT
'
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
'
diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb
index 6b7ab546..9b8e1989 100644
--- a/SDL/kassenbuch/frmBelegNeu.vb
+++ b/SDL/kassenbuch/frmBelegNeu.vb
@@ -1705,8 +1705,8 @@ Public Class frmBelegNeu
Dim verarbeitet As Boolean = False
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)
- result.Wait()
- verarbeitet = result.Result
+ 'result.Wait()
+ verarbeitet = result
Else
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If
@@ -1962,16 +1962,21 @@ Public Class frmBelegNeu
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_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
'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)
ElseIf item.Name = "test" Then
'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)
@@ -1982,10 +1987,12 @@ Public Class frmBelegNeu
ElseIf item.Name = "bar" Then
'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 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 = ""
client.saveRKSV_FT(result, QR_CodeString)
End If
@@ -1997,13 +2004,15 @@ Public Class frmBelegNeu
ElseIf item.Name = "monthly" Then
'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)
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)
+ '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)
Else
MsgBox("nicht für AT-Kassen möglich!")
@@ -2012,12 +2021,14 @@ Public Class frmBelegNeu
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)
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)
@@ -2030,6 +2041,8 @@ Public Class frmBelegNeu
End Function
+
+
End Class
Class TestRKSVW
diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb
index 4a72cf34..9d3f34c6 100644
--- a/SDL/mdm/frmMDMDatenverarbetiung.vb
+++ b/SDL/mdm/frmMDMDatenverarbetiung.vb
@@ -4916,7 +4916,7 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
End Sub
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