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