Anbindung AZEZ-KI API, etc.

This commit is contained in:
2025-04-29 11:29:23 +02:00
parent 99d9549c95
commit aedf2c7375
8 changed files with 937 additions and 615 deletions

View File

@@ -1,4 +1,6 @@
Public Class usrcntlVAT_ATEZ
Imports System.Web.UI.WebControls.Expressions
Public Class usrcntlVAT_ATEZ
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Dim user, pw As String
Dim land As String
@@ -61,17 +63,19 @@
Sub initDataTable()
dataTable.Columns.Add("count", GetType(Integer))
dataTable.Columns.Add("currency", GetType(String))
dataTable.Columns.Add("invoice_id", GetType(String))
dataTable.Columns.Add("seller_VAT_id", GetType(String))
dataTable.Columns.Add("seller_address_city", GetType(String))
dataTable.Columns.Add("seller_address_country", GetType(String))
dataTable.Columns.Add("seller_address_postcode", GetType(String))
dataTable.Columns.Add("total_vat_amount", GetType(Double))
dataTable.Columns.Add("seller_address_street", GetType(String))
dataTable.Columns.Add("seller_name", GetType(String))
dataTable.Columns.Add("status", GetType(String))
dataTable.Columns.Add("invoice_date", GetType(DateTime))
dataTable.Columns.Add("document_count", GetType(Integer))
End Sub
@@ -83,37 +87,64 @@
If dgvVAT.Columns.Count > 0 Then
With dgvVAT
.RowHeadersWidth = 10
.Columns("count").HeaderText = "#"
.Columns("count").Width = 25
.Columns("currency").HeaderText = "Währung"
.Columns("currency").Width = 50
.Columns("invoice_id").HeaderText = "Rechnungs-Nr"
.Columns("seller_VAT_id").HeaderText = "UID-Nr"
.Columns("seller_VAT_id").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("seller_VAT_id").Width = 100
.Columns("seller_address_city").Width = 100
.Columns("seller_address_city").HeaderText = "Nr"
.Columns("seller_address_city").HeaderText = "Stadt"
.Columns("seller_address_country").Visible = False
.Columns("seller_address_country").HeaderText = "Land"
.Columns("seller_address_postcode").Width = 100
.Columns("total_vat_amount").HeaderText = "MWST"
.Columns("seller_address_postcode").Width = 75
.Columns("seller_address_postcode").HeaderText = "PLZ"
.Columns("seller_address_street").Width = 100
.Columns("seller_address_street").Width = 125
.Columns("seller_address_street").HeaderText = "Strasse"
.Columns("seller_name").Width = 100
.Columns("seller_name").HeaderText = "Verkäufer"
.Columns("status").Width = 100
.Columns("seller_name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("seller_name").HeaderText = "Leistender"
.Columns("status").Width = 75
.Columns("status").HeaderText = "Status"
.Columns("invoice_date").Width = 100
.Columns("invoice_date").HeaderText = "Rechnungsdatum"
.Columns("document_count").HeaderText = "Seite"
.Columns("document_count").Width = 50
End With
For Each row As DataGridViewRow In dgvVAT.Rows
If Not IsDBNull(row.Cells("status").Value) Then
Dim akiv As String = (row.Cells("status").Value.ToString).ToLower
If akiv = "active" Then
row.DefaultCellStyle.BackColor = Color.LightGreen
If akiv = "success" Then
If Not IsDBNull(row.Cells("total_vat_amount").Value) Then
If IsNumeric(row.Cells("total_vat_amount").Value) AndAlso row.Cells("total_vat_amount").Value <> 0 Then
row.DefaultCellStyle.BackColor = Color.LightGreen
Else
row.DefaultCellStyle.BackColor = Color.IndianRed
End If
Else
row.DefaultCellStyle.BackColor = Color.LightYellow
End If
ElseIf akiv = "nonactive" Then
row.DefaultCellStyle.BackColor = Color.IndianRed
Else
row.DefaultCellStyle.BackColor = Color.LightYellow
End If
End If
Next
End If
@@ -127,7 +158,8 @@
' If Me.Parent.GetType() Is GetType(Form) Then o = Me.FindForm
For Each row As DataGridViewRow In dgvVAT.SelectedRows
va = New VAT(IIf(IsDBNull(row.Cells("currency").Value), "", row.Cells("currency").Value),
va = New VAT(IIf(IsDBNull(row.Cells("count").Value), "", row.Cells("count").Value),
IIf(IsDBNull(row.Cells("currency").Value), "", row.Cells("currency").Value),
IIf(IsDBNull(row.Cells("invoice_id").Value), "", row.Cells("invoice_id").Value),
IIf(IsDBNull(row.Cells("seller_VAT_id").Value), "", row.Cells("seller_VAT_id").Value),
IIf(IsDBNull(row.Cells("seller_address_city").Value), "", row.Cells("seller_address_city").Value),
@@ -137,7 +169,8 @@
IIf(IsDBNull(row.Cells("seller_name").Value), "", row.Cells("seller_name").Value),
IIf(IsDBNull(row.Cells("total_VAT_amount").Value), "", row.Cells("total_VAT_amount").Value),
IIf(IsDBNull(row.Cells("invoice_date").Value) Or Not IsDate(row.Cells("invoice_date").Value), Nothing, CDate(row.Cells("invoice_date").Value)),
IIf(IsDBNull(row.Cells("status").Value), "", row.Cells("status").Value))
IIf(IsDBNull(row.Cells("status").Value), "", row.Cells("status").Value),
IIf(IsDBNull(row.Cells("document_count").Value), "", row.Cells("document_count").Value))
Next
If va.status.ToLower <> "success" Then
@@ -161,6 +194,7 @@
Public Class VAT
Public Property count As Integer
Public Property currency As String
Public Property invoice_id As String
Public Property seller_VAT_id As String
@@ -172,9 +206,11 @@
Public Property invoice_date As Date
Public Property total_VAT_amount As String
Public Property status As String
Public Property document_count As Integer
Public Sub New(_currency As String, _invoice_id As String, _seller_VAT_id As String, _seller_address_city As String, _seller_address_country As String, _seller_address_postcode As String, _seller_address_street As String, _seller_name As String, _total_VAT_amount As String, _invoice_date As DateTime, _status As String)
Public Sub New(_count As Integer, _currency As String, _invoice_id As String, _seller_VAT_id As String, _seller_address_city As String, _seller_address_country As String, _seller_address_postcode As String, _seller_address_street As String, _seller_name As String, _total_VAT_amount As String, _invoice_date As DateTime, _status As String, _document_count As Integer)
count = _count
currency = _currency
invoice_id = _invoice_id
seller_VAT_id = _seller_VAT_id
@@ -186,6 +222,7 @@
total_VAT_amount = _total_VAT_amount
invoice_date = _invoice_date
status = _status
document_count = _document_count
End Sub

File diff suppressed because it is too large Load Diff

View File

@@ -123,6 +123,9 @@
<metadata name="ContextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>174, 17</value>
</metadata>
<metadata name="cnS_KIUPLOAD.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>330, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>

View File

@@ -1,9 +1,7 @@
Imports System.IO
Imports System.Reflection
Imports System.Windows.Documents
Imports com
Imports itextsharp.text.pdf
Imports itextsharp.text.pdf.parser
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
@@ -578,10 +576,7 @@ Public Class frmMDM_USTVAntrag
setinfofields()
If VERAG_PROG_ALLGEMEIN.cAllgemein.AUTO_ABF_NR Then btnAbfertigungsNrVergeben.Visible = True
scanUSTVA.INIT(USTV_ANTRAG.UStVAn_KuNr, "MDM", "USTVA_KI_" & USTV_ANTRAG.UStVAn_ID)
btnPDFauslesen.Enabled = scanUSTVA.getDS().da_id > 0
initScanUSTVA()
End Sub
@@ -699,7 +694,7 @@ Public Class frmMDM_USTVAntrag
Return False
End Function
Shared Function loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien, MWSTSummenAusBeleg) As Boolean
Shared Function loadUSTVFrom_PLOSE(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean, MWSTSummenAusBeleg As Boolean) As Boolean
Try
Dim bytSchnittstellenNr = IIf(MWSTSummenAusBeleg, 11, 6)
Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID)
@@ -799,21 +794,21 @@ Public Class frmMDM_USTVAntrag
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung = "EUR" Then
UST_org = Math.round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
ElseIf USTV_ANTRAG.UStVAn_Währungscode = "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then
UST_EUR = Math.round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
UST_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
ElseIf USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then
UST_EUR = Math.round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
UST_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
End If
If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then
umrechKurs = Math.floor((UST_org / UST_EUR * 100 + 0.5)) / 100
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
@@ -852,7 +847,7 @@ Public Class frmMDM_USTVAntrag
End Function
Shared Function loadUSTVFrom_VERAG(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean
Shared Function loadUSTVFrom_VERAG(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean
Try
If Antrag_LandKz <> "AT" Then
@@ -937,7 +932,7 @@ Public Class frmMDM_USTVAntrag
Dim umrechKurs As Double = 1
Dim UST_EUR = CDbl(r.Item("SteuerbetragLokal"))
UST_EUR = Math.round(UST_EUR, 2)
UST_EUR = Math.Round(UST_EUR, 2)
USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR
USTV_POS.UStVPo_Umrechnungskurs = umrechKurs
@@ -968,7 +963,7 @@ Public Class frmMDM_USTVAntrag
End Function
Shared Function loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean
Shared Function loadUSTVFrom_RMC(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean
Try
Dim bytSchnittstellenNr = 7
@@ -1023,12 +1018,12 @@ Public Class frmMDM_USTVAntrag
'umrechKurs = frmdw / eur
umrechKurs = Math.floor((UST_org / UST_EUR * 100 + 0.5)) / 100
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
If CDbl(r.Item("rmc_betragMWST")) <> 0 Then
USTV_POS.UStVPo_USteuerbetragEUR = Math.round((r.Item("rmc_betragMWST") / umrechKurs), 2)
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round((r.Item("rmc_betragMWST") / umrechKurs), 2)
USTV_POS.UStVPo_Umrechnungskurs = umrechKurs
USTV_POS.UStVPo_USteuerbetrag = r.Item("rmc_betragMWST")
End If
@@ -1049,7 +1044,7 @@ Public Class frmMDM_USTVAntrag
End Try
End Function
Shared Function loadUSTVFrom_MSE(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean
Shared Function loadUSTVFrom_MSE(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean
Try
Dim bytSchnittstellenNr = 9 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden
Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID)
@@ -1100,7 +1095,7 @@ Public Class frmMDM_USTVAntrag
'umrechKurs = UST_org / UST_EUR
umrechKurs = Math.floor((UST_org / UST_EUR * 100 + 0.5)) / 100
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
@@ -1126,7 +1121,7 @@ Public Class frmMDM_USTVAntrag
End Try
End Function
Shared Function loadUSTVFrom_UTA(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean
Shared Function loadUSTVFrom_UTA(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean
Try
Dim bytSchnittstellenNr = 10 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden
Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID)
@@ -1181,7 +1176,7 @@ Public Class frmMDM_USTVAntrag
If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then
umrechKurs = Math.floor((UST_org / UST_EUR * 100 + 0.5)) / 100
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
@@ -1208,7 +1203,7 @@ Public Class frmMDM_USTVAntrag
End Try
End Function
Shared Function loadUSTVFrom_IDS(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean
Shared Function loadUSTVFrom_IDS(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean
Try
'Dim bytSchnittstellenNr = 8 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden
Dim bytSchnittstellenNr = 12
@@ -1292,11 +1287,11 @@ Public Class frmMDM_USTVAntrag
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
UST_org = Math.round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
End If
If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then
umrechKurs = Math.floor((UST_org / UST_EUR * 100 + 0.5)) / 100
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
@@ -1323,7 +1318,7 @@ Public Class frmMDM_USTVAntrag
End Function
Shared Function loadUSTVFrom_ATEZ_KI(UStVAn_ID As Integer, Antrag_LandKz As String, atez_api As cATEZ_NCTS_IN, daid As Integer) As Boolean
Shared Function loadUSTVFrom_ATEZ_KI(UStVAn_ID As Integer, Antrag_LandKz As String, atez_api As cATEZ_NCTS_IN, daid As Integer, pageCount As Integer, documentType As String) As Boolean
Try
Dim bytSchnittstellenNr = -1
@@ -1335,6 +1330,7 @@ Public Class frmMDM_USTVAntrag
If dt IsNot Nothing And Not dt.Columns.Contains("currency") Then
dt.Columns.Add("count", GetType(Integer))
dt.Columns.Add("currency", GetType(String))
dt.Columns.Add("seller_VAT_id", GetType(String))
dt.Columns.Add("seller_address_city", GetType(String))
@@ -1346,6 +1342,7 @@ Public Class frmMDM_USTVAntrag
dt.Columns.Add("invoice_id", GetType(String))
dt.Columns.Add("invoice_date", GetType(String))
dt.Columns.Add("status", GetType(String))
dt.Columns.Add("document_count", GetType(Integer))
End If
Dim failreDesc As String
@@ -1357,8 +1354,8 @@ Public Class frmMDM_USTVAntrag
Else
'If API.SendRequestWithAuthHeader("application/json", failreDesc, "/health", "GET") = "200" Then
'document_type = vat_invoice or receipt
If atez_api.setJsonVAT("vat_invoice", daid) Then
If atez_api.setJsonVAT(documentType, daid) Then
resp = atez_api.SendRequestWithAuthHeader("application/json", failreDesc, "/process", "POST", dt)
@@ -1371,84 +1368,150 @@ Public Class frmMDM_USTVAntrag
If f.ShowDialog = DialogResult.OK Then
Dim DS_ORIG_alreadyDeleted As Boolean = False
Dim DS_ORIG As New cDATENSERVER(daid)
Dim fi_orig As New FileInfo(DS_ORIG.GET_TOP1_PATH())
For Each r As DataGridViewRow In f.usrcntlVAT_ATEZ1.dgvVAT.SelectedRows
Dim sql As New SQL
'Dim kdnr = r.Cells("Kundennummer").Value
Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen
Dim reDat As Date = IIf(Not IsDBNull(r.Cells("invoice_date").Value) AndAlso IsDate(r.Cells("invoice_date").Value), r.Cells("invoice_date").Value, Nothing)
USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID]
USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr
USTV_POS.UStVPo_ReDat = r.Cells("invoice_date").Value
USTV_POS.UStVPo_ReDat = reDat.ToShortDateString
USTV_POS.UStVPo_ReNr = r.Cells("invoice_id").Value.ToString
USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr
USTV_POS.UStVPo_Leistender =
USTV_POS.UStVPo_Leistungsbezeichnung = "Maut/Diesel"
USTV_POS.UStVPo_Schnittstelle = True
Dim leistenderName As String = r.Cells("seller_name").Value
Dim leistender As New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz)
If leistender.UStV_LeistenderId < 1 Then
leistender = New cUStVLeistender(leistenderName)
End If
USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString
USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
USTV_POS.UStVPo_Zeitstempel = Now()
If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then
'1. Antragswährung = Belegswährung (EUR zu FREMD und FREMD zu EUR)
If r.Cells("currency").Value = USTV_ANTRAG.UStVAn_Währungscode Then
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then
USTV_POS.UStVPo_USteuerbetragEUR = r.Cells("total_VAT_amount").Value
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
Else
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_Umrechnungskurs = 1
End If
If pageCount = r.Cells("document_count").Value Then
USTV_POS.UStVPo_daId_loeschbar = True
Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "ATEZ_KI", Now.Year, Now.ToString("yyyyMMdd"), fi_orig.Name, USTV_ANTRAG.UStVAn_KuNr, False)
If Not DS_NEW.uploadDataToDATENSERVER(fi_orig.FullName) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
If DS_NEW.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
USTV_POS.UStVPo_daId = DS_NEW.da_id
'gesamtePDF wird gespeichert, alte DS kann gelscht werden:
If DS_ORIG.DELETE_COMPLETE() Then DS_ORIG_alreadyDeleted = True
Else
USTV_POS.UStVPo_daId_loeschbar = True
'todo: Logik Aufsplittung des PDF in Teilpdfs
Dim pagestart = 0
For Each pages As DataRow In dt.Rows
pagestart += CInt(pages.Item("document_count"))
If pages.Item("count") = r.Cells("count").Value Then Exit For
Next
Dim TMP_Path_Old = fi_orig.FullName
Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi_orig.Name, fi_orig.Extension,, True, "USTVA_POS")
VERAG_PROG_ALLGEMEIN.cAllgemein.ExtractPdfPages(TMP_Path_Old, TMP_Path_New, pagestart, r.Cells("document_count").Value)
Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "ATEZ_KI", Now.Year, Now.ToString("yyyyMMdd"), fi_orig.Name, USTV_ANTRAG.UStVAn_KuNr, False)
If Not DS_NEW.uploadDataToDATENSERVER(TMP_Path_New) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
If DS_NEW.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
USTV_POS.UStVPo_daId = DS_NEW.da_id
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
End If
Else
'2. Antragswährung <> Belegswährung (EUR zu FREMD und FREMD zu EUR)
If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then
Dim kurs As New cEZB_Waehrungskurse(r.Cells("currency").Value)
If r.Cells("currency").Value <> "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
ElseIf r.Cells("currency").Value = "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_USteuerbetragEUR = USTV_POS.UStVPo_USteuerbetrag
USTV_POS.UStVPo_Umrechnungskurs = 1
End If
Else
'2.1 Antragswährung <> Belegswährung (FREMD zu FREMD)
USTV_POS.UStVPo_USteuerbetrag = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, USTV_ANTRAG.UStVAn_Währungscode)
Dim leistenderName As String = r.Cells("seller_name").Value
Dim leistenderUID As String = r.Cells("seller_VAT_id").Value
Dim leistender As New cUStVLeistender(leistenderUID, True)
If leistender.UStV_LeistenderId < 1 Then
leistender = New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz)
End If
If leistender.UStV_LeistenderId < 1 Then
leistender = New cUStVLeistender(leistenderName)
End If
USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString
USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
USTV_POS.UStVPo_Zeitstempel = Now()
'1. Antragswährung = Belegswährung (EUR zu FREMD und FREMD zu EUR)
If r.Cells("currency").Value = USTV_ANTRAG.UStVAn_Währungscode Then
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then
USTV_POS.UStVPo_USteuerbetragEUR = r.Cells("total_VAT_amount").Value
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
Else
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_Umrechnungskurs = 1
End If
Else
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
End If
Else
'2. Antragswährung <> Belegswährung (EUR zu FREMD und FREMD zu EUR)
If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then
Dim kurs As New cEZB_Waehrungskurse(r.Cells("currency").Value)
If r.Cells("currency").Value <> "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
ElseIf r.Cells("currency").Value = "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_USteuerbetragEUR = USTV_POS.UStVPo_USteuerbetrag
USTV_POS.UStVPo_Umrechnungskurs = 1
End If
Else
'2.1 Antragswährung <> Belegswährung (FREMD zu FREMD)
USTV_POS.UStVPo_USteuerbetrag = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(r.Cells("total_VAT_amount").Value, r.Cells("currency").Value, USTV_ANTRAG.UStVAn_Währungscode)
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
End If
End If
USTV_POS.INSERT()
End If
USTV_POS.INSERT()
Next
If Not DS_ORIG_alreadyDeleted Then
DS_ORIG.DELETE_COMPLETE()
End If
End If
@@ -1844,17 +1907,18 @@ Public Class frmMDM_USTVAntrag
End If
Dim Leistungsbezeichnung = ""
If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung
If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung) Then
If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, Leistungsbezeichnung) Then
If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then
reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID)
End If
init()
End If
End If
UstCntlUSTV_AntragPosition1.Enabled = False
UstCntlUSTV_AntragPosition1.Enabled = False
End If
End Sub
@@ -2770,8 +2834,10 @@ Public Class frmMDM_USTVAntrag
End If
Dim Leistungsbezeichnung = ""
If r.Cells("UStVPo_SchnittstellenNr").Value = 3 Then Leistungsbezeichnung = r.Cells("UStVPo_Leistungsbezeichnung").Value
If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, r.Cells("UStVPo_Leistungsbezeichnung").Value) Then
If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Leistungsbezeichnung) Then
Dim sqlstr = " DELETE FROM tblUStVPositionen WHERE UStVAn_ID=" & Me.UStVAn_ID & " AND UStVPo_ID=" & r.Cells("UStVPo_ID").Value
If Not SQL.doSQL(sqlstr, "FMZOLL") Then
Exit Sub
@@ -2881,24 +2947,77 @@ Public Class frmMDM_USTVAntrag
Private Sub scanUSTVA_FileAdded(id As String, path As String, name As String) Handles scanUSTVA.FileAdded
btnPDFauslesen.Enabled = scanUSTVA.getDS.da_id > 0
End Sub
Private Sub mnuItemKIUPLOAD_Clicked(sender As Object, e As EventArgs)
cnS_KIUPLOAD.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
Dim daid As Integer = scanUSTVA.getDS().da_id
If daid > 0 Then
Dim DS As New cDATENSERVER(daid)
If DS.GET_TOP1_PATH <> "" Then
Dim pdfR As New PdfReader(DS.GET_TOP1_PATH)
If atez_api IsNot Nothing Then
If vbYes = MsgBox("Möchten Sie die Rechnungsdaten der " & item.Text & " per ATEZ-API auslesen lassen?", vbYesNoCancel) Then
'document_type = vat_invoice or receipt
loadUSTVFrom_ATEZ_KI(UStVAn_ID, Antrag_LandKz, atez_api, scanUSTVA.getDS().da_id, pdfR.NumberOfPages, item.Name)
initScanUSTVA()
End If
Else
DS.DELETE_COMPLETE()
initScanUSTVA()
End If
init()
End If
End If
End If
End Sub
Private Sub btnPDFauslesen_Click(sender As Object, e As EventArgs) Handles btnPDFauslesen.Click
If scanUSTVA.getDS().da_id > 0 Then
'document_type = vat_invoice or receipt
If atez_api IsNot Nothing Then
If vbYes = MsgBox("Möchten Sie die Rechnungsdaten per ATEZ-API auslesen lassen?", vbYesNoCancel) Then
loadUSTVFrom_ATEZ_KI(UStVAn_ID, Antrag_LandKz, atez_api, scanUSTVA.getDS().da_id)
End If
End If
If Not cnS_KIUPLOAD.Items.ContainsKey("vat_invoice") Then
Dim vat = New ToolStripMenuItem() With {.Text = "MWST-Rechnung(en)", .Name = "vat_invoice", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cnS_KIUPLOAD.Items.Add(vat)
AddHandler vat.Click, AddressOf mnuItemKIUPLOAD_Clicked
End If
If Not cnS_KIUPLOAD.Items.ContainsKey("receipt") Then
Dim receipt = New ToolStripMenuItem() With {.Text = "Quittung(en)", .Name = "receipt", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cnS_KIUPLOAD.Items.Add(receipt)
AddHandler receipt.Click, AddressOf mnuItemKIUPLOAD_Clicked
End If
cnS_KIUPLOAD.Show(Cursor.Position)
End Sub
Private Sub calcSumme()
@@ -2920,4 +3039,14 @@ Public Class frmMDM_USTVAntrag
Private Sub initScanUSTVA()
scanUSTVA.INIT(USTV_ANTRAG.UStVAn_KuNr, "MDM", "USTVA_KI_" & USTV_ANTRAG.UStVAn_ID)
btnPDFauslesen.Enabled = scanUSTVA.getDS().da_id > 0
End Sub
End Class

View File

@@ -616,6 +616,7 @@ Public Class ustCntlUSTV_AntragPosition
dt.Columns.Add("invoice_id", GetType(String))
dt.Columns.Add("invoice_date", GetType(String))
dt.Columns.Add("status", GetType(String))
dt.Columns.Add("document_count", GetType(Integer))
End If
Dim failreDesc As String

View File

@@ -17,9 +17,17 @@ Public Class cUStVLeistender
Dim SQL As New SQL
Sub New(UStV_Leistender As String)
Me.UStV_Leistender = UStV_Leistender
LOAD()
Sub New(UStV_Leistender As String, Optional searchbyUID As Boolean = False)
If Not searchbyUID Then
Me.UStV_Leistender = UStV_Leistender
LOAD()
Else
Me.UstV_Leistender_UstNr = UStV_Leistender
LOADBYUID()
End If
End Sub
Sub New(Id As Integer)
@@ -147,6 +155,35 @@ Public Class cUStVLeistender
End Try
End Sub
Public Sub LOADByUID()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblUStVLeistender WHERE UstV_Leistender_UstNr=@UstV_Leistender_UstNr ", conn)
cmd.Parameters.AddWithValue("@UstV_Leistender_UstNr", UstV_Leistender_UstNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Sub LOADByLand(Land As String)
Try
hasEntry = False

View File

@@ -854,27 +854,19 @@ Public Class cATEZ_NCTS_IN
success = jsonResult.LoadSb(sbResponseBody)
jsonResult.Emit()
'--------------------------------
Dim num As Integer = jsonResult.Size
Dim data
Dim sizeArray = jsonResult.SizeOfArray("data")
If dt IsNot Nothing Then
Dim data
Dim num As Integer = 1
If sizeArray > 0 Then
If True Then
data = New Chilkat.JsonObject
data = jsonResult
If (data.LastMethodSuccess = False) Then
Debug.WriteLine("data member not found.")
End If
If num = -1 Then
Return "FEHLER Array Data ist leer"
End If
Else
num = jsonResult.SizeOfArray("data")
num = sizeArray
data = jsonResult.ArrayOf("data")
If (jsonResult.LastMethodSuccess = False) Then
@@ -882,44 +874,112 @@ Public Class cATEZ_NCTS_IN
End If
Else
data = New Chilkat.JsonObject
data = jsonResult
num = 1 'nur ein Object
If (data.LastMethodSuccess = False) Then
Debug.WriteLine("data member not found.")
End If
End If
'Dim i As Integer'
'For i = 0 To num - 1
' Dim name As String = jsonResult.NameAt(i)
' Dim value As String = jsonResult.StringAt(i)
' Debug.WriteLine(name & ": " & value)
' Dim iValue As Integer = jsonResult.IntAt(i)
' Debug.WriteLine(name & " as integer: " & iValue)
'Next
'--------------------------------
'num = jsonResult.SizeOfArray("data")
'If num = -1 Then
' If dt IsNot Nothing Then
' Dim data
' 'TODO: Check if array, else jsonObject
' If True Then
' data = New Chilkat.JsonObject
' data = jsonResult
' If (data.LastMethodSuccess = False) Then
' Debug.WriteLine("data member not found.")
' End If
' If num = -1 Then
' Return "FEHLER Array Data ist leer"
' End If
' Else
' data = jsonResult.ArrayOf("data")
' If (jsonResult.LastMethodSuccess = False) Then
' Return "data not found."
' End If
'End If
'--------------------------------
Dim j As Integer = 0
While j < num
While j < num
Dim invoice As Chilkat.JsonObject = jsonResult.ObjectAt(j)
Dim invoice As Chilkat.JsonObject = data.ObjectAt(j)
Dim R As DataRow = dt.NewRow
R("currency") = checkNullStr(invoice.StringOf("currency"))
Dim totalAmonut As String = invoice.StringOf("total_VAT_amount").Replace(".", ",")
R("total_VAT_amount") = CDbl(checkNulDbl(totalAmonut))
R("invoice_id") = checkNullStr(invoice.StringOf("invoice_id"))
R("invoice_date") = checkNullStr(invoice.StringOf("invoice_date"))
Dim R As DataRow = dt.NewRow
R("count") = j + 1
R("currency") = checkNullStr(invoice.StringOf("currency"))
Dim totalAmonut As String = invoice.StringOf("total_VAT_amount").Replace(".", ",")
R("total_VAT_amount") = CDbl(checkNulDbl(totalAmonut))
R("invoice_id") = checkNullStr(invoice.StringOf("invoice_id"))
R("invoice_date") = checkNullStr(invoice.StringOf("invoice_date"))
R("seller_VAT_id") = checkNullStr(invoice.StringOf("seller_VAT_id"))
R("seller_name") = checkNullStr(invoice.StringOf("seller_name"))
R("seller_address_city") = checkNullStr(invoice.StringOf("seller_address_city"))
R("seller_address_country") = checkNullStr(invoice.StringOf("seller_address_country"))
R("seller_address_postcode") = checkNullStr(invoice.StringOf("seller_address_postcode"))
R("seller_address_street") = checkNullStr(invoice.StringOf("seller_address_street"))
R("status") = checkNullStr(jsonResult.StringOf("status"))
R("seller_address_country") = checkNullStr(invoice.StringOf("seller_address_country"))
R("seller_address_postcode") = checkNullStr(invoice.StringOf("seller_address_postcode"))
R("seller_address_street") = checkNullStr(invoice.StringOf("seller_address_street"))
R("status") = checkNullStr(jsonResult.StringOf("status"))
R("document_count") = checkNulInt(jsonResult.IntOf("document_count"))
dt.Rows.Add(R)
dt.Rows.Add(R)
j = j + 1
End While
j = j + 1
End While
Return jsonResult.StringOf("status")
Return jsonResult.StringOf("status")
End If
End If
Return jsonResult.StringOf("atezId")
Return jsonResult.StringOf("atezId")
End If
End If
End If
Catch ex As WebException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
@@ -942,6 +1002,17 @@ Public Class cATEZ_NCTS_IN
Return 0
End If
End Function
Public Shared Function checkNulInt(ByVal o As Object) As Double
If o IsNot Nothing And o IsNot DBNull.Value Then
If IsNumeric(o) Then
Return CInt(o)
Else
Return 0
End If
Else
Return 0
End If
End Function
Shared Function setJsonNCTS(ncts As cATEZ_NCTS_DATA)

View File

@@ -2,6 +2,7 @@
Imports GrapeCity.ActiveReports.Document
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.IO
Public Class cAllgemein
Public Shared FIRMA As String
@@ -597,6 +598,40 @@ Public Class cAllgemein
End If
Return ""
End Function
Public Shared Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, pageStart As Integer, pagesEnd As Integer) As Boolean 'ITEXTSHARP
Try
Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing
If SourceFile.Contains(" ") Then SourceFile = SourceFile
Dim Reader As New iTextSharp.text.pdf.PdfReader(SourceFile)
If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf"
Dim srcDoc As New iTextSharp.text.Document() 'Reader.GetPageSizeWithRotation(0))
Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New FileStream(TargetFile, System.IO.FileMode.Create))
PdfCopyProvider.SetFullCompression()
srcDoc.Open()
For p As Integer = pageStart To pagesEnd
If p > Reader.NumberOfPages Then
MsgBox("Seitenanzahl überschritten!")
srcDoc.Close() : Reader.Close()
Return False
End If
impPage = PdfCopyProvider.GetImportedPage(Reader, p)
' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite
PdfCopyProvider.SetPageSize(New iTextSharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, Reader.GetPageRotation(p)))
' ----- PDF Seite in das neue Dokument einfügen
PdfCopyProvider.AddPage(impPage)
Next
' ----- neues PDF Dokument und den Reader schließen
srcDoc.Close()
Reader.Close()
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
End Class
Public Class cNCTS_GUARANTEES
@@ -635,4 +670,6 @@ Public Class cNCTS_GUARANTEES
End Function
End Class