From d524f1a6d3222866d25698fe7e39d6caf576c1c5 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 31 Jan 2025 15:10:51 +0100 Subject: [PATCH] plose, MDMDateneinarbeitung(PLOSE) --- MDM_Worker/cPLOSE.vb | 38 +++++++++++++++-- MDM_Worker/cPLOSE_Inv_Data.vb | 9 ++-- .../frmMDMNachrichtenVerarbeitung.vb | 41 +++++++++++++++---- 3 files changed, 72 insertions(+), 16 deletions(-) diff --git a/MDM_Worker/cPLOSE.vb b/MDM_Worker/cPLOSE.vb index 1d2faef..a1bc238 100644 --- a/MDM_Worker/cPLOSE.vb +++ b/MDM_Worker/cPLOSE.vb @@ -239,12 +239,13 @@ Public Class cPLOSE If Not MWSTSummenAusBeleg Then GET_Antraege_PLOSE(LIST, von, bis, KundenNr, Land, Archiv) + GET_Antraege_ByLieferantCode(LIST, "'90'", von, bis, KundenNr, Land, Archiv) 'SOFICO + GET_Antraege_ByLieferantCodeNULL(LIST, von, bis, KundenNr, Land, Archiv) 'SOFICO Else GET_Antraege_PLOSE_NEU(LIST, von, bis, KundenNr, Land, Archiv) End If - GET_Antraege_ByLieferantCode(LIST, "'90'", von, bis, KundenNr, Land, Archiv) 'SOFICO - GET_Antraege_ByLieferantCodeNULL(LIST, von, bis, KundenNr, Land, Archiv) 'SOFICO + cPLOSE_USTV_ANTR.reOrderList(LIST) Return LIST @@ -430,8 +431,8 @@ Public Class cPLOSE Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT plInv_SupplierRechnungsDatum,plInv_SupplierRechnungsNr, plInv_Lieferant,plInv_Nettobetrag,plInv_MWSTBetrag, plInv_Bruttobetrag, isnull(plInv_Currency,'EUR') as plInv_WaehrungAbbuchung , case when plInv_LieferantCode = 'PSS' then 0 else 9 end as plInv_LieferantCode, plInv_daId from tblPLOSE_Inv_Data INNER JOIN Adressen on PLOSEKundenNr=plInv_PLOSEKundennummer - where cast(plInv_SupplierRechnungsDatum as date) between @von and @bis and AdressenNr=@AdressenNr and - plInv_SupplierCountry ='" & Land & "'and plInv_MWSTBetrag <> 0 AND (plInv_LieferantCode = 'PSS' OR plInv_LieferantCode = 'UNI') AND plInv_SupplierRechnungsNr not like '%-SFC-%'" & 'wie Lieferantencode = 90 + where cast(plInv_SupplierRechnungsDatum as date) between @von and @bis and AdressenNr=@AdressenNr " & IIf(Archiv, "", " AND plInv_Archiv = 0") & " AND + plInv_SupplierCountry ='" & Land & "'and plInv_MWSTBetrag <> 0 /* AND (plInv_LieferantCode = 'PSS' OR plInv_LieferantCode = 'UNI') AND plInv_SupplierRechnungsNr not like '%-SFC-%'*/" & 'wie Lieferantencode = 90 "order by plInv_SupplierRechnungsDatum", conn) cmd.Parameters.AddWithValue("@von", von) @@ -611,6 +612,35 @@ Public Class cPLOSE + Public Shared Function UPDATE_ARCHIV_NEULOGIK(von As Date, bis As Date, KundenNr As Integer, UStVAn_ID As Integer, Optional plose_RechnungsNr As String = "", Optional proRechnung As Boolean = False) As Boolean + Try + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + + Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("von", von)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("bis", bis)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_ID", UStVAn_ID)) + If plose_RechnungsNr <> "" Then list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plose_RechnungsNr", plose_RechnungsNr)) + + Dim sqlUpdate = "UPDATE [tblPLOSE_Inv_Data] + set plInv_Archiv=1, [plInv_ArchiviertDatum]=GETDATE(), plInv_UStVAn_ID = @UStVAn_ID + FROM [tblPLOSE_Inv_Data] INNER JOIN Adressen on PLOSEKundenNr=[plInv_PLOSEKundennummer] + WHERE cast([plInv_SupplierRechnungsDatum] as date) between @von and @bis and AdressenNr=@KundenNr " & IIf(proRechnung AndAlso plose_RechnungsNr <> "", "AND [plInv_SupplierRechnungsNr]=@plose_RechnungsNr", "") + + Return SQL.doSQLVarList(sqlUpdate, "FMZOLL", True, list) + + + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return "" + End Function + + + + Public ANLAGEN diff --git a/MDM_Worker/cPLOSE_Inv_Data.vb b/MDM_Worker/cPLOSE_Inv_Data.vb index b45e9de..157f48f 100644 --- a/MDM_Worker/cPLOSE_Inv_Data.vb +++ b/MDM_Worker/cPLOSE_Inv_Data.vb @@ -24,9 +24,9 @@ Public Class cPLOSE_Inv_Data Property plInv_Currency As Object = Nothing Property plInv_daId As Object = Nothing Property plInv_tstmp As DateTime = Now - - - + Property plInv_UStVAn_ID As Object = Nothing + Property plInv_Archiv As Object = Nothing + Property plInv_ArchiviertDatum As Object = Nothing Public hasEntry = False @@ -65,6 +65,9 @@ Public Class cPLOSE_Inv_Data list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_Currency", plInv_Currency)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_daId", plInv_daId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_tstmp", plInv_tstmp)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_UStVAn_ID", plInv_UStVAn_ID)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_Archiv", plInv_Archiv)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("plInv_ArchiviertDatum", plInv_ArchiviertDatum)) Return list End Function diff --git a/initATLASAufschubkonten/frmMDMNachrichtenVerarbeitung.vb b/initATLASAufschubkonten/frmMDMNachrichtenVerarbeitung.vb index aa42f7e..3cd7fd6 100644 --- a/initATLASAufschubkonten/frmMDMNachrichtenVerarbeitung.vb +++ b/initATLASAufschubkonten/frmMDMNachrichtenVerarbeitung.vb @@ -4,6 +4,7 @@ Imports System.Xml Imports Renci.SshNet Imports System.Net Imports System.Text +Imports System.Text.RegularExpressions Public Class frmMDMNachrichtenVerarbeitung Dim cntDatenEingelesen As Integer = 0 @@ -427,18 +428,40 @@ Public Class frmMDMNachrichtenVerarbeitung Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "PLOSE", Now.Year, Now.ToString("yyyyMMdd"), frmStartOptions.getFileName(d),) DS.uploadDataToDATENSERVER(d) 'DatenArchiv-Id in tblPLOSE_Inv_Data Tabelle eintragen (über PDF-Name) : - SQL.doSQL("Update [tblPLOSE_Inv_Data] SET [plInv_daId]='" & DS.da_id & "' where [plInv_PdfFileName] = '" & DS.da_name & "' and [plInv_Einlesedatum] > DATEADD(DAY,-30,getdate()) and [plInv_daId] is null ", "FMZOLL") + Dim EintragVorhanden As Integer = CInt(SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM tblPLOSE_Inv_Data where [plInv_PdfFileName] = '" & DS.da_name & "'", "FMZOLL")) + If EintragVorhanden > 0 Then + SQL.doSQL("Update [tblPLOSE_Inv_Data] SET [plInv_daId]='" & DS.da_id & "' where [plInv_PdfFileName] = '" & DS.da_name & "' and [plInv_Einlesedatum] > DATEADD(DAY,-30,getdate()) and [plInv_daId] is null ", "FMZOLL") + Else + + 'beispiel + '542073_2504495.01_2025-fln-000004495.pdf -> DATEINAME laut DB Eintrag + 'b_542073_2504495.01_2025-fln-000004495.pdf -> DATEINAME im Datenarchiv + 'alle vorangehenden Buchstaben und Zeichen abschneiden und mit der ersten Zahl beginnen!! + Dim filename = frmStartOptions.getFileName(d) + If Regex.IsMatch(filename, "^[A-Za-z]") Then + Dim match As Match = Regex.Match(filename, "\d+") + If match.Success Then + Dim fileNameNew = filename.Substring(match.Index).Trim + EintragVorhanden = CInt(SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM tblPLOSE_Inv_Data where [plInv_PdfFileName] ='" & fileNameNew & "'", "FMZOLL")) + If EintragVorhanden > 0 Then SQL.doSQL("Update [tblPLOSE_Inv_Data] SET [plInv_daId]='" & DS.da_id & "' where [plInv_PdfFileName] = '" & fileNameNew & "' and [plInv_Einlesedatum] > DATEADD(DAY,-30,getdate()) and [plInv_daId] is null ", "FMZOLL") + + End If + End If + End If + + + frmStartOptions.moveFile_DateBack(d, ZIEL_PFAD & "Invoice_PDF\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") - 'frmStartOptions.copyFile_DateBack(d, ZIEL_PFAD & "Invoice_PDF\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") - addDGVEinarbeitung("PDF", DS.da_name) - dgvEinarbeitung.Refresh() + 'frmStartOptions.copyFile_DateBack(d, ZIEL_PFAD & "Invoice_PDF\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\") + addDGVEinarbeitung("PDF", DS.da_name) + dgvEinarbeitung.Refresh() - 'Eintrag - End If - Case 5 - frmStartOptions.moveFile_DateBack(d, ERROR_PFAD) - dsNichtErkannt += 1 + 'Eintrag + End If + Case 5 + frmStartOptions.moveFile_DateBack(d, ERROR_PFAD) + dsNichtErkannt += 1 End Select