From 347c29902f2384ecd5ab9b23d664cbb53aa7f1cd Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 15 Jan 2025 15:54:51 +0100 Subject: [PATCH] Vorschau, etc. --- SDL/USTV/frmMDM_USTVAntrag.vb | 4 +- SDL/USTV/usrCntlUSTV.Designer.vb | 16 ++ SDL/USTV/usrCntlUSTV.vb | 159 +++++++++++++ SDL/mdm/usrCntlMDMAuswertungen.vb | 357 +++++++++++++++--------------- 4 files changed, 359 insertions(+), 177 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 32928018..e1aa764c 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -552,14 +552,14 @@ Public Class frmMDM_USTVAntrag Shared Function alreadyExists(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim cnt = SQL.getValueTxtBySql(" Select count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] On tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID - WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "' AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "'", "FMZOLL") + WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "'*/ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "'", "FMZOLL") Return (cnt > 0) End Function Shared Function alreadyExistsMitLeistungsBez(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim cnt = SQL.getValueTxtBySql(" SELECT count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] on tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID - WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "' AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "' AND UStVPo_Leistungsbezeichnung = '" & USTV_POS.UStVPo_Leistungsbezeichnung & "'", "FMZOLL") + WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "' */ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "' AND UStVPo_Leistungsbezeichnung = '" & USTV_POS.UStVPo_Leistungsbezeichnung & "'", "FMZOLL") Return (cnt > 0) End Function diff --git a/SDL/USTV/usrCntlUSTV.Designer.vb b/SDL/USTV/usrCntlUSTV.Designer.vb index fd70b88c..ae3df5b7 100644 --- a/SDL/USTV/usrCntlUSTV.Designer.vb +++ b/SDL/USTV/usrCntlUSTV.Designer.vb @@ -66,6 +66,7 @@ Partial Class usrCntlUSTV Me.Button8 = New System.Windows.Forms.Button() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ContextMenuStrip2 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.btnVorschau = New System.Windows.Forms.Button() CType(Me.dgvUSTV, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel1.SuspendLayout() Me.Panel2.SuspendLayout() @@ -643,6 +644,7 @@ Partial Class usrCntlUSTV 'Panel3 ' Me.Panel3.AutoSize = True + Me.Panel3.Controls.Add(Me.btnVorschau) Me.Panel3.Controls.Add(Me.btnMail) Me.Panel3.Controls.Add(Me.btnPLOSEAlle) Me.Panel3.Controls.Add(Me.Button5) @@ -722,6 +724,19 @@ Partial Class usrCntlUSTV Me.ContextMenuStrip2.Name = "ContextMenuStrip1" Me.ContextMenuStrip2.Size = New System.Drawing.Size(61, 4) ' + 'btnVorschau + ' + Me.btnVorschau.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnVorschau.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnVorschau.ForeColor = System.Drawing.Color.Black + Me.btnVorschau.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnVorschau.Location = New System.Drawing.Point(1190, 6) + Me.btnVorschau.Name = "btnVorschau" + Me.btnVorschau.Size = New System.Drawing.Size(92, 39) + Me.btnVorschau.TabIndex = 26 + Me.btnVorschau.Text = "Vorschau" + Me.btnVorschau.UseVisualStyleBackColor = True + ' 'usrCntlUSTV ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -782,4 +797,5 @@ Partial Class usrCntlUSTV Friend WithEvents Label10 As Label Friend WithEvents txtOPSaldo As VERAG_PROG_ALLGEMEIN.MyTextBox Friend WithEvents Label11 As Label + Friend WithEvents btnVorschau As Button End Class diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index 576c1256..5bf0e18b 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -751,4 +751,163 @@ Public Class usrCntlUSTV End Sub + Private Sub btnVorschau_Click(sender As Object, e As EventArgs) Handles btnVorschau.Click + Dim sqlKunden = "" + Dim sqlKundenVERAG = "" + Dim sqlKundenMSENEU = "" + Dim sqlKundenIDSALT = "" + Dim sqlKundenIDSNEU = "" + If KdSearchBox1.KdNr > 0 Then + + sqlKunden = " AND Adressen.AdressenNr = " & KdSearchBox1.KdNr + sqlKundenVERAG = " AND RechnungsKundenNr = " & KdSearchBox1.KdNr + sqlKundenMSENEU = " AND partner_customer_number = " & KdSearchBox1.KdNr + sqlKundenIDSALT = " AND tblDieselArchiv.KdNrVERAG = " & KdSearchBox1.KdNr + sqlKundenIDSNEU = " AND [tblIDSTransactionsNew].KdNrVERAG = " & KdSearchBox1.KdNr + + End If + + Dim qryUStVVorschau_VERAG As String = "SELECT 'VERAG' as LF, tblTrdinInvoice.RechnungsKundenNr, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, YEAR(tblTrdinInvoice.Rechnungsdatum) AS Jahr, MONTH(tblTrdinInvoice.Rechnungsdatum) as Monat, tblTrdinInvoice.SteuerbetragLokal AS SteuerbetragEUR FROM tblTrdinInvoice + INNER JOIN tblSteuernummern ON tblTrdinInvoice.RechnungsKundenNr = tblSteuernummern.AdressenNr INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE tblSteuernummern.LandNr = 38 AND tblTrdinInvoice.Rechnungsdatum >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND tblTrdinInvoice.SteuerbetragLokal <> 0 AND tblTrdinInvoice.UStVAn_ID IS NULL AND tblSteuernummern.UStV = 1 " & sqlKundenVERAG & " + /*ORDER BY tblTrdinInvoice.RechnungsKundenNr, tblSteuernummern.LandNr, YEAR(tblTrdinInvoice.Rechnungsdatum), MONTH(tblTrdinInvoice.Rechnungsdatum)*/" + + Dim qryUStVVorschau_IDS_ALT As String = "SELECT 'IDS' as LF, tblDieselArchiv.KdNrVERAG AS RechnungsKundenNr, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, year(tblDieselArchiv.[Year Month Day]) AS Jahr, Month(tblDieselArchiv.[Year Month Day]) AS Monat, SUM(tblDieselArchiv.[VAT Amount]) AS SteuerbetragEUR FROM tblDieselArchiv + INNER JOIN tblSteuernummern ON tblDieselArchiv.KdNrVERAG = tblSteuernummern.AdressenNr + INNER JOIN tbl_IDS_Länder ON tbl_IDS_Länder.LandNr = tblSteuernummern.LandNr AND tblDieselArchiv.[Outlet Country Code] = tbl_IDS_Länder.OutletCountryCode + INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE tblDieselArchiv.[Year Month Day] >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND tblDieselArchiv.[VAT Amount] <> 0 AND tblDieselArchiv.UStVAn_ID IS NULL AND tblSteuernummern.UStV = 1 " & sqlKundenIDSALT & " + GROUP BY + tblDieselArchiv.KdNrVERAG, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, Year(tblDieselArchiv.[Year Month Day]), Month(tblDieselArchiv.[Year Month Day]) + /*ORDER BY tblDieselArchiv.KdNrVERAG, tblSteuernummern.LandNr, Year(tblDieselArchiv.[Year Month Day]), Month(tblDieselArchiv.[Year Month Day])*/ +" + + Dim qryUStVVorschau_MSE_ALT As String = "SELECT 'MSE' as LF,tblSteuernummern.AdressenNr AS RechnungsKundenNr, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, Year(tblMSETransactionsArchiv.[Invoice Date]) AS Jahr, Month(tblMSETransactionsArchiv.[Invoice Date]) AS Monat, CAST(ROUND(SUM(tblMSETransactionsArchiv.[Original VAT Amount]) / dbo.fktEUROKurs(tblMSETransactionsArchiv.[Original Currency], tblMSETransactionsArchiv.[Invoice Date]), 2) AS DECIMAL(18, 2)) AS SteuerbetragEUR FROM tblSteuernummern + INNER JOIN Adressen ON tblSteuernummern.AdressenNr = Adressen.AdressenNr + INNER JOIN tblMSETransactionsArchiv ON Adressen.MSEKundenNr = tblMSETransactionsArchiv.[Customer ID] + INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblMSETransactionsArchiv.[Transaction Country] = [Länderverzeichnis für die Außenhandelsstatistik].LandKz AND tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE tblSteuernummern.UStV = 1 AND tblMSETransactionsArchiv.UStVAn_ID IS NULL " & sqlKunden & " + GROUP BY + tblSteuernummern.AdressenNr, + tblSteuernummern.LandNr, + [Länderverzeichnis für die Außenhandelsstatistik].LandKz, + tblMSETransactionsArchiv.[Invoice Date], + tblMSETransactionsArchiv.[Invoice ID], + tblMSETransactionsArchiv.[Original Currency] + HAVING + tblMSETransactionsArchiv.[Invoice Date] >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND SUM(tblMSETransactionsArchiv.[Original VAT Amount]) <> 0 + /*ORDER BY tblSteuernummern.AdressenNr, tblSteuernummern.LandNr, tblMSETransactionsArchiv.[Invoice Date], tblMSETransactionsArchiv.[Invoice ID]*/" + + Dim qryUStVVorschau_UTA_ALT As String = "SELECT 'UTA' as LF,tblSteuernummern.AdressenNr AS RechnungsKundenNr, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, Year(tblUTAArchiv.Rechnungsdatum) as Jahr,Month(tblUTAArchiv.Rechnungsdatum) as Monat , SUM(tblUTAArchiv.Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) AS SteuerbetragEUR FROM tblSteuernummern + INNER JOIN Adressen ON tblSteuernummern.AdressenNr = Adressen.AdressenNr + INNER JOIN tblUTAArchiv ON Adressen.UTAKundenNr = tblUTAArchiv.Kundennummer + INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblUTAArchiv.Lieferland = [Länderverzeichnis für die Außenhandelsstatistik].LandKz_ISO_3 AND tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE tblSteuernummern.UStV = 1 AND tblUTAArchiv.UStVAn_ID IS NULL " & sqlKunden & " + GROUP BY + tblSteuernummern.AdressenNr, + tblSteuernummern.LandNr, + [Länderverzeichnis für die Außenhandelsstatistik].LandKz, + tblUTAArchiv.Rechnungsdatum + + HAVING + tblUTAArchiv.Rechnungsdatum >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND SUM(tblUTAArchiv.Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) <> 0 + /*ORDER BY tblSteuernummern.AdressenNr, tblSteuernummern.LandNr, tblUTAArchiv.Rechnungsdatum*/" + + Dim qryUStVVorschau_IDS_NEU As String = "SELECT 'IDS' as LF, [tblIDSTransactionsNew].KdNrVERAG AS RechnungsKundenNr,tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, year([tblIDSTransactionsNew].[YearMonthDay]) AS Jahr, Month([tblIDSTransactionsNew].[YearMonthDay]) AS Monat, SUM([tblIDSTransactionsNew].[VATAmount]) AS SteuerbetragEUR + FROM tblIDSTransactionsNew + INNER JOIN dbo.tblSteuernummern ON [tblIDSTransactionsNew].KdNrVERAG = dbo.tblSteuernummern.AdressenNr + INNER JOIN dbo.tbl_IDS_Länder ON dbo.tblSteuernummern.LandNr = dbo.tbl_IDS_Länder.LandNr AND [tblIDSTransactionsNew].[OutletCountryCode] = dbo.tbl_IDS_Länder.OutletCountryCode + INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE [tblIDSTransactionsNew].[YearMonthDay] >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND [tblIDSTransactionsNew].[VATAmount] <> 0 AND [tblIDSTransactionsNew].UStVAn_ID IS NULL AND tblSteuernummern.UStV = 1 " & sqlKundenIDSNEU & " + GROUP BY + [tblIDSTransactionsNew].KdNrVERAG, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, Year([tblIDSTransactionsNew].[YearMonthDay]) , Month([tblIDSTransactionsNew].[YearMonthDay]) + /* ORDER BY [tblIDSTransactionsNew].KdNrVERAG, tblSteuernummern.LandNr, Year([tblIDSTransactionsNew].[YearMonthDay]), Month([tblIDSTransactionsNew].[YearMonthDay])*/" + + Dim qryUStVVorschau_MSE_NEU As String = " select 'MSE' as LF,cust.[partner_customer_number] as RechnungsKundenNr,tblSteuernummern.LandNr,trans.transaction_country as LandKZ ,Year(bills.invoice_date) as Jahr,Month(bills.invoice_date) as Monat, sum(USteuer_EUR) as SteuerbetragEUR + FROM [VERAG].[dbo].[tblMSESettlements] as bills + left join [VERAG].[dbo].[tblMSETransactions] as trans on bills.[transaction_id] = trans.[transaction_id] + left join [VERAG].[dbo].[tblMSECustomers] as cust on cust.partner_customer_number = trans.partner_haulier_id + left join [VERAG].[dbo].[tblMSEInvoices] as inv on inv.invoice_id = bills.invoice_number + left join dbo.tblSteuernummern on dbo.tblSteuernummern.AdressenNr = trans.partner_haulier_id + where bills.invoice_date >= CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + + and inv.archiv <> 1 and dbo.tblSteuernummern.UStV = 1 and trans.charged = 1 " & sqlKundenMSENEU & " + + group by cust.[partner_customer_number],tblSteuernummern.LandNr,bills.invoice_date, trans.transaction_country" + + + + + + + Dim qryUStVVorschau_UTA_NEU As String = "SELECT 'UTA' as LF,tblSteuernummern.AdressenNr AS RechnungsKundenNr, tblSteuernummern.LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz, Year(tblUTAImportNew.Rechnungsdatum) as Jahr,Month(tblUTAImportNew.Rechnungsdatum) as Monat , SUM(tblUTAImportNew.Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) AS SteuerbetragEUR FROM tblSteuernummern + INNER JOIN Adressen ON tblSteuernummern.AdressenNr = Adressen.AdressenNr + INNER JOIN tblUTAImportNew ON Adressen.UTAKundenNr = tblUTAImportNew.Kundennummer + INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON tblUTAImportNew.Lieferland = [Länderverzeichnis für die Außenhandelsstatistik].LandKz_ISO_3 AND tblSteuernummern.LandNr = [Länderverzeichnis für die Außenhandelsstatistik].LandNr + WHERE tblSteuernummern.UStV = 1 AND tblUTAImportNew.UStVAn_ID IS NULL " & sqlKunden & " + GROUP BY + tblSteuernummern.AdressenNr, + tblSteuernummern.LandNr, + [Länderverzeichnis für die Außenhandelsstatistik].LandKz, + tblUTAImportNew.Rechnungsdatum + + HAVING + tblUTAImportNew.Rechnungsdatum >= + CASE + WHEN GETDATE() > CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-06-30' AS DATE) + THEN CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-01-01' AS DATE) + ELSE CAST(CAST(YEAR(GETDATE()) - 1 AS VARCHAR) + '-01-01' AS DATE) + END + AND SUM(tblUTAImportNew.Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) <> 0 + /*ORDER BY tblSteuernummern.AdressenNr, tblSteuernummern.LandNr, tblUTAImportNew.Rechnungsdatum*/" + + + + Dim union As String = " UNION ALL " + Dim sqlQery = qryUStVVorschau_VERAG & union & qryUStVVorschau_IDS_ALT & union & qryUStVVorschau_UTA_ALT & union & qryUStVVorschau_IDS_NEU & union & qryUStVVorschau_UTA_NEU & union & qryUStVVorschau_MSE_NEU & union & qryUStVVorschau_MSE_ALT + + + Dim dtVorschau As DataTable = SQL.loadDgvBySql(sqlQery, "FMZOLL") + + If dtVorschau.Columns.Contains("LandNr") Then dtVorschau.Columns.Remove("LandNr") + + cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,,, True) + + + + End Sub End Class diff --git a/SDL/mdm/usrCntlMDMAuswertungen.vb b/SDL/mdm/usrCntlMDMAuswertungen.vb index f574215c..fd0bb56e 100644 --- a/SDL/mdm/usrCntlMDMAuswertungen.vb +++ b/SDL/mdm/usrCntlMDMAuswertungen.vb @@ -1083,26 +1083,26 @@ Public Class usrCntlMDMAuswertungen End If - Dim dtReText As DataTable = SQL.loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] + Dim dtSelectedSammelrechnungen As DataTable = SQL.loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] FROM Rechnungsausgang WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND [Sachbearbeiter] = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL") 'Rechnungstext im RK eintragen - If dtReText.Rows.Count > 0 Then + If dtSelectedSammelrechnungen.Rows.Count > 0 Then - For Each r In dtReText.Rows + For Each rowRE In dtSelectedSammelrechnungen.Rows - Select Case r("BelegartenNr") + Select Case rowRE("BelegartenNr") Case 70 'RECHNUNG - If Not r("Vorkasse") Then - If r("Lastschrift") Then + If Not rowRE("Vorkasse") Then + If rowRE("Lastschrift") Then varText = varText & "Der Rechnungsbetrag wurde durch erteilten Abbuchungsauftrag eingezogen." & vbCrLf Else - If Not IsDBNull(r("RechnungsKundenNr")) Then + If Not IsDBNull(rowRE("RechnungsKundenNr")) Then 'Zahlungsziel aus Kundenstamm. - Dim ZZ = SQL.getValueTxtBySql("SELECT Kunden.Zahlungsziel from Kunden WHERE Kunden.KundenNr=" & r("RechnungsKundenNr") & " AND Kunden.Zahlungsziel Is Not Null", "FMZOLL") + Dim ZZ = SQL.getValueTxtBySql("SELECT Kunden.Zahlungsziel from Kunden WHERE Kunden.KundenNr=" & rowRE("RechnungsKundenNr") & " AND Kunden.Zahlungsziel Is Not Null", "FMZOLL") If ZZ <> "" AndAlso IsNumeric(ZZ) Then varNettozahlungsziel = ZZ strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") @@ -1111,8 +1111,8 @@ Public Class usrCntlMDMAuswertungen 'Zahlungsziel aus Offertenstamm. If strFälligkeitsdatum = "" Then - If Not IsDBNull(r("OffertenNr")) Then - Dim ZZOffert = SQL.getValueTxtBySql("SELECT Offertenstamm.Zahlungsziel FROM Offertenstamm WHERE Offertenstamm.OffertenNr = " & r("OffertenNr") & " AND Offertenstamm.Zahlungsziel IS NOT NULL", "FMZOLL") + If Not IsDBNull(rowRE("OffertenNr")) Then + Dim ZZOffert = SQL.getValueTxtBySql("SELECT Offertenstamm.Zahlungsziel FROM Offertenstamm WHERE Offertenstamm.OffertenNr = " & rowRE("OffertenNr") & " AND Offertenstamm.Zahlungsziel IS NOT NULL", "FMZOLL") If ZZOffert <> "" AndAlso IsNumeric(ZZOffert) Then varNettozahlungsziel = ZZOffert strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") @@ -1123,9 +1123,9 @@ Public Class usrCntlMDMAuswertungen 'Zahlungsziel ermitteln. If strFälligkeitsdatum = "" Then - If Not IsDBNull(r("RK_ID")) Then + If Not IsDBNull(rowRE("RK_ID")) Then 'Zahlungsziel bei Kreditaufwendungen. - Dim ZZRKID = SQL.getValueTxtBySql("Select Case [Preis], [Anzahl] From [RechnungsausgangPositionen] Where [RK_ID] = " & r("RK_ID") & " And [LeistungsNr] = 750 And [BerechnungsartNr] = 9", "FMZOLL") + Dim ZZRKID = SQL.getValueTxtBySql("Select Case [Preis], [Anzahl] From [RechnungsausgangPositionen] Where [RK_ID] = " & rowRE("RK_ID") & " And [LeistungsNr] = 750 And [BerechnungsartNr] = 9", "FMZOLL") If ZZRKID <> "" Then strZahlbar = "Zahlbar innerhalb 10 Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig." Else @@ -1140,9 +1140,9 @@ Public Class usrCntlMDMAuswertungen 'Fälligkeitstext in Landessprache If strFälligkeitsdatum <> "" Then strZahlbar = "Rechnung zahlbar spätestens bis " & strFälligkeitsdatum & "!" - If Not IsDBNull(r("RechnungsLandKz")) Then + If Not IsDBNull(rowRE("RechnungsLandKz")) Then - Dim ZZRLandKZ = SQL.getValueTxtBySql("SELECT tblZahlungszieltexte.Text FROM tblZahlungszieltexte WHERE tblZahlungszieltexte.LandKz='" & r("RechnungsLandKz") & "' AND tblZahlungszieltexte.Text Is Not Null", "FMZOLL") + Dim ZZRLandKZ = SQL.getValueTxtBySql("SELECT tblZahlungszieltexte.Text FROM tblZahlungszieltexte WHERE tblZahlungszieltexte.LandKz='" & rowRE("RechnungsLandKz") & "' AND tblZahlungszieltexte.Text Is Not Null", "FMZOLL") If ZZRLandKZ <> "" Then strZahlbar = ZZRLandKZ & " " & strFälligkeitsdatum & "!" End If @@ -1155,18 +1155,18 @@ Public Class usrCntlMDMAuswertungen End If ' Text bei Zoll oder EUSt drucken - Dim Zoll = SQL.getValueTxtBySql("Select LeistungsNr From dbo.RechnungsausgangPositionen Where RK_ID = " & r("RK_ID") & " And LeistungsNr In (10, 60, 70)", "FMZOLL") + Dim Zoll = SQL.getValueTxtBySql("Select LeistungsNr From dbo.RechnungsausgangPositionen Where RK_ID = " & rowRE("RK_ID") & " And LeistungsNr In (10, 60, 70)", "FMZOLL") If Not IsDBNull(Zoll) AndAlso Zoll <> "" Then varText = varText & "Alle Zollbelege bitte sofort auf Richtigkeit prüfen da Einspruch gemäß § 355 AO nur 1 Monat nach Datum des Zollbescheides möglich." & vbCrLf End If Case 71 'GUTSCHRIFT - If r("Lastschrift") Then + If rowRE("Lastschrift") Then varText = varText & "Der Gutschriftsbetrag wurde mit erteilten Abbuchungsauftrag verrechnet." & vbCrLf End If End Select - ok = SQL.doSQL("Update [Rechnungsausgang] Set [Text] = '" & varText & "', [Nettozahlungsziel] = " & varNettozahlungsziel & " WHERE [RK_ID] = " & r("RK_ID"), "FMZOLL") + ok = SQL.doSQL("Update [Rechnungsausgang] Set [Text] = '" & varText & "', [Nettozahlungsziel] = " & varNettozahlungsziel & " WHERE [RK_ID] = " & rowRE("RK_ID"), "FMZOLL") If Not ok Then MsgBox("Fehler") : Exit Sub varText = "" @@ -1177,163 +1177,6 @@ Public Class usrCntlMDMAuswertungen End If - ' Die Abfrage ermittelt aus den Rechnungspositonen, - ' das Vorkommen (Anzahl Porto/Papiere) pro RechnungsKundenNr - ' Status=0, Sammelrechnung=6, LeistungsNr=440. - - Dim sqlString = "SELECT - Rechnungsausgang.Firma_ID, - Rechnungsausgang.Status, - Rechnungsausgang.Sammelrechnung, - Rechnungsausgang.Sachbearbeiter, - Rechnungsausgang.RechnungsKundenNr, - Rechnungsausgang.BelegartenNr, - Rechnungsausgang.Währungscode, - isnull(Rechnungsausgang.[Steuersatz %],0) as [Steuersatz %], - cast(Rechnungsausgang.Lastschrift as bit) as Lastschrift, - SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) AS AnzahlPP, - SUM(CASE WHEN LeistungsNr = 440 THEN 0 ELSE SteuerpflichtigerBetrag + SteuerfreierBetrag END) AS BetragExclusivPP - FROM - Rechnungsausgang - INNER JOIN - RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID - WHERE - Rechnungsausgang.Status = 0 - AND Rechnungsausgang.Sammelrechnung = 6 - AND Rechnungsausgang.Sachbearbeiter = '" & Sachbearbeiter & "' - AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - - GROUP BY - Rechnungsausgang.Firma_ID, - Rechnungsausgang.Status, - Rechnungsausgang.Sammelrechnung, - Rechnungsausgang.Sachbearbeiter, - Rechnungsausgang.RechnungsKundenNr, - Rechnungsausgang.BelegartenNr, - Rechnungsausgang.Währungscode, - Rechnungsausgang.[Steuersatz %], - Rechnungsausgang.Lastschrift - HAVING - SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) > 0 - ORDER BY - Rechnungsausgang.Firma_ID, - Rechnungsausgang.Status, - Rechnungsausgang.Sammelrechnung, - Rechnungsausgang.Sachbearbeiter, - Rechnungsausgang.RechnungsKundenNr, - Rechnungsausgang.BelegartenNr, - Rechnungsausgang.Währungscode, - Rechnungsausgang.[Steuersatz %], - Rechnungsausgang.Lastschrift" - - Dim dtPP As DataTable = SQL.loadDgvBySql(sqlString, "FMZOLL") - - If dtPP.Rows.Count > 0 Then - - For Each r In dtPP.Rows - - Dim intZlr As Integer = 0 - - ' Bei BetragExclusivPP kleiner als 150€ wird 1x P.P. verrechnet, bei grösser/gleich 150€ wird kein P.P. verrechnet. - ' Zähler auf die Anzahl der P.P. Löschungen einstellen. - - If Not IsDBNull(r("BetragExclusivPP")) AndAlso r("BetragExclusivPP") > 0 Then - - If r("BetragExclusivPP") < 150 Then - intZlr = r("AnzahlPP") - 1 - Else - intZlr = r("AnzahlPP") - End If - Else - If (0 - r("BetragExclusivPP")) < 150 Then - intZlr = r("AnzahlPP") - 1 - Else - intZlr = r("AnzahlPP") - 1 - End If - - End If - - - If intZlr > 0 Then - - Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) - Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") - - ' Die Abfrage liest in der Tabelle Rechnungsausgang, - ' passend zu den durch die vorherige Abfrage bereitgestellten Parametern. - - Dim sqlStringRechnungen As String = "Select DISTINCT - Rechnungsausgang.OffertenNr, - Rechnungsausgang.RK_ID, - Rechnungsausgang.SteuerpflichtigerGesamtbetrag, - Rechnungsausgang.SteuerfreierGesamtbetrag, - Rechnungsausgang.upsize_ts - FROM Rechnungsausgang - WHERE - Rechnungsausgang.Firma_ID = " & r("Firma_ID") & " - And Rechnungsausgang.Status = " & r("Status") & " - And Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & " - And Rechnungsausgang.Sachbearbeiter = '" & Sachbearbeiter & "' - And Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & " - And Rechnungsausgang.BelegartenNr = " & r("BelegartenNr") & " - And Rechnungsausgang.Währungscode = '" & r("Währungscode") & "' - And Rechnungsausgang.[Steuersatz %] = " & SteuersatzString & " - And Rechnungsausgang.Lastschrift = " & IIf(r("Lastschrift"), 1, 0) & " - AND cast(Rechnungsausgang.Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - ORDER by - Rechnungsausgang.OffertenNr" - - - - - Dim dtRechnungen As DataTable = SQL.loadDgvBySql(sqlStringRechnungen, "FMZOLL") - - If dtRechnungen.Rows.Count > 0 Then - - For Each re In dtRechnungen.Rows - - - - Dim dtREPOSANZ As DataTable = SQL.loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing], Anzahl, SteuerpflichtigerBetrag, SteuerfreierBetrag,upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 440", "FMZOLL") - - If dtREPOSANZ.Rows.Count > 0 Then - - Dim stgesBetr = re("SteuerpflichtigerGesamtbetrag") - Dim stfregesBetr = re("SteuerfreierGesamtbetrag") - - Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) - - For Each row In dtREPOSANZ.Rows - - intZlr = intZlr - row("Anzahl") - stgesBetr = stgesBetr - row("SteuerpflichtigerBetrag") - stfregesBetr = stfregesBetr - row("SteuerfreierBetrag") - If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, row("LeistungsNr"), row("Steuerpflichtig"), row("LeistungsBez"), row("IndexZkteing")) Then - RECHNUNG.SteuerfreierGesamtbetrag = stfregesBetr - RECHNUNG.SteuerpflichtigerGesamtbetrag = stgesBetr - RECHNUNG.SAVE() - End If - - If intZlr = 0 Then Exit For - - Next - End If - - - - Next - - End If - End If - - - - - - - Next - - End If 'Berechnet Banküberweisung/Bankspesen. @@ -1512,11 +1355,175 @@ Public Class usrCntlMDMAuswertungen Next - End If + End If End Sub + Private Function PortoPapiere(Sachbearbeiter As String, rechnungsdatum As Date) As Boolean + + + ' Die Abfrage ermittelt aus den Rechnungspositonen, + ' das Vorkommen (Anzahl Porto/Papiere) pro RechnungsKundenNr + ' Status=0, Sammelrechnung=6, LeistungsNr=440. + + + Dim sqlString = "SELECT + Rechnungsausgang.Firma_ID, + Rechnungsausgang.Status, + Rechnungsausgang.Sammelrechnung, + Rechnungsausgang.Sachbearbeiter, + Rechnungsausgang.RechnungsKundenNr, + Rechnungsausgang.BelegartenNr, + Rechnungsausgang.Währungscode, + isnull(Rechnungsausgang.[Steuersatz %],0) as [Steuersatz %], + cast(Rechnungsausgang.Lastschrift as bit) as Lastschrift, + SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) AS AnzahlPP, + SUM(CASE WHEN LeistungsNr = 440 THEN 0 ELSE SteuerpflichtigerBetrag + SteuerfreierBetrag END) AS BetragExclusivPP + FROM + Rechnungsausgang + INNER JOIN + RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID + WHERE + Rechnungsausgang.Status = 0 + AND Rechnungsausgang.Sammelrechnung = 6 + AND Rechnungsausgang.Sachbearbeiter = '" & Sachbearbeiter & "' + AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + + GROUP BY + Rechnungsausgang.Firma_ID, + Rechnungsausgang.Status, + Rechnungsausgang.Sammelrechnung, + Rechnungsausgang.Sachbearbeiter, + Rechnungsausgang.RechnungsKundenNr, + Rechnungsausgang.BelegartenNr, + Rechnungsausgang.Währungscode, + Rechnungsausgang.[Steuersatz %], + Rechnungsausgang.Lastschrift + HAVING + SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) > 0 + ORDER BY + Rechnungsausgang.Firma_ID, + Rechnungsausgang.Status, + Rechnungsausgang.Sammelrechnung, + Rechnungsausgang.Sachbearbeiter, + Rechnungsausgang.RechnungsKundenNr, + Rechnungsausgang.BelegartenNr, + Rechnungsausgang.Währungscode, + Rechnungsausgang.[Steuersatz %], + Rechnungsausgang.Lastschrift" + + Dim dtPP As DataTable = (New SQL).loadDgvBySql(sqlString, "FMZOLL") + + If dtPP.Rows.Count > 0 Then + + For Each r In dtPP.Rows + + Dim intZlr As Integer = 0 + + ' Bei BetragExclusivPP kleiner als 150€ wird 1x P.P. verrechnet, bei grösser/gleich 150€ wird kein P.P. verrechnet. + ' Zähler auf die Anzahl der P.P. Löschungen einstellen. + + If Not IsDBNull(r("BetragExclusivPP")) AndAlso r("BetragExclusivPP") > 0 Then + + If r("BetragExclusivPP") < 150 Then + intZlr = r("AnzahlPP") - 1 + Else + intZlr = r("AnzahlPP") + End If + Else + If (0 - r("BetragExclusivPP")) < 150 Then + intZlr = r("AnzahlPP") - 1 + Else + intZlr = r("AnzahlPP") - 1 + End If + + End If + + + If intZlr > 0 Then + + Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) + Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") + + ' Die Abfrage liest in der Tabelle Rechnungsausgang, + ' passend zu den durch die vorherige Abfrage bereitgestellten Parametern. + + Dim sqlStringRechnungen As String = "Select DISTINCT + Rechnungsausgang.OffertenNr, + Rechnungsausgang.RK_ID, + Rechnungsausgang.SteuerpflichtigerGesamtbetrag, + Rechnungsausgang.SteuerfreierGesamtbetrag, + Rechnungsausgang.upsize_ts + FROM Rechnungsausgang + WHERE + Rechnungsausgang.Firma_ID = " & r("Firma_ID") & " + And Rechnungsausgang.Status = " & r("Status") & " + And Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & " + And Rechnungsausgang.Sachbearbeiter = '" & Sachbearbeiter & "' + And Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & " + And Rechnungsausgang.BelegartenNr = " & r("BelegartenNr") & " + And Rechnungsausgang.Währungscode = '" & r("Währungscode") & "' + And Rechnungsausgang.[Steuersatz %] = " & SteuersatzString & " + And Rechnungsausgang.Lastschrift = " & IIf(r("Lastschrift"), 1, 0) & " + AND cast(Rechnungsausgang.Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + ORDER by + Rechnungsausgang.OffertenNr" + + + + + Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql(sqlStringRechnungen, "FMZOLL") + + If dtRechnungen.Rows.Count > 0 Then + + For Each re In dtRechnungen.Rows + + + + Dim dtREPOSANZ As DataTable = (New SQL).loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing], Anzahl, SteuerpflichtigerBetrag, SteuerfreierBetrag,upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 440", "FMZOLL") + + If dtREPOSANZ.Rows.Count > 0 Then + + Dim stgesBetr = re("SteuerpflichtigerGesamtbetrag") + Dim stfregesBetr = re("SteuerfreierGesamtbetrag") + + Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) + + For Each row In dtREPOSANZ.Rows + + intZlr = intZlr - row("Anzahl") + stgesBetr = stgesBetr - row("SteuerpflichtigerBetrag") + stfregesBetr = stfregesBetr - row("SteuerfreierBetrag") + If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, row("LeistungsNr"), row("Steuerpflichtig"), row("LeistungsBez"), row("IndexZkteing")) Then + RECHNUNG.SteuerfreierGesamtbetrag = stfregesBetr + RECHNUNG.SteuerpflichtigerGesamtbetrag = stgesBetr + RECHNUNG.SAVE() + End If + + If intZlr = 0 Then Exit For + + Next + End If + + + + Next + + End If + End If + + + + + + + Next + + End If + + End Function + Private Sub Button16_Click(sender As Object, e As EventArgs) Handles btnContractdaten.Click Try