Fiskaltrust, Automailversand, etc.

This commit is contained in:
2026-06-19 17:13:38 +02:00
parent cb02f2ac14
commit 123f06f3b1
11 changed files with 1029 additions and 96 deletions

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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 &= "</div>"
TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID,,,, "")
TextHTML &= "</div>"
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

View File

@@ -796,6 +796,7 @@
<Compile Include="Classes\cEP0735_Versand.vb" />
<Compile Include="Classes\cEPBes.vb" />
<Compile Include="Classes\cFinanzOnlineWebService.vb" />
<Compile Include="Classes\cFiskaltrustClient_chilkat.vb" />
<Compile Include="Classes\cFiskal_Daten.vb" />
<Compile Include="Classes\cFormularVorlagen.vb" />
<Compile Include="Classes\cGenWord.vb" />

View File

@@ -23,12 +23,13 @@ Partial Class usrCntlUSTV
<System.Diagnostics.DebuggerStepThrough()>
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

View File

@@ -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

View File

@@ -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

View File

@@ -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
'

View File

@@ -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

View File

@@ -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