KI-Anbindung, etc.

This commit is contained in:
2025-04-28 16:22:23 +02:00
parent d814d122ac
commit 8964d0c3a6
7 changed files with 736 additions and 515 deletions

View File

@@ -85,7 +85,7 @@
.RowHeadersWidth = 10
.Columns("currency").HeaderText = "Währung"
.Columns("invoice_id").HeaderText = "Rechnungs-Nr"
.Columns("seller_VAT_id").HeaderText = "Name"
.Columns("seller_VAT_id").HeaderText = "UID-Nr"
.Columns("seller_VAT_id").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("seller_address_city").Width = 100
.Columns("seller_address_city").HeaderText = "Nr"

File diff suppressed because it is too large Load Diff

View File

@@ -579,7 +579,9 @@ Public Class frmMDM_USTVAntrag
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
End Sub
@@ -797,21 +799,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
@@ -935,7 +937,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
@@ -1021,12 +1023,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
@@ -1098,7 +1100,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
@@ -1179,8 +1181,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
@@ -1291,11 +1292,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
@@ -1322,6 +1323,148 @@ 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
Try
Dim bytSchnittstellenNr = -1
Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID)
Dim dt As New DataTable
If dt IsNot Nothing And Not dt.Columns.Contains("currency") Then
dt.Columns.Add("currency", GetType(String))
dt.Columns.Add("seller_VAT_id", GetType(String))
dt.Columns.Add("seller_address_city", GetType(String))
dt.Columns.Add("seller_address_country", GetType(String))
dt.Columns.Add("seller_address_postcode", GetType(String))
dt.Columns.Add("seller_address_street", GetType(String))
dt.Columns.Add("seller_name", GetType(String))
dt.Columns.Add("total_VAT_amount", GetType(Double))
dt.Columns.Add("invoice_id", GetType(String))
dt.Columns.Add("invoice_date", GetType(String))
dt.Columns.Add("status", GetType(String))
End If
Dim failreDesc As String
Dim authResp = atez_api.authenticate("VAT", "client1", "password")
Dim resp
If authResp <> "200" Then
MsgBox("Authentifizierung fehlgeschlagen" & vbNewLine & authResp)
Return False
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
resp = atez_api.SendRequestWithAuthHeader("application/json", failreDesc, "/process", "POST", dt)
If dt.Rows.Count > 0 Then
Dim f As New frmVAT_ATEZ()
f.usrcntlVAT_ATEZ1.initDGV(dt)
If f.ShowDialog = DialogResult.OK Then
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
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_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()
'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
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()
Next
End If
Else
MsgBox(resp)
End If
End If
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Return False
End Try
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If UStVAn_ID > 0 Then
@@ -1703,15 +1846,15 @@ Public Class frmMDM_USTVAntrag
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 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()
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
UstCntlUSTV_AntragPosition1.Enabled = False
End If
UstCntlUSTV_AntragPosition1.Enabled = False
End If
End Sub
@@ -2629,29 +2772,28 @@ Public Class frmMDM_USTVAntrag
If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, r.Cells("UStVPo_Leistungsbezeichnung").Value) 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
End If
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
End If
End If
Next
reorderUSTVAPositions(Me.UStVAn_ID)
init()
UstCntlUSTV_AntragPosition1.Enabled = False
End If
End If
e.Handled = True
End If
Next
reorderUSTVAPositions(Me.UStVAn_ID)
init()
UstCntlUSTV_AntragPosition1.Enabled = False
End If
End If
e.Handled = True
End If
End Sub
Private Sub txtAbfNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfNr.TextChanged
If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 10000 AndAlso USTV_ANTRAG.AbfertigungsNr <> txtAbfNr.Text AndAlso (Not btnAbfertigungsNrVergeben.Visible) Then
Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, txtAbfNr.Text, 0)
If spedBuch.hasEntry Then
@@ -2735,6 +2877,28 @@ Public Class frmMDM_USTVAntrag
End If
End Sub
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 btnPDFauslesen_Click(sender As Object, e As EventArgs) Handles btnPDFauslesen.Click
If scanUSTVA.getDS().da_id > 0 Then
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
End If
End Sub
Private Sub calcSumme()

View File

@@ -603,7 +603,6 @@ Public Class ustCntlUSTV_AntragPosition
Dim dt As New DataTable
If dt IsNot Nothing And Not dt.Columns.Contains("currency") Then
dt.Columns.Add("currency", GetType(String))

View File

@@ -28,6 +28,9 @@ Public Class usrcntlPDFScan
Me.txt.Text = _TEXT_PDF
End Sub
Public Function getDS() As cDATENSERVER
Return DS
End Function
Public Sub INIT(KdNr)
Me.KdNr = KdNr

View File

@@ -1097,7 +1097,7 @@ Public Class cMDMFunctionsAllgemein
header2 = "VAT NO.: " & USTV_ANTRAG.UStVAn_Steuernummer & " " & "Name/Company: " & AD.Name_1 & " " & AD.Name_2 & " " & "VAT in " & Antrag_LandKz & ": " & SteuerNR
End If
Return cProgramFunctions.genExcelFromDT_NEW_(dtNew, {"K4:K" & (dtNew.Rows.Count + 1)},, header1, header2, IIf(USTV_ANTRAG.UStVAn_Währungscode = "EUR", "", ""), True, "J", True,, openFile)
Return cProgramFunctions.genExcelFromDT_NEW_(dtNew, {"K1:K" & (dtNew.Rows.Count + 1)},, header1, header2, IIf(USTV_ANTRAG.UStVAn_Währungscode = "EUR", "", ""), True, "J", True,, openFile)
End If

View File

@@ -856,49 +856,65 @@ Public Class cATEZ_NCTS_IN
If dt IsNot Nothing Then
Dim data As New Chilkat.JsonObject
data = jsonResult
If (data.LastMethodSuccess = False) Then
Debug.WriteLine("data member not found.")
End If
Dim data
Dim num As Integer = 1
If num = -1 Then
Return "FEHLER Array Data ist leer"
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")
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 = data.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("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"))
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