Fiskaltrust, Automailversand, etc.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
402
SDL/Classes/cFiskaltrustClient_chilkat.vb
Normal file
402
SDL/Classes/cFiskaltrustClient_chilkat.vb
Normal file
@@ -0,0 +1,402 @@
|
||||
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Reflection
|
||||
Imports Chilkat
|
||||
Imports Newtonsoft.Json
|
||||
|
||||
|
||||
Public Class cFiskaltrustClient_chilkat
|
||||
|
||||
Private ReadOnly _baseUrl As String
|
||||
Private ReadOnly _cashboxId As String
|
||||
Private ReadOnly _accessToken As String
|
||||
Private ReadOnly _country As String
|
||||
|
||||
Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String)
|
||||
_baseUrl = baseUrl.TrimEnd("/"c)
|
||||
_cashboxId = cashboxId
|
||||
_accessToken = accessToken
|
||||
_country = country
|
||||
End Sub
|
||||
|
||||
Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String
|
||||
|
||||
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId)
|
||||
|
||||
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
|
||||
End Function
|
||||
|
||||
Public Function SignReceipt_test(posSystemId As String) As String
|
||||
|
||||
Dim LIST = New List(Of EABelegPositionen)
|
||||
Dim p = New EABelegPositionen
|
||||
p.Mandant = "VERA"
|
||||
p.Niederlassung = "SUB"
|
||||
p.Benutzer = 74
|
||||
p.BelegDat = Now
|
||||
p.BelegNr = 1
|
||||
p.PreislistenNr = 1
|
||||
p.PreislistenPos = 1
|
||||
p.LeistungsNr = 300
|
||||
p.LeistungsBez = "TEST"
|
||||
p.Preis = 10
|
||||
p.Anzahl = 1
|
||||
LIST.Add(p)
|
||||
|
||||
Dim amount = 100
|
||||
Dim vat = 0
|
||||
Dim POS = LIST
|
||||
Dim kindOfPayment = "Cash"
|
||||
|
||||
Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId)
|
||||
|
||||
Return SendChilkat(GetEndpoint("payment"), payload.Emit())
|
||||
End Function
|
||||
|
||||
Public Function SignNullReceipt(posSystemId As String) As String
|
||||
Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
|
||||
End Function
|
||||
|
||||
Public Function SignClosingReceipt(receiptType As String, posSystemId As String) As String
|
||||
|
||||
Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId).Emit())
|
||||
End Function
|
||||
|
||||
Public Function Echo(kassenName As String) As String
|
||||
|
||||
Dim json As New JsonObject()
|
||||
json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
|
||||
|
||||
Return SendChilkat(GetEndpoint("test"), json.Emit())
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Journal(Optional typ As String = "") As String
|
||||
|
||||
Dim endpoint = GetEndpoint("journal")
|
||||
|
||||
If typ <> "" Then endpoint &= "?type=" & typ
|
||||
|
||||
Return SendChilkat(endpoint, "", True)
|
||||
End Function
|
||||
|
||||
Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String
|
||||
|
||||
Dim retries As Integer = 3
|
||||
Dim lastEx As Exception = Nothing
|
||||
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
Dim rest As New Chilkat.Rest
|
||||
Dim failureDesc As String
|
||||
rest.VerboseLogging = True
|
||||
|
||||
|
||||
For i As Integer = 1 To retries
|
||||
|
||||
Try
|
||||
|
||||
Dim uri As New Uri(_baseUrl)
|
||||
|
||||
If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then
|
||||
|
||||
Throw New Exception(rest.LastErrorText)
|
||||
failureDesc = rest.LastErrorText
|
||||
Return failureDesc
|
||||
|
||||
End If
|
||||
|
||||
rest.AddHeader("cashboxid", _cashboxId)
|
||||
rest.AddHeader("accesstoken", _accessToken)
|
||||
|
||||
Dim response As String
|
||||
|
||||
If isGet Then
|
||||
response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint)
|
||||
Else
|
||||
|
||||
|
||||
If _country = "AT" Then
|
||||
rest.AddHeader("Content-Type", "text/plain")
|
||||
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
Else
|
||||
rest.AddHeader("Content-Type", "application/json")
|
||||
response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
|
||||
End If
|
||||
|
||||
|
||||
End If
|
||||
|
||||
If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then
|
||||
Return response
|
||||
Else
|
||||
failureDesc = rest.LastErrorText
|
||||
End If
|
||||
|
||||
Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response)
|
||||
|
||||
Catch ex As Exception
|
||||
lastEx = ex
|
||||
Threading.Thread.Sleep(500)
|
||||
End Try
|
||||
|
||||
Next
|
||||
|
||||
Throw lastEx
|
||||
|
||||
End Function
|
||||
|
||||
Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As JsonObject
|
||||
|
||||
Dim json As New JsonObject()
|
||||
|
||||
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||
json.UpdateString("cbTerminalID", posSystemId)
|
||||
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
|
||||
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
|
||||
json.UpdateString("ftReceiptCase", 4919338172267102209)
|
||||
|
||||
Dim chargeItems = json.AppendArray("cbChargeItems")
|
||||
|
||||
For Each p In POS
|
||||
|
||||
If chargeItems.AddObjectAt(-1) Then
|
||||
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
|
||||
item.UpdateInt("Quantity", p.Anzahl)
|
||||
item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", "."))
|
||||
item.UpdateNumber("VATRate", vat.ToString().Replace(",", "."))
|
||||
item.UpdateString("Description", p.LeistungsBez)
|
||||
item.UpdateString("ftChargeItemCase", 4919338167972134929)
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
|
||||
Dim payItems = json.AppendArray("cbPayItems")
|
||||
payItems.AddObjectAt(-1)
|
||||
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
|
||||
pay.UpdateInt("Quantity", 1)
|
||||
pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
|
||||
pay.UpdateString("Description", kindOfPayment)
|
||||
pay.UpdateString("ftPayItemCase", 4919338167972134913)
|
||||
|
||||
Return json
|
||||
|
||||
End Function
|
||||
|
||||
Private Function BuildPayloadNullReceipt(posSystemId As String, country As String) As JsonObject
|
||||
|
||||
Dim json As New JsonObject()
|
||||
|
||||
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||
json.UpdateString("cbTerminalID", posSystemId)
|
||||
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
|
||||
|
||||
Return json
|
||||
End Function
|
||||
|
||||
Private Function BuildPayloadClosingReceipt(receiptType As String, posSystemId As String) As JsonObject
|
||||
|
||||
Dim json As New JsonObject()
|
||||
|
||||
json.UpdateString("ftCashBoxID", _cashboxId)
|
||||
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
|
||||
json.UpdateString("cbTerminalID", posSystemId)
|
||||
|
||||
Return json
|
||||
End Function
|
||||
|
||||
Private Function GetEndpoint(type As String) As String
|
||||
|
||||
Select Case type
|
||||
|
||||
Case "payment"
|
||||
|
||||
Select Case _country
|
||||
Case "DE" : Return "/json/v1/Sign"
|
||||
Case "AT" : Return "/json/Sign"
|
||||
End Select
|
||||
|
||||
Case "test"
|
||||
|
||||
Select Case _country
|
||||
Case "DE" : Return "/json/v1/Echo"
|
||||
Case "AT" : Return "/json/Echo"
|
||||
End Select
|
||||
|
||||
Case "journal"
|
||||
|
||||
Select Case _country
|
||||
Case "DE" : Return "/json/v0/Journal"
|
||||
Case "AT" : Return "/json/Journal"
|
||||
End Select
|
||||
|
||||
End Select
|
||||
|
||||
Throw New Exception("Unsupported country")
|
||||
|
||||
End Function
|
||||
|
||||
Private Function getVersion(Terminal_ID As String) As String
|
||||
Return Terminal_ID & "_" & Application.ProductVersion
|
||||
End Function
|
||||
|
||||
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String) As Boolean
|
||||
|
||||
If result_zahlung <> "" Then
|
||||
Dim json As New Chilkat.JsonObject
|
||||
Dim success As Boolean = json.Load(result_zahlung)
|
||||
If (success <> True) Then
|
||||
Debug.WriteLine(json.LastErrorText)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim saved As Boolean = False
|
||||
|
||||
Dim ftSig As New cFiskaltrustSignatures()
|
||||
|
||||
Dim ftReceiptMoment As New Chilkat.CkDateTime
|
||||
Dim dt As New Chilkat.DtObj
|
||||
Dim getAsLocal As Boolean = False
|
||||
|
||||
Dim ftID As Integer = -1
|
||||
|
||||
success = json.DateOf("ftReceiptMoment", ftReceiptMoment)
|
||||
Debug.WriteLine(ftReceiptMoment.GetAsTimestamp(getAsLocal))
|
||||
|
||||
With ftSig
|
||||
|
||||
.ftCashBoxID = json.StringOf("ftCashBoxID")
|
||||
.ftQueueID = json.StringOf("ftQueueID")
|
||||
.ftQueueItemID = json.StringOf("ftQueueItemID")
|
||||
.ftQueueRow = json.IntOf("ftQueueRow")
|
||||
.cbTerminalID = json.StringOf("cbTerminalID")
|
||||
.cbReceiptReference = json.StringOf("cbReceiptReference")
|
||||
.ftCashBoxIdentification = json.StringOf("ftCashBoxIdentification")
|
||||
.ftReceiptIdentification = json.StringOf("ftReceiptIdentification")
|
||||
.ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal)
|
||||
.ftState = json.StringOf("ftState")
|
||||
saved = .SAVE()
|
||||
|
||||
End With
|
||||
|
||||
|
||||
Dim num As Integer = json.SizeOfArray("ftSignatures")
|
||||
If num = 0 Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
|
||||
If (json.LastMethodSuccess = False) Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim numSignatures As Integer = Signatures.Size
|
||||
|
||||
For i = 0 To numSignatures - 1
|
||||
|
||||
|
||||
Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i)
|
||||
Dim ftSigPos As New cFiskaltrustSignaturPositions()
|
||||
|
||||
With ftSigPos
|
||||
.ftSignatures = ftSig.ft_id
|
||||
.ftData = SignObj.StringOf("Data")
|
||||
.ftSignatureFormat = SignObj.StringOf("ftSignatureFormat")
|
||||
.ftSignatureType = SignObj.StringOf("ftSignatureType")
|
||||
saved = .SAVE()
|
||||
If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then
|
||||
'QR_CodeString = .ftData
|
||||
End If
|
||||
|
||||
End With
|
||||
|
||||
Next
|
||||
|
||||
|
||||
Return saved
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Public Function exportJournal(ByRef result_Journal As String) As Boolean
|
||||
|
||||
If result_Journal <> "" Then
|
||||
Dim jsonArr As New Chilkat.JsonArray
|
||||
Dim success As Boolean = jsonArr.Load(result_Journal)
|
||||
If (success <> True) Then
|
||||
Debug.WriteLine(jsonArr.LastErrorText)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim dt As New DataTable
|
||||
|
||||
dt.Columns.Add("ftReceiptJournalId", GetType(String))
|
||||
dt.Columns.Add("ftReceiptMoment", GetType(String))
|
||||
dt.Columns.Add("ftReceiptNumber", GetType(String))
|
||||
dt.Columns.Add("ftReceiptTotal", GetType(String))
|
||||
dt.Columns.Add("ftQueueId", GetType(String))
|
||||
dt.Columns.Add("ftReceiptHash", GetType(String))
|
||||
dt.Columns.Add("ftQueueItemId", GetType(String))
|
||||
dt.Columns.Add("TimeStamp", GetType(String))
|
||||
|
||||
Dim i = 0
|
||||
Dim num As Integer = jsonArr.Size
|
||||
If num = 0 Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim tmstmp As New Chilkat.CkDateTime
|
||||
Dim getAsLocal As Boolean = False
|
||||
|
||||
|
||||
While i < num
|
||||
|
||||
Dim SignObj As Chilkat.JsonObject = jsonArr.ObjectAt(i)
|
||||
Dim R As DataRow = dt.NewRow
|
||||
|
||||
With SignObj
|
||||
|
||||
R("ftReceiptJournalId") = .StringOf("ftReceiptJournalId")
|
||||
R("ftReceiptMoment") = .StringOf("ftReceiptMoment")
|
||||
R("ftReceiptNumber") = .IntOf("ftReceiptNumber")
|
||||
R("ftReceiptTotal") = .StringOf("ftReceiptTotal")
|
||||
R("ftQueueId") = .StringOf("ftQueueId")
|
||||
R("ftQueueItemId") = .StringOf("ftQueueItemId")
|
||||
R("ftReceiptHash") = .StringOf("ftReceiptHash")
|
||||
R("TimeStamp") = tmstmp.GetAsTimestamp(getAsLocal)
|
||||
|
||||
End With
|
||||
|
||||
dt.Rows.Add(R)
|
||||
|
||||
i = i + 1
|
||||
End While
|
||||
|
||||
If dt.Rows.Count > 0 Then
|
||||
|
||||
Dim Path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt)
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Sub Log(message As String)
|
||||
Console.WriteLine(message)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
@@ -92,7 +92,7 @@ Public Class cRKSV
|
||||
End Function
|
||||
|
||||
|
||||
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,16 +123,30 @@ 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)
|
||||
'Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
|
||||
'If result <> "" Then
|
||||
' Return client.saveRKSV_FT(result, QR_CodeString)
|
||||
'Else
|
||||
' Return False
|
||||
'End If
|
||||
Else
|
||||
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
|
||||
Dim result = client.SignReceipt(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
|
||||
If result <> "" Then
|
||||
Return client.saveRKSV_FT(result, QR_CodeString)
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -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,7 +707,7 @@ 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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1332,10 +1537,18 @@ Public Class cAutomailversand
|
||||
'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))
|
||||
|
||||
|
||||
@@ -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" />
|
||||
|
||||
46
SDL/USTV/usrCntlUSTV.Designer.vb
generated
46
SDL/USTV/usrCntlUSTV.Designer.vb
generated
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
2
SDL/kassenbuch/frmBelegNeu.Designer.vb
generated
2
SDL/kassenbuch/frmBelegNeu.Designer.vb
generated
@@ -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
|
||||
'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user