From bb44e65d18c71766b9046a2849f613b2ec9958a9 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 31 Jan 2025 15:59:08 +0100 Subject: [PATCH] MDM, ustva --- SDL/USTV/frmMDM_USTVAntrag.vb | 28 ++++++++- SDL/USTV/frmUSTVoffeneAntraege.vb | 100 +++++++++++++++++++++--------- SDL/USTV/usrCntlUSTV.vb | 6 +- 3 files changed, 97 insertions(+), 37 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 87471572..3ab59408 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -622,7 +622,7 @@ Public Class frmMDM_USTVAntrag 'TODO - hier Umrechnungslogik von FRMDW und EUR und EUR/FRMDWR für Belegsebene Dim umrechKurs As Double = 1 - If USTV_ANTRAG.UStVAn_Währungscode = ANTRAG.plose_WaehrungAbbuchung Then + If USTV_ANTRAG.UStVAn_Währungscode = ANTRAG.plose_WaehrungAbbuchung And USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then USTV_POS.UStVPo_USteuerbetragEUR = ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_Umrechnungskurs = ANTRAG.plose_MWSTBetrag / ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_USteuerbetrag = ANTRAG.plose_MWSTBetrag @@ -640,6 +640,10 @@ Public Class frmMDM_USTVAntrag 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) + End If @@ -659,7 +663,12 @@ Public Class frmMDM_USTVAntrag End If If USTV_POS.INSERT() Then - MDM_Worker.cPLOSE.UPDATE_ARCHIV(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) + If CDate(USTV_ANTRAG.UStVAn_ReDatVon).Year >= 2025 Then + MDM_Worker.cPLOSE.UPDATE_ARCHIV_NEULOGIK(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) + Else + MDM_Worker.cPLOSE.UPDATE_ARCHIV(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) + End If + End If End If @@ -1311,12 +1320,25 @@ Public Class frmMDM_USTVAntrag If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 6 'PLOSE - sqlText = "Update [tblPLOSE_Details] + + If CDate(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat).Year >= 2025 Then + + sqlText = "Update [tblPLOSE_Inv_Data] + set plInv_Archiv=0, [plInv_ArchiviertDatum]=NULL, plInv_UStVAn_ID = NULL + From [tblPLOSE_Inv_Data] INNER Join Adressen On PLOSEKundenNr=plInv_PLOSEKundennummer + WHERE cast(plInv_SupplierRechnungsDatum As Date) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND [plInv_SupplierRechnungsNr] = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "'" + + + Else + sqlText = "Update [tblPLOSE_Details] set plose_Archiv=0, [plose_ArchiviertDatum]=NULL, UStVAn_ID = NULL From [tblPLOSE_Details] INNER Join Adressen On PLOSEKundenNr=plose_POLSEKundennummer INNER Join [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] WHERE cast(plose_RechnungsDatum As Date) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND plose_RechnungsNr = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "' And plose_LieferantCode IN (0,1,7,9) " + End If + + If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") diff --git a/SDL/USTV/frmUSTVoffeneAntraege.vb b/SDL/USTV/frmUSTVoffeneAntraege.vb index d4d8a93e..e40621a3 100644 --- a/SDL/USTV/frmUSTVoffeneAntraege.vb +++ b/SDL/USTV/frmUSTVoffeneAntraege.vb @@ -1,4 +1,5 @@ Imports System.Windows.Documents +Imports com.sun.org.apache.xpath.internal.objects Imports DocumentFormat.OpenXml.Drawing.Spreadsheet Imports VERAG_PROG_ALLGEMEIN @@ -90,13 +91,29 @@ Public Class frmUSTVoffeneAntraege sqlwhere &= " and Adressen.AdressenNr = " & kdnr End If - .SET_SQL("select " & top & " Adressen.AdressenNr, Adressen.[Name 1] ,[plose_Lieferant],[plose_RechnungsDatum],[plose_RechnungsNr],plp_Land, sum([plose_MWSTBetrag])[plose_MWSTBetrag], [plInv_daId] as daId FROM [tblPLOSE_Details] - INNER JOIN Adressen on PLOSEKundenNr=plose_POLSEKundennummer - INNER JOIN [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] - INNER JOIN [tblPLOSE_Inv_Data]on plInv_SupplierRechnungsDatum=plose_RechnungsDatum and plInv_SupplierRechnungsNr=plose_RechnungsNr and [plInv_PLOSEKundennummer] = PLOSEKundenNr - WHERE UStVAn_ID is null /*plose_Archiv <> 1 AND plose_LieferantCode IN (0,1,7) */ AND cast(plose_RechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plose_RechnungsNr is not null " & sqlwhere & + Dim sqlString = "Select " & top & " Adressen.AdressenNr, Adressen.[Name 1] ,[plose_Lieferant],[plose_RechnungsDatum],[plose_RechnungsNr],plp_Land, sum([plose_MWSTBetrag])[plose_MWSTBetrag], [plInv_daId] As daId FROM [tblPLOSE_Details] + INNER Join Adressen on PLOSEKundenNr=plose_POLSEKundennummer + INNER Join [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] + INNER Join [tblPLOSE_Inv_Data] on tblPLOSE_Details .plose_plInvId = plInv_Id + WHERE UStVAn_ID Is null /* plose_Archiv <> 1 And plose_LieferantCode In (0, 1, 7) */ And cast(plose_RechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plose_RechnungsNr is not null " & sqlwhere & "group by Adressen.AdressenNr, Adressen.[Name 1] ,[plose_RechnungsDatum],[plose_RechnungsNr],[plose_Lieferant], plp_Land, [plInv_daId] - having sum(plose_MWSTBetrag) <>0", "FMZOLL") + having sum(plose_MWSTBetrag) <>0" + + Dim year = CDate(dat_Sum_Von.Value).Year + + If year >= 2025 Then + + sqlString = "Select " & top & " Adressen.AdressenNr, Adressen.[Name 1] ,[plInv_Lieferant] as plose_Lieferant,[plInv_SupplierRechnungsDatum] as plose_RechnungsDatum,[plInv_SupplierRechnungsNr] as plose_RechnungsNr,[plInv_SupplierCountry] as plp_Land, sum([plInv_MWSTBetrag]) as plose_MWSTBetrag , [plInv_daId] As daId FROM [tblPLOSE_Inv_Data] + INNER JOIN Adressen on PLOSEKundenNr=[plInv_PLOSEKundennummer] + WHERE plInv_UStVAn_ID Is null /* plose_Archiv <> 1 And plose_LieferantCode In (0, 1, 7) */ And cast([plInv_SupplierRechnungsDatum] as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and [plInv_SupplierRechnungsNr] is not null " & sqlwhere & + "group by Adressen.AdressenNr, Adressen.[Name 1] ,[plInv_SupplierRechnungsDatum],[plInv_SupplierRechnungsNr],[plInv_Lieferant], [plInv_SupplierCountry], [plInv_daId] + having sum([plInv_MWSTBetrag]) <>0" + + + End If + + + .SET_SQL(sqlString, "FMZOLL") .LOAD() If .Columns.Count > 0 Then @@ -492,6 +509,8 @@ Public Class frmUSTVoffeneAntraege Dim sqlwhereLand = "" Dim sqlwhereSteuerNr = "" + Dim SQLPLOSEUMSTELLUNG = "" + If kdnr > 0 Then sqlwherePLOSE &= " and AdressenNr = " & kdnr 'sqlwherePLOSE &= " and plose_POLSEKundennummer = " & kdnr sqlwhereIDS &= " and AdressenNr = " & kdnr 'sqlwhereIDS &= " and tblIDSTransactionsNew.KdNrVERAG = " & kdnr @@ -517,36 +536,55 @@ Public Class frmUSTVoffeneAntraege sqlwhereLand &= " and isnull(UStVAn_ID,0) = 0 " End If + Dim year = CDate(dat_Sum_Von.Value).Year + + If year >= 2025 Then + + SQLPLOSEUMSTELLUNG = " + + select " & top & " + 'PLOSE' as Lieferant, + Adressen.AdressenNr as KdNr, + Adressen.[Name 1] as Kundenname, + Adressen.LandKz as Kundenland, + [plInv_SupplierCountry] as Einreichland, + [plInv_SupplierRechnungsDatum] AS Rechnungsdatum, + sum([plInv_MWSTBetrag]) as MWST + FROM [tblPLOSE_Inv_Data] + INNER JOIN Adressen on PLOSEKundenNr=plInv_PLOSEKundennummer + WHERE plInv_Archiv <> 1 AND cast(plInv_SupplierRechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plInv_SupplierRechnungsNr is not null " & sqlwherePLOSE & " + group by Adressen.AdressenNr, Adressen.[Name 1],Adressen.LandKz ,[plInv_SupplierRechnungsDatum],[plInv_SupplierCountry] + having sum(plInv_MWSTBetrag)<>0" + Else + SQLPLOSEUMSTELLUNG = "select " & top & " + 'PLOSE' as Lieferant, + Adressen.AdressenNr as KdNr, + Adressen.[Name 1] as Kundenname, + Adressen.LandKz as Kundenland, + [plp_Land] as Einreichland, + [plose_RechnungsDatum] AS Rechnungsdatum, + sum([plose_MWSTBetrag]) as MWST + FROM [tblPLOSE_Details] + INNER JOIN Adressen on PLOSEKundenNr=plose_POLSEKundennummer + INNER JOIN [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] + INNER JOIN [tblPLOSE_Inv_Data] on tblPLOSE_Details .plose_plInvId = plInv_Id + WHERE plose_Archiv <> 1 /*AND plose_LieferantCode IN (0,1,7) */ AND + cast(plose_RechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plose_RechnungsNr is not null " & sqlwherePLOSE & " + group by Adressen.AdressenNr, Adressen.[Name 1],Adressen.LandKz ,[plose_RechnungsDatum],[plp_Land] + having sum(plose_MWSTBetrag)<>0" + + + End If + With MyDatagridview1 .Columns.Clear() 'Exit Sub 'MsgBox(.sql) - 'PLOSE ALT - ' FROM [tblPLOSE_Details] - ' INNER JOIN Adressen on PLOSEKundenNr=plose_POLSEKundennummer - ' INNER JOIN [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] - ' WHERE plose_Archiv <> 1 /*AND plose_LieferantCode IN (0,1,7) */ AND - 'cast(plose_RechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plose_RechnungsNr is not null " & sqlwherePLOSE & " - 'group by Adressen.AdressenNr, Adressen.[Name 1],Adressen.LandKz ,[plose_RechnungsDatum],plp_Land - ' having sum(plose_MWSTBetrag)<>0 - Dim sqlstring = "select isnull(UStVAn_ID,0) as antragExisitiert,tblSteuernummern.UStV as SteuerNr,Lieferant , KdNr, Kundenname, Kundenland, Einreichland from ( select " & top & " - 'PLOSE' as Lieferant, - Adressen.AdressenNr as KdNr, - Adressen.[Name 1] as Kundenname, - Adressen.LandKz as Kundenland, - [plInv_SupplierCountry] as Einreichland, - [plose_RechnungsDatum] AS Rechnungsdatum, - sum([plose_MWSTBetrag]) as MWST - FROM [tblPLOSE_Details] - INNER JOIN Adressen on PLOSEKundenNr=plose_POLSEKundennummer - INNER JOIN [tblPLOSE_Inv_Data]on plInv_SupplierRechnungsDatum=plose_RechnungsDatum and plInv_SupplierRechnungsNr=plose_RechnungsNr and [plInv_PLOSEKundennummer] = PLOSEKundenNr - WHERE plose_Archiv <> 1 /*AND plose_LieferantCode IN (0,1,7) */ AND - cast(plose_RechnungsDatum as date) between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "' and plose_RechnungsNr is not null " & sqlwherePLOSE & " - group by Adressen.AdressenNr, Adressen.[Name 1],Adressen.LandKz ,[plose_RechnungsDatum],[plInv_SupplierCountry] - having sum(plose_MWSTBetrag)<>0 + + Dim sqlstring = "select isnull(UStVAn_ID,0) as antragExisitiert,tblSteuernummern.UStV as SteuerNr,Lieferant , KdNr, Kundenname, Kundenland, Einreichland from (" & SQLPLOSEUMSTELLUNG & " UNION ALL @@ -827,7 +865,7 @@ Public Class frmUSTVoffeneAntraege Else - Dim frm = New frmMDM_USTVAntrag(MyDatagridview1.SelectedRows(0).Cells("KdNr").Value, MyDatagridview1.SelectedRows(0).Cells("Land").Value, dat_Sum_Von.Value, dat_Sum_Bis.Value) + Dim frm = New frmMDM_USTVAntrag(MyDatagridview1.SelectedRows(0).Cells("KdNr").Value, MyDatagridview1.SelectedRows(0).Cells("Einreichland").Value, dat_Sum_Von.Value, dat_Sum_Bis.Value) frm.ShowDialog() End If @@ -883,7 +921,7 @@ Public Class frmUSTVoffeneAntraege fehlendePDFs = CInt((New SQL).getValueTxtBySql(SQLQuery, "FMZOLL")) MsgBox("Anzahl fehlende PDFs: " & fehlendePDFs) Else - MsgBox("Funktion nicht implementiert!") + MsgBox("Funktion nur pro Lieferant möglich!") End If diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index 753f58b6..d87462d2 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -734,17 +734,17 @@ Public Class usrCntlUSTV Exit Sub End If - If del_antrag.UStVAn_3470 IsNot Nothing Then + If del_antrag.UStVAn_3470 IsNot Nothing AndAlso CDbl(del_antrag.UStVAn_3470) > 0 Then MsgBox("Dieser Antrag enthält einen 3470-Betrag. Der Antrag kann nicht gelöscht werden.",, "UStV-Antrag " & del_antrag.UStVAn_ID) Exit Sub End If - If del_antrag.UStVAn_VZBetrag IsNot Nothing Then + If del_antrag.UStVAn_VZBetrag IsNot Nothing AndAlso CDbl(del_antrag.UStVAn_VZBetrag) > 0 Then MsgBox("Dieser Antrag enthält einen VZ-Betrag. Der Antrag kann nicht gelöscht werden.",, "UStV-Antrag " & del_antrag.UStVAn_ID) Exit Sub End If - If del_antrag.UStVAn_Erstattungsbetrag IsNot Nothing Then + If del_antrag.UStVAn_Erstattungsbetrag IsNot Nothing AndAlso CDbl(del_antrag.UStVAn_Erstattungsbetrag) > 0 Then MsgBox("Dieser Antrag enthält einen Erstattungsbetrag. Der Antrag kann nicht gelöscht werden.",, "UStV-Antrag " & del_antrag.UStVAn_ID) Exit Sub End If