From 55295180fd8dd58adbb87299f61c369d73ce2c90 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 26 Feb 2025 16:32:15 +0100 Subject: [PATCH] ustva, fakturierung, etc. --- SDL/USTV/frmMDM_USTVAntrag.vb | 2 +- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 20 ++++--- SDL/seriendruck/usrCntlFakturierung.vb | 81 +++++++++++++++++++++++++- 3 files changed, 93 insertions(+), 10 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 987b3494..72fb963f 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -1792,7 +1792,7 @@ Public Class frmMDM_USTVAntrag Next End If - If list.Count = 0 Then Exit Sub + If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub If list.Count > 1 Then Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("RG_" & Now.ToString("ddMMyyyyHHmmss") & ".pdf", ".pdf", False, False) diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index f33d08da..1fd734ef 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -65,13 +65,13 @@ Public Class ustCntlUSTV_AntragPosition Dim da_id = -1 Select Case If(UStV_POS.UStVPo_SchnittstellenNr, -1) - Case 6, 0 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & UStV_POS.UStVPo_ReDat & "' and plInv_SupplierRechnungsNr='" & UStV_POS.UStVPo_ReNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) - Case 7 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & UStV_POS.UStVPo_ReDat & "' and rmc_reNr='" & UStV_POS.UStVPo_ReNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_daId] is not null", "FMZOLL",,, -1) - Case 4, 9 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblMSEInvoices] as inv inner join tblMSECustomers on inv.customer_number = customer_id where invoice_date='" & UStV_POS.UStVPo_ReDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & kdnr & " AND daId is not null", "FMZOLL",,, -1) - Case 10 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & UStV_POS.UStVPo_ReDat & "' and Abrechnungsnummer='" & UStV_POS.UStVPo_ReNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) - Case 8 : da_id = sql.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNew.daId FROM [tblIDSTransactionsNew] INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode LEFT JOIN tblIDSInvoicesNew on tblIDSInvoicesNew.CustomerCode = tblIDSTransactionsNew.CustomerCode and tblIDSInvoicesNew.Invoicenumber = Paymentsummarynumber where tblIDSTransactionsNew.[YearMonthDay] ='" & UStV_POS.UStVPo_ReDat & "' and ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & UStV_POS.UStVPo_ReNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) - Case 1 : da_id = 1 'VERAG-RECHNUGNEN werden immer direkt OHNE daid geöffnet! - Case -1 : IIf(UStV_POS.UStVPo_daId > 0, UStV_POS.UStVPo_daId, -1) + Case 6, 0 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & UStV_POS.UStVPo_ReDat & "' and plInv_SupplierRechnungsNr='" & UStV_POS.UStVPo_ReNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) : scanSonstiges.Enabled = False + Case 7 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & UStV_POS.UStVPo_ReDat & "' and rmc_reNr='" & UStV_POS.UStVPo_ReNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_daId] is not null", "FMZOLL",,, -1) : scanSonstiges.Enabled = True + Case 4, 9 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblMSEInvoices] as inv inner join tblMSECustomers on inv.customer_number = customer_id where invoice_date='" & UStV_POS.UStVPo_ReDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & kdnr & " AND daId is not null", "FMZOLL",,, -1) : scanSonstiges.Enabled = True + Case 10 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & UStV_POS.UStVPo_ReDat & "' and Abrechnungsnummer='" & UStV_POS.UStVPo_ReNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) : scanSonstiges.Enabled = True + Case 8 : da_id = sql.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNew.daId FROM [tblIDSTransactionsNew] INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode LEFT JOIN tblIDSInvoicesNew on tblIDSInvoicesNew.CustomerCode = tblIDSTransactionsNew.CustomerCode and tblIDSInvoicesNew.Invoicenumber = Paymentsummarynumber where tblIDSTransactionsNew.[YearMonthDay] ='" & UStV_POS.UStVPo_ReDat & "' and ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & UStV_POS.UStVPo_ReNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) : scanSonstiges.Enabled = True + Case 1 : da_id = 1 : scanSonstiges.Enabled = False 'VERAG-RECHNUGNEN werden immer direkt OHNE daid geöffnet! + Case -1 : IIf(UStV_POS.UStVPo_daId > 0, UStV_POS.UStVPo_daId, -1) : scanSonstiges.Enabled = True End Select If da_id > -1 Then @@ -439,4 +439,10 @@ Public Class ustCntlUSTV_AntragPosition UStV_POS.UStVPo_daId = id UStV_POS.SAVE() End Sub + + Private Sub scanSonstiges_FileDeleted() Handles scanSonstiges.FileDeleted + getValues(UStV_POS, True) + UStV_POS.UStVPo_daId = -1 + UStV_POS.SAVE() + End Sub End Class diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index 5a24f214..d0e76711 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -5,6 +5,8 @@ Public Class usrcntlFakturierung Dim FMZOLL_SQL As New FMZOLL_SQL Dim PathMautberichte = "" + Dim countCSV As Integer = 0 + Dim countPDF As Integer = 0 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnFakturierung.Click Me.Cursor = Cursors.WaitCursor @@ -605,7 +607,7 @@ Public Class usrcntlFakturierung Private Function Bankspesen(Sachbearbeiter As String, rechnungsdatum As Date, Optional kdNr As Integer = -1) - Dim isSet As Boolean = False + Dim isSet As Boolean = True Dim sqlBB = " Select Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift From dbo.Rechnungsausgang @@ -1234,7 +1236,7 @@ Public Class usrcntlFakturierung Dim dt_PDF_selected = dtBerichtkunden_PDF.Select("[Customer No] ='" & pdf.Item(0) & "'").CopyToDataTable Dim dtLaender As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], tblMautbericht.[Transaction Country], sum(tblMautbericht.[Net Amount]) as Netto, sum(tblMautbericht.[VAT Amount]) as MWST, sum(tblMautbericht.[Total Amount]) as Brutto - FROM tblMautbericht WHERE [Customer No] ='" & pdf.Item(0) & "' + FROM tblMautbericht WHERE [Customer No] ='" & pdf.Item(0) & "' AND Billingdate = '" & cbxDateMautbericht._value & "' GROUP BY [Customer No], [Transaction Country] ORDER BY tblMautbericht.[Customer No], tblMautbericht.[Transaction Country]", "FMZOLL") @@ -1584,8 +1586,75 @@ Public Class usrcntlFakturierung WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf')", "FMZOLL",, 0) + + MsgBox("Anzahl CSV-Anhänge: " & rechnungenMitGesamtmautanhantCSV & vbNewLine & "Anzahl PDF-Anhänge: " & rechnungenMitGesamtmautanhantPDF) + If Directory.GetFiles(PathMautberichte) IsNot Nothing Then + If Not Directory.GetFiles(PathMautberichte).Count = (countCSV + countPDF) Then Exit Sub + End If + + + Dim sqlCSV = "SELECT VermittlerKundenNr FROM Rechnungsausgang + inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID + WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv') order by VermittlerKundenNr " + + + Dim sqlPDF = "SELECT VermittlerKundenNr FROM Rechnungsausgang + inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID + WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf') order by VermittlerKundenNr " + + Dim dtVorhandeneCSV As DataTable = (New SQL).loadDgvBySql(sqlCSV, "FMZOLL") + + Dim dtVorhandenePDF As DataTable = (New SQL).loadDgvBySql(sqlPDF, "FMZOLL") + + Dim dtMissing As New DataTable() + dtMissing.Columns.Add("name", GetType(String)) + + If Directory.GetFiles(PathMautberichte) IsNot Nothing Then + For Each f In Directory.GetFiles(PathMautberichte) + If f.ToString.ToLower.EndsWith(".pdf") Then + Dim fileInfo As New FileInfo(f.ToString) + Dim KdNr As Integer = CInt(fileInfo.Name.ToString.Substring(0, 6)) + If Not CheckValue(dtVorhandenePDF, Function(x) x("VermittlerKundenNr") = KdNr) Then + dtMissing.Rows.Add(fileInfo.Name) + End If + End If + + + If f.ToString.ToLower.EndsWith(".csv") Then + Dim fileInfo As New FileInfo(f.ToString) + Dim KdNr As Integer = CInt(fileInfo.Name.ToString.Substring(0, 6)) + If Not CheckValue(dtVorhandeneCSV, Function(x) x("VermittlerKundenNr") = KdNr) Then + dtMissing.Rows.Add(fileInfo.Name) + End If + End If + + + + Next + + + + + If dtMissing.Rows.Count > 0 Then + + Dim b = New System.Text.StringBuilder() + For Each resultRow In dtMissing.Rows + b.Append(resultRow(0) & vbNewLine) + Next + + MsgBox("Folgende Anhänge wurden NICHT an die Rechnung angehängt:" & vbNewLine & b.ToString) + + + End If + + End If + + + End Sub Private Sub dtRechnungsdatum_ValueChanged(sender As Object, e As EventArgs) Handles dtRechnungsdatum.ValueChanged @@ -1797,4 +1866,12 @@ Public Class usrcntlFakturierung End Sub + + + Shared Function CheckValue(myTable As DataTable, checkFunc As Func(Of DataRow, Boolean)) As Boolean + For Each row As DataRow In myTable.Rows + If checkFunc(row) Then Return True + Next + Return False + End Function End Class