From 80f838ad2880810aa1c22103cd232d91e05297c0 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 12 Mar 2025 11:11:03 +0100 Subject: [PATCH 01/24] ustva, Fremdrechnungen, ids --- SDL/USTV/frmMDM_USTVAntrag.vb | 2 +- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 38 +- SDL/mdm/usrcntlFremdrechnungen.Designer.vb | 29 +- SDL/mdm/usrcntlFremdrechnungen.vb | 349 ++++++++++++++---- .../usrcntlPDFScanList.vb | 1 - VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb | 167 +++++++++ 6 files changed, 496 insertions(+), 90 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index f950d965..261aadd8 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -158,7 +158,7 @@ Public Class frmMDM_USTVAntrag For Each r As DataGridViewRow In .Rows - Dim da_id As Integer + Dim da_id As Integer = -1 If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index c56dbb65..dc9f6a84 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -64,20 +64,33 @@ Public Class ustCntlUSTV_AntragPosition loadChangedDSToPanel(UStV_Leitender, True) 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) : scanSonstiges.Enabled = False - 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) : scanSonstiges.Enabled = True - End Select + + If Not IsDBNull(UStV_POS.UStVPo_daId) AndAlso UStV_POS.UStVPo_daId > 0 Then + + da_id = UStV_POS.UStVPo_daId + + Else + + 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) : scanSonstiges.Enabled = False + Case 1 : da_id = 1 : scanSonstiges.Enabled = False 'VERAG-RECHNUGNEN werden immer direkt OHNE daid geöffnet! + Case -1 : da_id = IIf(UStV_POS.UStVPo_daId > 0, UStV_POS.UStVPo_daId, -1) + End Select + + End If + If da_id > -1 Then scanSonstiges.INIT_daId(da_id) + scanSonstiges.Enabled = Not UStV_POS.UStVPo_SchnittstellenNr > 0 Else - scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "DIVERSE") + scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_ID) + 'scanSonstiges.INIT_daId(da_id) + scanSonstiges.Enabled = True End If scanUSTVFABest.INIT(kdnr, "KUNDENDATEN", "FA_Bestaetigungen") @@ -437,12 +450,13 @@ Public Class ustCntlUSTV_AntragPosition Private Sub scanSonstiges_FileAdded(id As String, path As String, name As String) Handles scanSonstiges.FileAdded getValues(UStV_POS, True) UStV_POS.UStVPo_daId = id - UStV_POS.SAVE() + If UStV_POS.SAVE() Then scanSonstiges.INIT_daId(UStV_POS.UStVPo_daId) End Sub Private Sub scanSonstiges_FileDeleted() Handles scanSonstiges.FileDeleted getValues(UStV_POS, True) - UStV_POS.UStVPo_daId = -1 + UStV_POS.UStVPo_daId = Nothing UStV_POS.SAVE() + End Sub End Class diff --git a/SDL/mdm/usrcntlFremdrechnungen.Designer.vb b/SDL/mdm/usrcntlFremdrechnungen.Designer.vb index 61adea2c..426df73c 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.Designer.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.Designer.vb @@ -24,6 +24,7 @@ Partial Class usrcntlFremdrechnungen Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.DetailsAnzeigenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FlowLayoutPanel = New System.Windows.Forms.FlowLayoutPanel() Me.btnSDL_Alle = New System.Windows.Forms.Button() @@ -54,6 +55,7 @@ Partial Class usrcntlFremdrechnungen Me.Panel3 = New System.Windows.Forms.Panel() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() Me.dgvLFRechnung = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) + Me.dgvDetails = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.Panel4 = New System.Windows.Forms.Panel() Me.cntxtExcel = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() @@ -64,8 +66,10 @@ Partial Class usrcntlFremdrechnungen Me.Panel3.SuspendLayout() CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer1.Panel1.SuspendLayout() + Me.SplitContainer1.Panel2.SuspendLayout() Me.SplitContainer1.SuspendLayout() CType(Me.dgvLFRechnung, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.dgvDetails, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel4.SuspendLayout() Me.cntxtExcel.SuspendLayout() Me.SuspendLayout() @@ -388,7 +392,6 @@ Partial Class usrcntlFremdrechnungen Me.Button4.Text = "Details" & Global.Microsoft.VisualBasic.ChrW(10) & "anzeigen" Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.Button4.UseVisualStyleBackColor = True - Me.Button4.Visible = False ' 'Button5 ' @@ -449,6 +452,10 @@ Partial Class usrcntlFremdrechnungen ' Me.SplitContainer1.Panel1.AutoScroll = True Me.SplitContainer1.Panel1.Controls.Add(Me.dgvLFRechnung) + ' + 'SplitContainer1.Panel2 + ' + Me.SplitContainer1.Panel2.Controls.Add(Me.dgvDetails) Me.SplitContainer1.Panel2MinSize = 0 Me.SplitContainer1.Size = New System.Drawing.Size(1356, 799) Me.SplitContainer1.SplitterDistance = 559 @@ -471,6 +478,23 @@ Partial Class usrcntlFremdrechnungen Me.dgvLFRechnung.Size = New System.Drawing.Size(1354, 770) Me.dgvLFRechnung.TabIndex = 29 ' + 'dgvDetails + ' + Me.dgvDetails.AKTUALISIERUNGS_INTERVALL = 1000 + Me.dgvDetails.AllowUserToAddRows = False + Me.dgvDetails.AllowUserToDeleteRows = False + Me.dgvDetails.AllowUserToResizeColumns = False + Me.dgvDetails.AllowUserToResizeRows = False + DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvDetails.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2 + Me.dgvDetails.BackgroundColor = System.Drawing.Color.White + Me.dgvDetails.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize + Me.dgvDetails.Location = New System.Drawing.Point(-1, 3) + Me.dgvDetails.Name = "dgvDetails" + Me.dgvDetails.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect + Me.dgvDetails.Size = New System.Drawing.Size(1352, 228) + Me.dgvDetails.TabIndex = 30 + ' 'Panel4 ' Me.Panel4.BackColor = System.Drawing.Color.White @@ -515,9 +539,11 @@ Partial Class usrcntlFremdrechnungen Me.Panel1.PerformLayout() Me.Panel3.ResumeLayout(False) Me.SplitContainer1.Panel1.ResumeLayout(False) + Me.SplitContainer1.Panel2.ResumeLayout(False) CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainer1.ResumeLayout(False) CType(Me.dgvLFRechnung, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.dgvDetails, System.ComponentModel.ISupportInitialize).EndInit() Me.Panel4.ResumeLayout(False) Me.cntxtExcel.ResumeLayout(False) Me.ResumeLayout(False) @@ -557,4 +583,5 @@ Partial Class usrcntlFremdrechnungen Friend WithEvents cbx As CheckBox Friend WithEvents dat_Sum_Bis As DateTimePicker Friend WithEvents dat_Sum_Von As DateTimePicker + Friend WithEvents dgvDetails As VERAG_PROG_ALLGEMEIN.MyDatagridview End Class diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 9a996853..62c7bb31 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -1,5 +1,7 @@ Imports System.Reflection +Imports javax.xml.bind Imports Microsoft.Office.Interop +Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFremdrechnungen Dim KUNDE As New cKunden @@ -10,7 +12,7 @@ Public Class usrcntlFremdrechnungen Dim FUNC As New cProgramFunctions Dim aktbtn As String = "" Dim dgvInitWait As Boolean = False - Dim aktSDLNr As Integer = -1 + Dim aktLieferant As String = "ALLE" Dim fullyPainted = False @@ -70,7 +72,7 @@ Public Class usrcntlFremdrechnungen KUNDE = kundenSQL.getKundeByKdNr(kdNr) - SET_SDL(-1) + SET_SDL("") dgvInitWait = False Panel3.Visible = True @@ -195,7 +197,7 @@ Public Class usrcntlFremdrechnungen Sub SET_SDL(SDLNrTmp) - aktSDLNr = SDLNrTmp + aktLieferant = SDLNrTmp Dim anzahlTop = 1000 @@ -204,61 +206,61 @@ Public Class usrcntlFremdrechnungen Select Case SDLNrTmp 'IDS - Case 100 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & - " [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer, CustomerCode as Kundennummer,[daId],[TransactionVolume] as Transaktionsmenge,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] in (SELECT distinct([CustomerCode]) FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & ") and [YearMonthDay] " & setSQLWhere(SDLNrTmp, "") & " order by [YearMonthDay] desc, [Invoicenumber]" + Case "IDS" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + " invoice_id, [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer, CustomerCode as Kundennummer,[daId],[TransactionVolume] as Transaktionsmenge,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] in (SELECT distinct([CustomerCode]) FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & ") and [YearMonthDay] " & setSQLWhere(SDLNrTmp, "") & " order by [YearMonthDay] desc, [Invoicenumber]" 'UTA - Case 212 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + Case "UTA" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [Rechnungsdatum],[Rechnungsnummer_pro_Lieferland] as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[daId],[Lieferland_ISO2] as Land, 'RE' as Art, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " AND [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Land") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2]" SQL_STR &= " UNION ALL SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [Datum], [RechnungsNr],[KundenNr],0,0,0,[daId],'',[DocumentTyp], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Datum] " & setSQLWhere(SDLNrTmp, "") & " order by Rechnungsdatum desc" 'PLOSE - Case 214 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + Case "PLOSE" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [plInv_SupplierRechnungsDatum] as Rechnungsdatum, [plInv_SupplierRechnungsNr] as Rechnungsnummer,[plInv_PLOSEKundennummer] as Kundennummer,[plInv_Nettobetrag] as Nettobetrag,[plInv_MWSTBetrag] as MWST,[plInv_Bruttobetrag] as Bruttobetrag,[plInv_daId] as daId, [plInv_SupplierCountry] as Land, cast(case when [plInv_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblPLOSE_Inv_Data inner join Adressen on Adressen.PLOSEKundenNr = plInv_PLOSEKundennummer where 1 = 1 " & IIf(kdNr > 0, " AND Adressen.AdressenNr=" & kdNr, "") & " and [plInv_SupplierRechnungsDatum] " & setSQLWhere(SDLNrTmp, "plInv_SupplierCountry") & " Order by plInv_SupplierRechnungsDatum desc, [plInv_SupplierRechnungsNr]" 'MSE - Case 208 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + Case "MSE" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [invoice_date] as Rechnungsdatum, [invoice_id] as Rechnungsnummer/*,[invoice_nr]*/,[customer_number] as Kundennummer, daId, [total_amount_euro] as Brutto_EUR ,[total_vat_amount_euro] as MWST,[country] as Land, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblMSEInvoices where customer_number in (select customer_id from tblMSECustomers where 1 = 1 " & IIf(kdNr > 0, " AND [partner_customer_number]=" & kdNr, "") & " and [invoice_date] " & setSQLWhere(SDLNrTmp, "country") & " ) order by invoice_date desc, invoice_id" 'VERAG - Case 502 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + Case "VERAG" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer , tblTrdinInvoice.SteuerbetragLokal, 1 as daId, cast(1 as bit) as PDFvorhanden FROM tblTrdinInvoice WHERE 1 = 1 " & IIf(kdNr > 0, " AND tblTrdinInvoice.RechnungsKundenNr=" & kdNr, "") & " AND tblTrdinInvoice.FilialenNr = 4814 and tblTrdinInvoice.Rechnungsdatum " & setSQLWhere(SDLNrTmp, "'AT'") & " ORDER BY tblTrdinInvoice.Rechnungsdatum desc, tblTrdinInvoice.Rechnungsnummer" 'RMC - Case 999 : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & + Case "RMC" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & "[rmc_reDatum] as Rechnungsdatum,[rmc_reNr] as Rechnungsnummer,rmc_kdNr as Kundennummer,[rmc_betragNetto] as Nettobetrag,[rmc_betragBrutto] as Bruttobetrag,[rmc_waehrung] as Währung ,[rmc_euroBrutto] as Brutto_EUR,[rmc_daId] as daId,[rmc_betragMWST] as MWST,rmc_landKZ as Land, cast(case when [rmc_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblRMCImport] inner join Adressen on Adressen.WölflKundenNr = rmc_kdNr where 1 = 1 " & IIf(kdNr > 0, " AND AdressenNr=" & kdNr, "") & " and [rmc_reDatum] " & setSQLWhere(SDLNrTmp, "rmc_landKZ") & " order by rmc_reDatum desc, rmc_reNr" - Case -1 : Dim anzahl As Integer = anzahlTop / 6 : SQL_STR = " select * from (SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & + Case "ALLE" : Dim anzahl As Integer = anzahlTop / 6 : SQL_STR = " select * from (SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " --IDS - 'IDS' as Lieferant, [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer,CustomerCode as Kundennummer,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt,'' as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] = (SELECT TOP 1 [CustomerCode] FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & " ORDER BY Zeitstempel DESC) and [YearMonthDay] " & setSQLWhere(SDLNrTmp, "") & " order by [YearMonthDay], [Invoicenumber] + 'IDS' as Lieferant,invoice_id, [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer,CustomerCode as Kundennummer,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt,'' as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] = (SELECT TOP 1 [CustomerCode] FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & " ORDER BY Zeitstempel DESC) and [YearMonthDay] " & setSQLWhere(SDLNrTmp, "") & " order by [YearMonthDay], [Invoicenumber] UNION ALL --MSE - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'MSE' as Lieferant, [invoice_date] as Rechnungsdatum, cast([invoice_id] as nvarchar) as Rechnungsnummer,[customer_number] as Kundennummer, [total_amount_euro] as Bruttobetrag ,(total_amount_euro - [total_vat_amount_euro]) as Nettobetrag ,[total_vat_amount_euro] as MWST,[country] as Land,'RE' as Art,daId, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblMSEInvoices where customer_number = (select top 1 customer_id from tblMSECustomers where 1 = 1 " & IIf(kdNr > 0, " AND [partner_customer_number]=" & kdNr, "") & " and [invoice_date] " & setSQLWhere(SDLNrTmp, "country") & " ) order by invoice_date, invoice_id + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'MSE' as Lieferant,-1 as invoice_id, [invoice_date] as Rechnungsdatum, cast([invoice_id] as nvarchar) as Rechnungsnummer,[customer_number] as Kundennummer, [total_amount_euro] as Bruttobetrag ,(total_amount_euro - [total_vat_amount_euro]) as Nettobetrag ,[total_vat_amount_euro] as MWST,[country] as Land,'RE' as Art,daId, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblMSEInvoices where customer_number = (select top 1 customer_id from tblMSECustomers where 1 = 1 " & IIf(kdNr > 0, " AND [partner_customer_number]=" & kdNr, "") & " and [invoice_date] " & setSQLWhere(SDLNrTmp, "country") & " ) order by invoice_date, invoice_id UNION ALL --UTA - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'UTA' as Lieferant, [Rechnungsdatum],STR([Rechnungsnummer_pro_Lieferland]) as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[Lieferland_ISO2] as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Lieferland_ISO2") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2] UNION ALL SELECT 'UTA', [Datum], cast([RechnungsNr] as nvarchar) ,[KundenNr],0,0,0,'',[DocumentTyp],[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where AdressenNr = " & kdNr & " AND Datum " & setSQLWhere(SDLNrTmp, "") & " --order by Rechnungsnummer desc + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'UTA' as Lieferant,-1 as invoice_id, [Rechnungsdatum],STR([Rechnungsnummer_pro_Lieferland]) as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[Lieferland_ISO2] as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Lieferland_ISO2") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2] UNION ALL SELECT 'UTA',-1, [Datum], cast([RechnungsNr] as nvarchar) ,[KundenNr],0,0,0,'',[DocumentTyp],[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where AdressenNr = " & kdNr & " AND Datum " & setSQLWhere(SDLNrTmp, "") & " --order by Rechnungsnummer desc UNION ALL --VERAG - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'VERAG' as Lieferant, tblTrdinInvoice.Rechnungsdatum, cast(tblTrdinInvoice.Rechnungsnummer as nvarchar) as Rechnungsnummer ,tblTrdinInvoice.KundenNrZentrale as Kundennummer, tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal as Bruttobetrag ,tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal - tblTrdinInvoice.SteuerbetragLokal as Nettobetrag ,tblTrdinInvoice.SteuerbetragLokal as MWST, 'AT' as Land, 'RE' as Art, 1 as daId, cast(1 as bit) PDFvorhanden FROM tblTrdinInvoice WHERE 1 = 1 " & IIf(kdNr > 0, " AND tblTrdinInvoice.RechnungsKundenNr=" & kdNr, "") & " and tblTrdinInvoice.Rechnungsdatum " & setSQLWhere(SDLNrTmp, "'AT'") & " AND tblTrdinInvoice.FilialenNr = 4814 ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'VERAG' as Lieferant,-1 as invoice_id, tblTrdinInvoice.Rechnungsdatum, cast(tblTrdinInvoice.Rechnungsnummer as nvarchar) as Rechnungsnummer ,tblTrdinInvoice.KundenNrZentrale as Kundennummer, tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal as Bruttobetrag ,tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal - tblTrdinInvoice.SteuerbetragLokal as Nettobetrag ,tblTrdinInvoice.SteuerbetragLokal as MWST, 'AT' as Land, 'RE' as Art, 1 as daId, cast(1 as bit) PDFvorhanden FROM tblTrdinInvoice WHERE 1 = 1 " & IIf(kdNr > 0, " AND tblTrdinInvoice.RechnungsKundenNr=" & kdNr, "") & " and tblTrdinInvoice.Rechnungsdatum " & setSQLWhere(SDLNrTmp, "'AT'") & " AND tblTrdinInvoice.FilialenNr = 4814 ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer UNION ALL --PLOSE - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'PLOSE' as Lieferant, [plInv_SupplierRechnungsDatum] as Rechnungsdatum, cast([plInv_SupplierRechnungsNr] as nvarchar) as Rechnungsnummer,[plInv_PLOSEKundennummer] as Kundennummer,[plInv_Bruttobetrag] as Bruttobetrag,[plInv_Nettobetrag] as Nettobetrag,[plInv_MWSTBetrag] as MWST, [plInv_SupplierCountry] as Land, 'RE' as Art,[plInv_daId] as daId, cast(case when [plInv_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblPLOSE_Inv_Data inner join Adressen on Adressen.PLOSEKundenNr = plInv_PLOSEKundennummer where 1 = 1 " & IIf(kdNr > 0, " AND Adressen.AdressenNr=" & kdNr, "") & " and [plInv_SupplierRechnungsDatum] " & setSQLWhere(SDLNrTmp, "plInv_SupplierCountry") & " Order by plInv_SupplierRechnungsDatum desc, [plInv_SupplierRechnungsNr] + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'PLOSE' as Lieferant,-1 as invoice_id, [plInv_SupplierRechnungsDatum] as Rechnungsdatum, cast([plInv_SupplierRechnungsNr] as nvarchar) as Rechnungsnummer,[plInv_PLOSEKundennummer] as Kundennummer,[plInv_Bruttobetrag] as Bruttobetrag,[plInv_Nettobetrag] as Nettobetrag,[plInv_MWSTBetrag] as MWST, [plInv_SupplierCountry] as Land, 'RE' as Art,[plInv_daId] as daId, cast(case when [plInv_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblPLOSE_Inv_Data inner join Adressen on Adressen.PLOSEKundenNr = plInv_PLOSEKundennummer where 1 = 1 " & IIf(kdNr > 0, " AND Adressen.AdressenNr=" & kdNr, "") & " and [plInv_SupplierRechnungsDatum] " & setSQLWhere(SDLNrTmp, "plInv_SupplierCountry") & " Order by plInv_SupplierRechnungsDatum desc, [plInv_SupplierRechnungsNr] UNION ALL --RMC - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'RMC' as Lieferant, [rmc_reDatum] as Rechnungsdatum,cast([rmc_reNr] as nvarchar) as Rechnungsnummer,rmc_kdNr as Kundennummer ,[rmc_betragBrutto] as Bruttobetrag,[rmc_betragNetto] as Nettobetrag,[rmc_betragMWST] as MWST, rmc_landKZ as Land, 'RE' as Art, [rmc_daId] as daId, cast(case when [rmc_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblRMCImport] inner join Adressen on Adressen.WölflKundenNr = rmc_kdNr where 1 = 1 " & IIf(kdNr > 0, " AND AdressenNr=" & kdNr, "") & " and [rmc_reDatum] " & setSQLWhere(SDLNrTmp, "rmc_landKZ") & " order by rmc_reDatum, rmc_reNr + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'RMC' as Lieferant,-1 as invoice_id, [rmc_reDatum] as Rechnungsdatum,cast([rmc_reNr] as nvarchar) as Rechnungsnummer,rmc_kdNr as Kundennummer ,[rmc_betragBrutto] as Bruttobetrag,[rmc_betragNetto] as Nettobetrag,[rmc_betragMWST] as MWST, rmc_landKZ as Land, 'RE' as Art, [rmc_daId] as daId, cast(case when [rmc_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblRMCImport] inner join Adressen on Adressen.WölflKundenNr = rmc_kdNr where 1 = 1 " & IIf(kdNr > 0, " AND AdressenNr=" & kdNr, "") & " and [rmc_reDatum] " & setSQLWhere(SDLNrTmp, "rmc_landKZ") & " order by rmc_reDatum, rmc_reNr ) as temp where 1=1 and temp.Rechnungsdatum" & setSQLWhere(SDLNrTmp, "temp.Land", True) & " order by Rechnungsdatum desc" @@ -296,8 +298,13 @@ Public Class usrcntlFremdrechnungen End If + If .Columns.Contains("invoice_id") Then + .Columns("invoice_id").Visible = False + + End If End If + End With @@ -305,32 +312,47 @@ Public Class usrcntlFremdrechnungen dgvLFRechnung.Width = 100 dgvLFRechnung.Height = 100 dgvLFRechnung.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells + dgvLFRechnung.Rows(0).Frozen = True + initDGVWidth() 'vor Filter, damit richtige Größe setPDFImages() End Sub - Private Function setSQLWhere(SDLNrTmp As Integer, land As String, Optional alle As Boolean = False) As String + Private Function setSQLWhere(aktLieferant As String, land As String, Optional alle As Boolean = False) As String Dim SQLWhere = " between '" & dat_Sum_Von.Value.ToShortDateString & "' and '" & dat_Sum_Bis.Value.ToShortDateString & "'" - If cbx.Checked AndAlso SDLNrTmp <> 100 AndAlso KUNDE IsNot Nothing Then + If cbx.Checked AndAlso aktLieferant <> "IDS" AndAlso KUNDE IsNot Nothing Then 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) - If land <> "" Then SQLWhere &= " AND " & land & " not in ('" & KUNDE.LandKz & "')" + If land <> "" Then + + If KUNDE.LandKz <> "" Then + Dim landKZiso2 = "" + If KUNDE.LandKz.Length = 2 Then + landKZiso2 = KUNDE.LandKz + ElseIf KUNDE.LandKz.Length = 3 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) + + End If + + SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" + End If + End If '2. wenn die Rechnung die Summe NULL aufweist - Select Case SDLNrTmp - Case 212 And Not alle : SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0" 'UTA - Case 214 And Not alle : SQLWhere &= " AND plInv_Bruttobetrag <> 0" 'PLOSE - Case 502 And Not alle : SQLWhere &= " AND (tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal) <> 0" 'VERAG - Case 208 And Not alle : SQLWhere &= " AND total_amount_euro <> 0" 'MSE - Case 999 And Not alle : SQLWhere &= " AND rmc_betragBrutto <> 0" 'RMC - Case -1 And alle : SQLWhere &= " AND temp.Nettobetrag <> 0" 'ALLE + Select Case aktLieferant + Case "UTA" : If Not alle Then SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0" 'UTA + Case "PLOSE" : If Not alle Then SQLWhere &= " AND plInv_Bruttobetrag <> 0" 'PLOSE + Case "VERAG" : If Not alle Then SQLWhere &= " AND (tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal) <> 0" 'VERAG + Case "MSE" : If Not alle Then SQLWhere &= " AND total_amount_euro <> 0" 'MSE + Case "RMC" : If Not alle Then SQLWhere &= " AND rmc_betragBrutto <> 0" 'RMC + Case "ALLE" : If alle Then SQLWhere &= " AND temp.Nettobetrag <> 0" 'ALLE End Select '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt @@ -353,68 +375,109 @@ Public Class usrcntlFremdrechnungen End Function + Private Function setSQLDetailWhere(aktLieferant As String, land As String, Optional alle As Boolean = False) As String + + + Dim SQLWhere = "" + + If cbx.Checked AndAlso KUNDE IsNot Nothing Then + + 'ORIGINAL-RECHNUNG senden wenn: + '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) + If land <> "" Then + If KUNDE.LandKz <> "" Then + Dim landKZiso2 = "" + If KUNDE.LandKz.Length = 2 Then + landKZiso2 = KUNDE.LandKz + ElseIf KUNDE.LandKz.Length = 3 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) + + End If + + SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" + End If + End If + + '2. wenn die Rechnung die Summe NULL aufweist + + Select Case aktLieferant + Case "IDS" : If Not alle Then SQLWhere &= " AND [AmminclVAT] <> 0" 'IDS + End Select + + '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt + + + + '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt + + End If + + Return SQLWhere + + End Function + Function getSDLNrButton(SDLNrTmp) As Object Select Case SDLNrTmp - Case 100 : Return btnSDL_IDS - Case 212 : Return btnSDL_UTA - Case 213 : Return btnSDL_Hugo - Case 214 : Return btnSDL_PLOSE - Case 208 : Return btnSDL_MautMSE - Case 207 : Return btnSDL_FREJUS - Case 502 : Return btnVERAGCardNew - Case 999 : Return btnSDL_RMC + Case "IDS" : Return btnSDL_IDS + Case "UTA" : Return btnSDL_UTA + Case "HUGO" : Return btnSDL_Hugo + Case "PLOSE" : Return btnSDL_PLOSE + Case "MSE" : Return btnSDL_MautMSE + Case "FREJUS" : Return btnSDL_FREJUS + Case "VERAG" : Return btnVERAGCardNew + Case "RMC" : Return btnSDL_RMC Case Else : Return btnSDL_Alle End Select End Function Private Sub btnSDL_Alle_Click(sender As Object, e As EventArgs) Handles btnSDL_Alle.Click - SET_SDL(-1) + SET_SDL("ALLE") End Sub Private Sub btnSDL_IDS_Click(sender As Object, e As EventArgs) Handles btnSDL_IDS.Click - SET_SDL(100) + SET_SDL("IDS") End Sub Private Sub btnSDL_UTA_Click(sender As Object, e As EventArgs) Handles btnSDL_UTA.Click - SET_SDL(212) + SET_SDL("UTA") End Sub Private Sub btnSDL_Hugo_Click(sender As Object, e As EventArgs) Handles btnSDL_Hugo.Click - SET_SDL(213) + SET_SDL("HUGO") End Sub Private Sub btnSDL_PLOSE_Click(sender As Object, e As EventArgs) Handles btnSDL_PLOSE.Click - SET_SDL(214) + SET_SDL("PLOSE") End Sub Private Sub btnSDL_MautMSE_Click(sender As Object, e As EventArgs) Handles btnSDL_MautMSE.Click - SET_SDL(208) + SET_SDL("MSE") End Sub Private Sub btnSDL_MotorWay_Click(sender As Object, e As EventArgs) - SET_SDL(205) + SET_SDL("MW") End Sub Private Sub btnSDL_FREJUS_Click(sender As Object, e As EventArgs) Handles btnSDL_FREJUS.Click - SET_SDL(207) + SET_SDL("FREJUS") End Sub Private Sub btnVERAGCardNew_Click(sender As Object, e As EventArgs) Handles btnVERAGCardNew.Click - SET_SDL(502) + SET_SDL("VERAG") End Sub Private Sub btnSDL_RMC_Click(sender As Object, e As EventArgs) Handles btnSDL_RMC.Click - SET_SDL(999) + SET_SDL("RMC") End Sub - Sub newBinding(sdlNr As Integer, ByVal sql As String) + Sub newBinding(aktLieferant As String, ByVal sql As String) dgvInitWait = True ' bindingSDL = Nothing dgvLFRechnung.Columns.Clear() @@ -429,7 +492,7 @@ Public Class usrcntlFremdrechnungen dgvLFRechnung.LOAD() lblEinträge.Text = dgvLFRechnung.RowCount & " Einträge" - If dgvLFRechnung.RowCount >= 200 Then lblEinträge.Text = dgvLFRechnung.RowCount & " Einträge " & IIf(cbxMax1000Eintrage.Checked, "(Anzeige auf 200 beschränkt)", "") + If dgvLFRechnung.RowCount >= 200 Then lblEinträge.Text = dgvLFRechnung.RowCount & " Einträge " & IIf(cbxMax1000Eintrage.Checked, "(Anzeige auf 1000 beschränkt)", "") dgvInitWait = False @@ -460,11 +523,11 @@ Public Class usrcntlFremdrechnungen End Sub Sub reClick() - getSDLNrButton(aktSDLNr).PerformClick() + getSDLNrButton(aktLieferant).PerformClick() End Sub Sub refreshDgv(kdNr, SDLNr, Optional Kfz = "", Optional History = "") - SET_SDL(aktSDLNr) + SET_SDL(aktLieferant) dgvLFRechnung.ClearSelection() If Kfz <> "" And History <> "" Then @@ -505,7 +568,7 @@ Public Class usrcntlFremdrechnungen End If End Sub Private Sub dgvSDL_SelectionChanged(sender As Object, e As EventArgs) Handles dgvLFRechnung.Click - 'ReloadLeistung() + ReloadRechnungsdetails() End Sub @@ -517,7 +580,7 @@ Public Class usrcntlFremdrechnungen Dim TextHTMLtable = "" TextHTMLtable &= "" - TextHTMLtable &= "" + TextHTMLtable &= "" Dim pdflist As New List(Of String) For Each row In dgvLFRechnung.SelectedRows @@ -528,15 +591,7 @@ Public Class usrcntlFremdrechnungen If dgvLFRechnung.Columns.Contains("Lieferant") Then Lieferant = row.Cells("Lieferant").Value Else - Select Case aktSDLNr - Case 100 : Lieferant = "IDS" - Case 212 : Lieferant = "UTA" - Case 214 : Lieferant = "PLOSE" - Case 208 : Lieferant = "MSE" - Case 502 : Lieferant = "VERAG" - Case 999 : Lieferant = "RMC" - End Select - + Lieferant = aktLieferant End If If Lieferant = "VERAG" Then @@ -550,22 +605,53 @@ Public Class usrcntlFremdrechnungen ' cFakturierung.doRechnungsDruck_SRorER(da_id,, False, 3) 'End If + Else - TextHTMLtable &= "" - TextHTMLtable &= "" - TextHTMLtable &= "" - TextHTMLtable &= "" - TextHTMLtable &= "" + + + ' + + If Lieferant = "IDS" Then + + Dim dt As New DataTable + dt = initDGVRechnungsdetails(row.Cells("invoice_id").value, True) + + For Each r As DataRow In dt.Rows + + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + + Dim daId = r.Item("daId") + If daId > 0 Then + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) + pdflist.Add(DS.GET_TOP1_PATH()) + End If + + Next - Dim daId = row.Cells("daId").Value - If daId > 0 Then - Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) - pdflist.Add(DS.GET_TOP1_PATH()) + Else + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + + Dim daId = row.Cells("daId").Value + If daId > 0 Then + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) + pdflist.Add(DS.GET_TOP1_PATH()) + End If + End If + + End If Next @@ -689,7 +775,7 @@ Public Class usrcntlFremdrechnungen Private Sub Button1_Click_2(sender As Object, e As EventArgs) Handles Button1.Click - SET_SDL(aktSDLNr) + SET_SDL(aktLieferant) End Sub @@ -717,8 +803,8 @@ Public Class usrcntlFremdrechnungen Try If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then - Select Case aktSDLNr - Case 502 'VERAG + Select Case aktLieferant + Case "VERAG" Dim ReDat = dgvLFRechnung.Rows(e.RowIndex).Cells("Rechnungsdatum").Value Dim ReNr = dgvLFRechnung.Rows(e.RowIndex).Cells("Rechnungsnummer").Value @@ -728,7 +814,7 @@ Public Class usrcntlFremdrechnungen cFakturierung.doRechnungsDruck_SRorER(da_id,, False, 3) End If - Case -1 'ALLE + Case "ALLE" Dim Lieferant = dgvLFRechnung.Rows(e.RowIndex).Cells("Lieferant").Value If Lieferant = "VERAG" Then @@ -780,11 +866,11 @@ Public Class usrcntlFremdrechnungen End Sub Private Sub dat_Sum_Von_Leave(sender As Object, e As EventArgs) Handles dat_Sum_Von.Leave, dat_Sum_Bis.Leave - SET_SDL(aktSDLNr) + SET_SDL(aktLieferant) End Sub Private Sub cbx_CheckedChanged(sender As Object, e As EventArgs) Handles cbx.CheckedChanged - SET_SDL(aktSDLNr) + SET_SDL(aktLieferant) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) @@ -857,4 +943,117 @@ Public Class usrcntlFremdrechnungen End With End Sub + + + Sub ReloadRechnungsdetails() + + + ' MsgBox(dgvInitWait) + If Not dgvInitWait Then + Try + If dgvLFRechnung.SelectedRows.Count > 0 AndAlso (aktLieferant = "IDS" Or aktLieferant = "ALLE") Then + dgvDetails.Visible = True + If Not SplitContainer1.Panel2Collapsed Then + + Select Case aktLieferant + Case "IDS" : initDGVRechnungsdetails(dgvLFRechnung.SelectedRows(0).Cells("invoice_id").Value) + Case "ALLE" : If dgvLFRechnung.Columns.Contains("Lieferant") AndAlso dgvLFRechnung.SelectedRows(0).Cells("Lieferant").Value = "IDS" Then initDGVRechnungsdetails(dgvLFRechnung.SelectedRows(0).Cells("invoice_id").Value) + End Select + + Else + + dgvDetails.Visible = False + End If + + + End If + Catch ex As Exception + 'Neuer eintrag + MsgBox(ex.Message & ex.StackTrace) + End Try + + End If + + End Sub + + + Private Function initDGVRechnungsdetails(rechnugnsID As Integer, Optional setDatatable As Boolean = False) As DataTable + + Dim sql = " select [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer, CustomerCode as Kundennummer,[daId],[TransactionVolume] as Transaktionsmenge,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt, + cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden,[Country] as Land + FROM [VERAG].[dbo].[tblIDSInvoicesNewSplittedByCountry] WHERE [TotalInvoiceId] = " & rechnugnsID & setSQLDetailWhere(aktLieferant, "Country") + + If setDatatable Then + + Dim dtRechnugnsdet As DataTable = (New SQL).loadDgvBySql(sql, "FMZOLL") + Return dtRechnugnsdet + + End If + + + With dgvDetails + + .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells + .SET_SQL(sql, "FMZOLL") + .LOAD() + .ClearSelection() + + Dim c As New DataGridViewImageColumn + c.Name = "PDF" : c.HeaderText = "PDF" + c.DefaultCellStyle.NullValue = Nothing + c.ImageLayout = DataGridViewImageCellLayout.Zoom + c.Width = 40 + c.DefaultCellStyle.Padding = New Padding(2) + c.DefaultCellStyle.BackColor = Color.White + c.Image = My.Resources.pdf_gray + + + If Not .Columns.Contains("PDF") Then .Columns.Add(c) + + If .Columns.Count > 0 Then + + For Each r As DataGridViewRow In .Rows + + If IsDBNull(r.Cells("daId").Value) OrElse r.Cells("daId").Value = 0 Then + DirectCast(r.Cells("PDF"), DataGridViewImageCell).Value = My.Resources.pdf_gray + End If + + If .Columns.Contains("daId") Then + If .Columns("daId") IsNot Nothing Then .Columns("daId").Visible = False + End If + + Next + + End If + + End With + + + + End Function + + Private Sub dgvDetails_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvDetails.CellContentDoubleClick + + + Try + If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then + + + Dim daId = dgvDetails.Rows(e.RowIndex).Cells("daId").Value + If daId > 0 Then + Me.Cursor = Cursors.WaitCursor + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) + DS.OPEN_SINGLE() + End If + + End If + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + Me.Cursor = Cursors.Default + End Try + + Me.Cursor = Cursors.Default + + End Sub End Class diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb index eff04f3b..cafa20c0 100644 --- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb +++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb @@ -376,7 +376,6 @@ Public Class usrcntlPDFScanList ElseIf files.Count > 0 Then If files(0) <> "" Then Dim fio As New System.IO.FileInfo(files(0)) - If DS.uploadDataToDATENSERVER(files(0), fio.Name, ".pdf") Then RaiseEvent FileAdded(DS.da_id, DS.GET_TOP1_PATH, DS.da_name) MsgBox("Dokument wurde hochgeladen.") diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb index 97305f4c..df8c7bdd 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb @@ -664,6 +664,173 @@ End Class +Public Class cIDSInvoiceSplittedByCountry + + Property invoice_id As Integer + Property YearMonthDay As Object = Nothing + Property CustomerCode As Object = Nothing + Property TotalInvoiceId As Object = Nothing + Property Country As Object = Nothing + Property Invoicenumber As Object = Nothing + Property DocumentName As Object = Nothing + Property Zeitstempel As Object = Nothing + Property daid As Object = Nothing + Property archiv As Boolean + Property archiviertDatum As Object = Nothing + + + + Public hasEntry = False + + Dim SQL As New SQL + + Sub New() + + End Sub + + Sub New(invoice_id) + Me.invoice_id = invoice_id + LOADID() + End Sub + + Sub New(YearMonthDay, CustomerCode, Invoicenumber, Country) + Me.YearMonthDay = YearMonthDay + Me.Invoicenumber = Invoicenumber + Me.CustomerCode = CustomerCode + Me.Country = Country + LOAD() + + End Sub + + + Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) + Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("invoice_id", invoice_id,, True)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("YearMonthDay", YearMonthDay)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TotalInvoiceId", TotalInvoiceId)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("CustomerCode", CustomerCode)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Invoicenumber", Invoicenumber)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DocumentName", DocumentName)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Country", Country)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zeitstempel", Zeitstempel)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daid", daid)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("archiv", archiv)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("archiviertDatum", archiviertDatum)) + + + + Return list + End Function + Public Function SAVE() As Boolean + Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + + Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblIDSInvoicesNewSplittedByCountry WHERE YearMonthDay=@YearMonthDay AND CustomerCode=@CustomerCode AND Invoicenumber=@Invoicenumber AND Country=@Country) " & + " BEGIN " & getUpdateCmd() & " END " & + " Else " & + " BEGIN " & getInsertCmd() & " END " & + " commit tran " + + Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) + End Function + Public Sub LOADID() + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("SELECT * FROM tblIDSInvoicesNewSplittedByCountry WHERE invoice_id=@invoice_id ", conn) + cmd.Parameters.AddWithValue("@invoice_id", invoice_id) + Dim dr = cmd.ExecuteReader() + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Sub + + + Public Sub LOAD() + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("SELECT * FROM tblIDSInvoicesNewSplittedByCountry WHERE YearMonthDay=@YearMonthDay AND CustomerCode=@CustomerCode AND Invoicenumber=@Invoicenumber AND Country=@Country", conn) + cmd.Parameters.AddWithValue("@YearMonthDay", YearMonthDay) + cmd.Parameters.AddWithValue("@Invoicenumber", Invoicenumber) + cmd.Parameters.AddWithValue("@CustomerCode", CustomerCode) + cmd.Parameters.AddWithValue("@Country", Country) + + Dim dr = cmd.ExecuteReader() + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Sub + Public Function getUpdateCmd() As String + Try + Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + Dim str As String = "" + For Each i In list + If Not i.isPrimaryParam Then + str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," + End If + Next + str = str.Substring(0, str.Length - 1) 'wg. ',' + Return (" UPDATE [tblIDSInvoicesNewSplittedByCountry] SET " & str & " WHERE YearMonthDay=@YearMonthDay AND CustomerCode=@CustomerCode AND Invoicenumber=@Invoicenumber AND Country=@Country") + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return "" + End Function + Public Function getInsertCmd() As String + Try + Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + Dim str As String = "" + Dim values As String = "" + For Each i In list + If Not i.isPrimaryParam Then + str &= "[" & i.Text & "]," + values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," + End If + Next + str = str.Substring(0, str.Length - 1) 'wg. ',' + values = values.Substring(0, values.Length - 1) 'wg. ',' + Return (" INSERT INTO tblIDSInvoicesNewSplittedByCountry (" & str & ") VALUES(" & values & ") ") + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return "" + End Function + +End Class + + + From 566155a25864bb107317d06415ef11f56affea93 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 12 Mar 2025 15:00:25 +0100 Subject: [PATCH 02/24] Kunden, Fremdrechnungen, etc. --- .../usrcntlKundeBearbeitenFull.Designer.vb | 300 +++++++++++------- SDL/kunden/usrcntlKundeBearbeitenFull.vb | 55 ++++ SDL/mdm/usrcntlFremdrechnungen.Designer.vb | 4 +- SDL/mdm/usrcntlFremdrechnungen.vb | 66 +++- 4 files changed, 298 insertions(+), 127 deletions(-) diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb index a7ca107f..62986c37 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb @@ -42,6 +42,9 @@ Partial Class usrcntlKundeBearbeitenFull Dim DataGridViewCellStyle17 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle18 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle19 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle20 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle21 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle22 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.tbcntrDetails = New System.Windows.Forms.TabControl() Me.tbAbfertigung = New System.Windows.Forms.TabPage() Me.cbxVerzolltBeiExport = New System.Windows.Forms.CheckBox() @@ -52,11 +55,9 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboFremdspedition = New System.Windows.Forms.ComboBox() Me.cbxVerzolltBei = New System.Windows.Forms.CheckBox() Me.cbxBesonderheitenNEU = New System.Windows.Forms.CheckBox() - Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() Me.tbcntrAbf = New System.Windows.Forms.TabControl() Me.TabPage4 = New System.Windows.Forms.TabPage() Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() Me.rtbLKWFreigabeSenden = New System.Windows.Forms.RichTextBox() Me.Label18 = New System.Windows.Forms.Label() Me.TabPage3 = New System.Windows.Forms.TabPage() @@ -70,7 +71,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboAbfVerb_Abfertigungsverbot = New System.Windows.Forms.CheckBox() Me.txtAbfVerb_AbfertigungsverbotSeit = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.tbAufschub = New System.Windows.Forms.TabPage() - Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() Me.TabPage1 = New System.Windows.Forms.TabPage() Me.Label78 = New System.Windows.Forms.Label() Me.cbxAbf_ZollVM = New System.Windows.Forms.CheckBox() @@ -95,7 +95,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.rtbAbf_Besonderheiten = New System.Windows.Forms.RichTextBox() Me.Panel1 = New System.Windows.Forms.Panel() Me.tbFiskal = New System.Windows.Forms.TabPage() - Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() Me.tbVerrechnung = New System.Windows.Forms.TabPage() Me.pnlverag360 = New System.Windows.Forms.Panel() Me.txtAnmerkungAntraege = New VERAG_PROG_ALLGEMEIN.MyTextBox() @@ -235,6 +234,8 @@ Partial Class usrcntlKundeBearbeitenFull Me.Label22 = New System.Windows.Forms.Label() Me.txtBank_Blz = New System.Windows.Forms.TextBox() Me.tbUmsatzsteuer = New System.Windows.Forms.TabPage() + Me.btnMWSTspeichern = New VERAG_PROG_ALLGEMEIN.FlatButton() + Me.dgvMWST = New System.Windows.Forms.DataGridView() Me.txtUStIDGeprueftAm = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtUStID = New System.Windows.Forms.TextBox() Me.Button3 = New System.Windows.Forms.Button() @@ -362,7 +363,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbKontakt = New System.Windows.Forms.TabControl() Me.TabPage10 = New System.Windows.Forms.TabPage() Me.TabPage11 = New System.Windows.Forms.TabPage() - Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() Me.Label50 = New System.Windows.Forms.Label() Me.Label68 = New System.Windows.Forms.Label() Me.pnlNeukunde = New System.Windows.Forms.Panel() @@ -388,6 +388,11 @@ Partial Class usrcntlKundeBearbeitenFull Me.cboFirma = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.cboAuswahl = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.DataGridViewTextBoxColumn2 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.ucKundenKontakte = New SDL.usrCntlKundenKontakte() + Me.UsrCntlKundenBesonderheiten1 = New SDL.usrCntlKundenBesonderheiten() + Me.UsrCntlKundenAvisoMailBenachrichtigung1 = New SDL.usrCntlKundenAvisoMailBenachrichtigung() + Me.usrCntlAufschubkonten = New SDL.usrCntlAufschubkonten() + Me.UsrCntlKundeFiskaldaten1 = New SDL.usrCntlKundeFiskaldaten() Me.tbcntrDetails.SuspendLayout() Me.tbAbfertigung.SuspendLayout() Me.tbcntrAbf.SuspendLayout() @@ -410,6 +415,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.GroupBox4.SuspendLayout() CType(Me.dgvKreditkarten, System.ComponentModel.ISupportInitialize).BeginInit() Me.tbUmsatzsteuer.SuspendLayout() + CType(Me.dgvMWST, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgvUstv_LaenderUndSteuernummern, System.ComponentModel.ISupportInitialize).BeginInit() Me.tbSonstiges.SuspendLayout() CType(Me.dgvSonst_IDSKunden, System.ComponentModel.ISupportInitialize).BeginInit() @@ -571,16 +577,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.cbxBesonderheitenNEU.Text = "Besonderheiten NEU" Me.cbxBesonderheitenNEU.UseVisualStyleBackColor = True ' - 'UsrCntlKundenBesonderheiten1 - ' - Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) - Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" - Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) - Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 - Me.UsrCntlKundenBesonderheiten1.Visible = False - ' 'tbcntrAbf ' Me.tbcntrAbf.Controls.Add(Me.TabPage4) @@ -615,15 +611,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.FlowLayoutPanel1.Size = New System.Drawing.Size(200, 100) Me.FlowLayoutPanel1.TabIndex = 7 ' - 'UsrCntlKundenAvisoMailBenachrichtigung1 - ' - Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True - Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" - Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) - Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 - ' 'rtbLKWFreigabeSenden ' Me.rtbLKWFreigabeSenden.Location = New System.Drawing.Point(485, 33) @@ -792,14 +779,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbAufschub.Text = "Aufschubkonten" Me.tbAufschub.UseVisualStyleBackColor = True ' - 'usrCntlAufschubkonten - ' - Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill - Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) - Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" - Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) - Me.usrCntlAufschubkonten.TabIndex = 0 - ' 'TabPage1 ' Me.TabPage1.Controls.Add(Me.Label78) @@ -1105,15 +1084,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbFiskal.Text = "Fiskal" Me.tbFiskal.UseVisualStyleBackColor = True ' - 'UsrCntlKundeFiskaldaten1 - ' - Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White - Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill - Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) - Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" - Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) - Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 - ' 'tbVerrechnung ' Me.tbVerrechnung.Controls.Add(Me.pnlverag360) @@ -3345,6 +3315,8 @@ Partial Class usrcntlKundeBearbeitenFull ' 'tbUmsatzsteuer ' + Me.tbUmsatzsteuer.Controls.Add(Me.btnMWSTspeichern) + Me.tbUmsatzsteuer.Controls.Add(Me.dgvMWST) Me.tbUmsatzsteuer.Controls.Add(Me.txtUStIDGeprueftAm) Me.tbUmsatzsteuer.Controls.Add(Me.txtUStID) Me.tbUmsatzsteuer.Controls.Add(Me.Button3) @@ -3369,6 +3341,49 @@ Partial Class usrcntlKundeBearbeitenFull Me.tbUmsatzsteuer.Text = "Umsatzsteuer" Me.tbUmsatzsteuer.UseVisualStyleBackColor = True ' + 'btnMWSTspeichern + ' + Me.btnMWSTspeichern.allowBorder = False + Me.btnMWSTspeichern.Enabled = False + Me.btnMWSTspeichern.FlatAppearance.BorderSize = 0 + Me.btnMWSTspeichern.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnMWSTspeichern.ForeColor = System.Drawing.Color.Black + Me.btnMWSTspeichern.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnMWSTspeichern.Location = New System.Drawing.Point(186, 458) + Me.btnMWSTspeichern.Name = "btnMWSTspeichern" + Me.btnMWSTspeichern.Size = New System.Drawing.Size(131, 23) + Me.btnMWSTspeichern.TabIndex = 17 + Me.btnMWSTspeichern.Text = "Änderungen speichern" + Me.btnMWSTspeichern.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnMWSTspeichern.UseVisualStyleBackColor = True + ' + 'dgvMWST + ' + DataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvMWST.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle8 + Me.dgvMWST.BackgroundColor = System.Drawing.Color.White + DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvMWST.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle9 + Me.dgvMWST.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize + DataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.dgvMWST.DefaultCellStyle = DataGridViewCellStyle10 + Me.dgvMWST.Location = New System.Drawing.Point(9, 359) + Me.dgvMWST.Name = "dgvMWST" + Me.dgvMWST.Size = New System.Drawing.Size(171, 125) + Me.dgvMWST.TabIndex = 16 + ' 'txtUStIDGeprueftAm ' Me.txtUStIDGeprueftAm._DateTimeOnly = False @@ -3430,7 +3445,7 @@ Partial Class usrcntlKundeBearbeitenFull Me.Button11.Enabled = False Me.Button11.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button11.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button11.Location = New System.Drawing.Point(9, 421) + Me.Button11.Location = New System.Drawing.Point(514, 359) Me.Button11.Name = "Button11" Me.Button11.Size = New System.Drawing.Size(152, 31) Me.Button11.TabIndex = 14 @@ -3448,29 +3463,29 @@ Partial Class usrcntlKundeBearbeitenFull ' 'dgvUstv_LaenderUndSteuernummern ' - DataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.dgvUstv_LaenderUndSteuernummern.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle8 + DataGridViewCellStyle11.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvUstv_LaenderUndSteuernummern.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle11 Me.dgvUstv_LaenderUndSteuernummern.BackgroundColor = System.Drawing.Color.White - DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvUstv_LaenderUndSteuernummern.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle9 + DataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvUstv_LaenderUndSteuernummern.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle12 Me.dgvUstv_LaenderUndSteuernummern.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - DataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.dgvUstv_LaenderUndSteuernummern.DefaultCellStyle = DataGridViewCellStyle10 + DataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle13.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.dgvUstv_LaenderUndSteuernummern.DefaultCellStyle = DataGridViewCellStyle13 Me.dgvUstv_LaenderUndSteuernummern.Location = New System.Drawing.Point(9, 94) Me.dgvUstv_LaenderUndSteuernummern.Name = "dgvUstv_LaenderUndSteuernummern" - Me.dgvUstv_LaenderUndSteuernummern.Size = New System.Drawing.Size(657, 321) + Me.dgvUstv_LaenderUndSteuernummern.Size = New System.Drawing.Size(657, 259) Me.dgvUstv_LaenderUndSteuernummern.TabIndex = 13 ' 'Label90 @@ -3764,26 +3779,26 @@ Partial Class usrcntlKundeBearbeitenFull 'dgvSonst_IDSKunden ' Me.dgvSonst_IDSKunden.AllowUserToResizeRows = False - DataGridViewCellStyle11.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.dgvSonst_IDSKunden.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle11 + DataGridViewCellStyle14.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvSonst_IDSKunden.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle14 Me.dgvSonst_IDSKunden.BackgroundColor = System.Drawing.Color.White - DataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvSonst_IDSKunden.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle12 + DataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle15.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle15.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle15.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle15.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle15.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvSonst_IDSKunden.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle15 Me.dgvSonst_IDSKunden.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - DataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle13.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.dgvSonst_IDSKunden.DefaultCellStyle = DataGridViewCellStyle13 + DataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle16.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle16.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle16.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.dgvSonst_IDSKunden.DefaultCellStyle = DataGridViewCellStyle16 Me.dgvSonst_IDSKunden.Location = New System.Drawing.Point(9, 308) Me.dgvSonst_IDSKunden.MultiSelect = False Me.dgvSonst_IDSKunden.Name = "dgvSonst_IDSKunden" @@ -4092,26 +4107,26 @@ Partial Class usrcntlKundeBearbeitenFull 'DataGridView1 ' Me.DataGridView1.AllowUserToResizeRows = False - DataGridViewCellStyle14.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.DataGridView1.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle14 + DataGridViewCellStyle17.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.DataGridView1.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle17 Me.DataGridView1.BackgroundColor = System.Drawing.Color.White - DataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle15.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle15.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle15.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle15.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle15.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.DataGridView1.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle15 + DataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle18.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle18.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle18.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle18.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle18.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.DataGridView1.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle18 Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - DataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle16.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle16.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle16.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle16 + DataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle19.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle19.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle19.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle19.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle19.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle19.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle19 Me.DataGridView1.Enabled = False Me.DataGridView1.Location = New System.Drawing.Point(6, 111) Me.DataGridView1.MultiSelect = False @@ -4165,26 +4180,26 @@ Partial Class usrcntlKundeBearbeitenFull ' Me.dgvBankverbindungen.AllowUserToDeleteRows = False Me.dgvBankverbindungen.AllowUserToResizeRows = False - DataGridViewCellStyle17.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.dgvBankverbindungen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle17 + DataGridViewCellStyle20.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.dgvBankverbindungen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle20 Me.dgvBankverbindungen.BackgroundColor = System.Drawing.Color.White - DataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle18.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle18.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle18.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle18.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle18.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvBankverbindungen.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle18 + DataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle21.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle21.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle21.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle21.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle21.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle21.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvBankverbindungen.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle21 Me.dgvBankverbindungen.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - DataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle19.BackColor = System.Drawing.SystemColors.Window - DataGridViewCellStyle19.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - DataGridViewCellStyle19.ForeColor = System.Drawing.SystemColors.ControlText - DataGridViewCellStyle19.SelectionBackColor = System.Drawing.SystemColors.Highlight - DataGridViewCellStyle19.SelectionForeColor = System.Drawing.SystemColors.HighlightText - DataGridViewCellStyle19.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] - Me.dgvBankverbindungen.DefaultCellStyle = DataGridViewCellStyle19 + DataGridViewCellStyle22.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle22.BackColor = System.Drawing.SystemColors.Window + DataGridViewCellStyle22.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle22.ForeColor = System.Drawing.SystemColors.ControlText + DataGridViewCellStyle22.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle22.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle22.WrapMode = System.Windows.Forms.DataGridViewTriState.[False] + Me.dgvBankverbindungen.DefaultCellStyle = DataGridViewCellStyle22 Me.dgvBankverbindungen.Location = New System.Drawing.Point(3, 40) Me.dgvBankverbindungen.MultiSelect = False Me.dgvBankverbindungen.Name = "dgvBankverbindungen" @@ -5025,14 +5040,6 @@ Partial Class usrcntlKundeBearbeitenFull Me.TabPage11.Text = "Spezifisch" Me.TabPage11.UseVisualStyleBackColor = True ' - 'ucKundenKontakte - ' - Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill - Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) - Me.ucKundenKontakte.Name = "ucKundenKontakte" - Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) - Me.ucKundenKontakte.TabIndex = 0 - ' 'Label50 ' Me.Label50.AutoSize = True @@ -5313,6 +5320,50 @@ Partial Class usrcntlKundeBearbeitenFull Me.DataGridViewTextBoxColumn2.HeaderText = "E-Mail" Me.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2" ' + 'ucKundenKontakte + ' + Me.ucKundenKontakte.Dock = System.Windows.Forms.DockStyle.Fill + Me.ucKundenKontakte.Location = New System.Drawing.Point(3, 3) + Me.ucKundenKontakte.Name = "ucKundenKontakte" + Me.ucKundenKontakte.Size = New System.Drawing.Size(439, 169) + Me.ucKundenKontakte.TabIndex = 0 + ' + 'UsrCntlKundenBesonderheiten1 + ' + Me.UsrCntlKundenBesonderheiten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenBesonderheiten1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.UsrCntlKundenBesonderheiten1.Location = New System.Drawing.Point(6, 25) + Me.UsrCntlKundenBesonderheiten1.Name = "UsrCntlKundenBesonderheiten1" + Me.UsrCntlKundenBesonderheiten1.Size = New System.Drawing.Size(107, 52) + Me.UsrCntlKundenBesonderheiten1.TabIndex = 235 + Me.UsrCntlKundenBesonderheiten1.Visible = False + ' + 'UsrCntlKundenAvisoMailBenachrichtigung1 + ' + Me.UsrCntlKundenAvisoMailBenachrichtigung1.AutoScroll = True + Me.UsrCntlKundenAvisoMailBenachrichtigung1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Location = New System.Drawing.Point(0, 6) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Name = "UsrCntlKundenAvisoMailBenachrichtigung1" + Me.UsrCntlKundenAvisoMailBenachrichtigung1.Size = New System.Drawing.Size(479, 172) + Me.UsrCntlKundenAvisoMailBenachrichtigung1.TabIndex = 6 + ' + 'usrCntlAufschubkonten + ' + Me.usrCntlAufschubkonten.Dock = System.Windows.Forms.DockStyle.Fill + Me.usrCntlAufschubkonten.Location = New System.Drawing.Point(3, 3) + Me.usrCntlAufschubkonten.Name = "usrCntlAufschubkonten" + Me.usrCntlAufschubkonten.Size = New System.Drawing.Size(652, 172) + Me.usrCntlAufschubkonten.TabIndex = 0 + ' + 'UsrCntlKundeFiskaldaten1 + ' + Me.UsrCntlKundeFiskaldaten1.BackColor = System.Drawing.Color.White + Me.UsrCntlKundeFiskaldaten1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UsrCntlKundeFiskaldaten1.Location = New System.Drawing.Point(0, 0) + Me.UsrCntlKundeFiskaldaten1.Name = "UsrCntlKundeFiskaldaten1" + Me.UsrCntlKundeFiskaldaten1.Size = New System.Drawing.Size(672, 495) + Me.UsrCntlKundeFiskaldaten1.TabIndex = 0 + ' 'usrcntlKundeBearbeitenFull ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -5384,6 +5435,7 @@ Partial Class usrcntlKundeBearbeitenFull CType(Me.dgvKreditkarten, System.ComponentModel.ISupportInitialize).EndInit() Me.tbUmsatzsteuer.ResumeLayout(False) Me.tbUmsatzsteuer.PerformLayout() + CType(Me.dgvMWST, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.dgvUstv_LaenderUndSteuernummern, System.ComponentModel.ISupportInitialize).EndInit() Me.tbSonstiges.ResumeLayout(False) Me.tbSonstiges.PerformLayout() @@ -5758,4 +5810,6 @@ Partial Class usrcntlKundeBearbeitenFull Friend WithEvents txtVorauszahlung As VERAG_PROG_ALLGEMEIN.MyTextBox Friend WithEvents cbxVorauszahlung As CheckBox Friend WithEvents txtAnmerkungAntraege As VERAG_PROG_ALLGEMEIN.MyTextBox + Friend WithEvents dgvMWST As DataGridView + Friend WithEvents btnMWSTspeichern As VERAG_PROG_ALLGEMEIN.FlatButton End Class diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.vb index 83c7b0d1..da656fd8 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.vb @@ -981,6 +981,7 @@ Dim cBinding_dgvUStV As New cBinding("FMZOLL") Dim cBinding_dgvSonst_IDSKunden As New cBinding("FMZOLL") Dim cBinding_dgvBankverbindungen As New cBinding("FMZOLL") + Dim cBinding_dgvMWST As New cBinding("FMZOLL") @@ -2053,6 +2054,57 @@ End Sub + Private Sub dgvinitMWST() + + + + With dgvMWST + + cBinding_dgvMWST.initBinding(" SELECT Id, KdNr,LandKz " & + " FROM [tblKundenMWST] " & + " WHERE KdNr = " & KUNDE.KundenNr, "tblKundenMWST") + + + AddHandler btnMWSTspeichern.Click, + Sub(send As Object, evnt As EventArgs) + If cBinding_dgvMWST.updateBinding() Then + send.Enabled = False + End If + End Sub + + AddHandler cBinding_dgvMWST.bindingdataTable.ColumnChanged, + Sub(send As Object, evnt As EventArgs) + btnMWSTspeichern.Enabled = True + End Sub + + AddHandler .UserDeletedRow, + Sub(send As Object, evnt As DataGridViewRowEventArgs) + btnMWSTspeichern.Enabled = True + End Sub + + + .DataSource = cBinding_dgvMWST.bindingdataTable + + FUNC.dgvCellToCbo(dgvMWST, 2, "Land", "LandKz", "SELECT LandKz, LandBez FROM [Länderverzeichnis für die Außenhandelsstatistik] ORDER BY LandKz ", "FMZOLL") + + + .DataSource.Columns("KdNr").DefaultValue = KUNDE.KundenNr + + + .Columns(0).Visible = False + .Columns(1).Visible = False + + .Columns(2).Width = 100 + .Columns(2).HeaderText = "Land eig. MWST" + + + End With + + + End Sub + + + Private Sub initdgvIDSKunden() With dgvSonst_IDSKunden @@ -2204,6 +2256,7 @@ If tbcntrDetails.SelectedTab Is tbUmsatzsteuer Then dgvinitLaenderUndSteuernummern() + dgvinitMWST() End If If tbcntrDetails.SelectedTab Is tbSonstiges Then @@ -2241,4 +2294,6 @@ txtVorauszahlung.Enabled = cbxVorauszahlung.Checked If Not cbxVorauszahlung.Checked Then txtVorauszahlung.Text = "" End Sub + + End Class diff --git a/SDL/mdm/usrcntlFremdrechnungen.Designer.vb b/SDL/mdm/usrcntlFremdrechnungen.Designer.vb index 426df73c..5a04282b 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.Designer.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.Designer.vb @@ -297,9 +297,9 @@ Partial Class usrcntlFremdrechnungen Me.cbx.AutoSize = True Me.cbx.Location = New System.Drawing.Point(8, 107) Me.cbx.Name = "cbx" - Me.cbx.Size = New System.Drawing.Size(178, 17) + Me.cbx.Size = New System.Drawing.Size(169, 17) Me.cbx.TabIndex = 52 - Me.cbx.Text = "MWST-relevenate Rechnungen" + Me.cbx.Text = "Original-Rechnung an Kunden" Me.cbx.UseVisualStyleBackColor = True ' 'Label4 diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 62c7bb31..53e17b5b 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -15,6 +15,9 @@ Public Class usrcntlFremdrechnungen Dim aktLieferant As String = "ALLE" Dim fullyPainted = False + Dim dtkeineMWST As DataTable + Dim dtKundeMWST As DataTable + Private Sub usrCntlDaten_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -72,6 +75,11 @@ Public Class usrcntlFremdrechnungen KUNDE = kundenSQL.getKundeByKdNr(kdNr) + If KUNDE IsNot Nothing Then + dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland from tblKeineMWSTErstattung", "FMZOLL") + dtKundeMWST = (New SQL).loadDgvBySql("select LandKz from tblKundenMWST where KdNr = " & KUNDE.KundenNr, "FMZOLL") + End If + SET_SDL("") dgvInitWait = False @@ -312,7 +320,7 @@ Public Class usrcntlFremdrechnungen dgvLFRechnung.Width = 100 dgvLFRechnung.Height = 100 dgvLFRechnung.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells - dgvLFRechnung.Rows(0).Frozen = True + 'dgvLFRechnung.Rows(0).Frozen = True initDGVWidth() 'vor Filter, damit richtige Größe @@ -355,12 +363,44 @@ Public Class usrcntlFremdrechnungen Case "ALLE" : If alle Then SQLWhere &= " AND temp.Nettobetrag <> 0" 'ALLE End Select + + 'Dim counter = 0 + 'For Each n In List + ' gsnr &= n.ToString() + ' counter = counter + 1 + ' If (List.Count <> 0 And counter <> List.Count) Then + ' gsnr &= "," + ' End If + + + '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt + If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST.Rows + landBez = "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST.Rows.Count <> 0 And counter <> dtkeineMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " AND " & land & " not in (" & landBez & ")" + End If '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt + If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWST.Rows + landBez = "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " AND " & land & " not in (" & landBez & ")" + End If + 'nicht NOTWENDIG! 'Select Case KUNDE.LandKz @@ -371,7 +411,7 @@ Public Class usrcntlFremdrechnungen End If - Return SQLWhere + Return SQLWhere End Function @@ -406,10 +446,32 @@ Public Class usrcntlFremdrechnungen '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt + If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST.Rows + landBez = "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST.Rows.Count <> 0 And counter <> dtkeineMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " AND " & land & " not in (" & landBez & ")" + End If + '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt + If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWST.Rows + landBez = "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " AND " & land & " not in (" & landBez & ")" + End If + End If Return SQLWhere From eb42f142786386bfb5e5da085d451c40bbb12f78 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 12 Mar 2025 16:04:27 +0100 Subject: [PATCH 03/24] Offert. Kostenkalk --- SDL/Resources/Kostenkalkulation_AG.xlsx | Bin 0 -> 19748 bytes SDL/Resources/Kostenkalkulation_CS.xlsx | Bin 0 -> 151316 bytes SDL/Resources/Kostenkalkulation_IMEX.xlsx | Bin 0 -> 22073 bytes SDL/SDL.vbproj | 4 +- SDL/kunden/usrCntlOfferte.vb | 59 +++++++++++++++------- 5 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 SDL/Resources/Kostenkalkulation_AG.xlsx create mode 100644 SDL/Resources/Kostenkalkulation_CS.xlsx create mode 100644 SDL/Resources/Kostenkalkulation_IMEX.xlsx diff --git a/SDL/Resources/Kostenkalkulation_AG.xlsx b/SDL/Resources/Kostenkalkulation_AG.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6d7d37673009578b741207b6b91ca147b7fff9c5 GIT binary patch literal 19748 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

S0GaOL) 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 Always - + + + Always diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index 44784183..dab8fcb1 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -1,6 +1,7 @@  Imports VERAG_PROG_ALLGEMEIN +Imports VERAG_PROG_ALLGEMEIN.TESTJSON Public Class usrCntlOfferte @@ -580,7 +581,7 @@ Public Class usrCntlOfferte Next dgvOfferteDetails.AllowUserToDeleteRows = edit - End If + End If End With @@ -602,16 +603,16 @@ Public Class usrCntlOfferte .Columns.Clear() OFFERTEBind = New cEasyBinding(BIND_DB) - OFFERTEBind.initBinding(" SELECT [LeistungsNr],[LeistungsBez],[BerechnungsartNr],[Preis],[Anzahl],[BGebLeistungsNr],[BGebProzent],[BGebMinBetrag],BerechnungsartPosInkludiert,[Eingegeben am],[Geändert am],[Sachbearbeiter],[PreisänderungProzent],[PreisAlt],[Preisänderung],KundenNr,OffertenNr " & - " FROM [tblOffertenpositionenArchiv] " & - " WHERE OfId='" & OffertenId & "' ORDER BY LeistungsNr, Preis DESC", "tblOffertenpositionenArchiv") + OFFERTEBind.initBinding(" SELECT [LeistungsNr],[LeistungsBez],[BerechnungsartNr],[Preis],[Anzahl],[BGebLeistungsNr],[BGebProzent],[BGebMinBetrag],BerechnungsartPosInkludiert,[Eingegeben am],[Geändert am],[Sachbearbeiter],[PreisänderungProzent],[PreisAlt],[Preisänderung],KundenNr,OffertenNr " & + " FROM [tblOffertenpositionenArchiv] " & + " WHERE OfId='" & OffertenId & "' ORDER BY LeistungsNr, Preis DESC", "tblOffertenpositionenArchiv") - .DataSource = OFFERTEBind.bindingdataTable + .DataSource = OFFERTEBind.bindingdataTable - FUNC.dgvCellToCbo(dgvOfferteDetails, 2, "Berechnungsart", "BerechnungsartNr", " SELECT [BerechnungsartNr], CAST(BerechnungsartNr as varchar(3)) + ' - ' + [BerechnungsartBez] as [BerechnungsartBez] FROM [Berechnungsart] ORDER BY BerechnungsartNr ", "FMZOLL", 150) + FUNC.dgvCellToCbo(dgvOfferteDetails, 2, "Berechnungsart", "BerechnungsartNr", " SELECT [BerechnungsartNr], CAST(BerechnungsartNr as varchar(3)) + ' - ' + [BerechnungsartBez] as [BerechnungsartBez] FROM [Berechnungsart] ORDER BY BerechnungsartNr ", "FMZOLL", 150) FUNC.dgvCellToCbo(dgvOfferteDetails, 5, "BGebLeist.", "BGebLeistungsNr", " SELECT [LeistungsNr], CAST(LeistungsNr as varchar(3)) + ' - ' + [LeistungsBez] as LeistungsBez FROM [Leistungen] ORDER BY [LeistungsNr] ", "FMZOLL", 250) @@ -664,9 +665,9 @@ Public Class usrCntlOfferte dgvOfferteNew.Enabled = False - currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value, False) - Dim orgDataTable As DataTable = dgvOfferteDetails.DataSource - tmpDataTable = orgDataTable.Copy + currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value, False) + Dim orgDataTable As DataTable = dgvOfferteDetails.DataSource + tmpDataTable = orgDataTable.Copy Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) @@ -816,9 +817,16 @@ Public Class usrCntlOfferte If True Then + + + Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(kdNr) + Dim ADR As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNr) + Dim FIRMA_TMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KD.FilialenNr) + + Dim sqlKostenkalk = " Select OffertenNr, isnull(LeistungsNr,'') as LeistungsNr,isnull(LeistungsBez,'' ) as LeistungsBez,isnull(Preis,'') as Preis,isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) - order by cast([Eingegeben am] as date) desc, LeistungsNr, Preis desc" + order by Preis desc" Dim dtKostenkalk As DataTable = (New SQL).loadDgvBySql(sqlKostenkalk, "FMZOLL") @@ -840,15 +848,32 @@ Public Class usrCntlOfferte Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet exclApp = CreateObject("Excel.Application") + Dim ExcelBez = "Kostenkalkulation" + + Select Case FIRMA_TMP + Case "IMEX" : ExcelBez &= "_IMEX " + Case "VERAG" : ExcelBez &= "_AG " + Case Else : ExcelBez &= " " + End Select + + With exclApp .Visible = False Try - Path = sPath & "Kostenkalkulation " & kdNr & " .xlsx" + Path = sPath & ExcelBez & kdNr & " .xlsx" While System.IO.File.Exists(Path) - Path = sPath & "Kostenkalkulation " & kdNr & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + Path = sPath & ExcelBez & kdNr & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" End While - My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation, False) + + Select Case FIRMA_TMP + Case "IMEX" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_IMEX, False) + Case "VERAG" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_AG, False) + Case Else : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation, False) + End Select + + + Catch ex As System.Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default @@ -859,8 +884,6 @@ Public Class usrCntlOfferte Datei = .Workbooks.Open(Path) 'Anpassen Blatt = Datei.Worksheets(1) 'Anpassen - Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(kdNr) - Dim ADR As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNr) Blatt.Range("B8").Value = ADR.Name_1 Blatt.Range("B9").Value = ADR.AdressenNr @@ -869,13 +892,15 @@ Public Class usrCntlOfferte Dim currentRow As Integer = 13 + Dim DatumDerZollabf As String = SQL.getValueTxtBySql("select top(1) isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = 704150 and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) order by Preis desc", "FMZOLL") + For Each row In dtKostenkalk.Rows Blatt.Range("A" & currentRow).Value = row("LeistungsBez") Blatt.Range("B" & currentRow).Value = row("Preis") - If IsDate(row("Datum")) Then + If IsDate(DatumDerZollabf) Then - Select Case CDate(row("Datum")).Year + Select Case CDate(DatumDerZollabf).Year 'Berechnungssätze laut Johanna Luxbauer Case 2018 : Blatt.Range("D" & currentRow).Value = 0.3387 Case 2019 : Blatt.Range("D" & currentRow).Value = 0.3048 From 3e4167775b3b0a4b42404a5e1cc366310b73192d Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 12 Mar 2025 16:47:15 +0100 Subject: [PATCH 04/24] Fremdrechnungen --- SDL/My Project/Resources.Designer.vb | 30 ++++++++++++++++++++++++++++ SDL/My Project/Resources.resx | 9 +++++++++ SDL/mdm/usrcntlFremdrechnungen.vb | 18 +++++++++-------- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb index ca43f1d1..8b0e1f7f 100644 --- a/SDL/My Project/Resources.Designer.vb +++ b/SDL/My Project/Resources.Designer.vb @@ -1034,6 +1034,36 @@ Namespace My.Resources End Get End Property + '''

+ ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property Kostenkalkulation_AG() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("Kostenkalkulation_AG", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property Kostenkalkulation_CS() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("Kostenkalkulation_CS", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property Kostenkalkulation_IMEX() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("Kostenkalkulation_IMEX", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. ''' diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index 9fc039a8..c55f43ed 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -934,4 +934,13 @@ ..\Resources\Kostenkalkulation.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Kostenkalkulation_AG.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Kostenkalkulation_CS.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Kostenkalkulation_IMEX.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 53e17b5b..1bd6516e 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -76,7 +76,7 @@ Public Class usrcntlFremdrechnungen KUNDE = kundenSQL.getKundeByKdNr(kdNr) If KUNDE IsNot Nothing Then - dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland from tblKeineMWSTErstattung", "FMZOLL") + dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland, Lieferant from tblKeineMWSTErstattung", "FMZOLL") dtKundeMWST = (New SQL).loadDgvBySql("select LandKz from tblKundenMWST where KdNr = " & KUNDE.KundenNr, "FMZOLL") End If @@ -355,7 +355,7 @@ Public Class usrcntlFremdrechnungen '2. wenn die Rechnung die Summe NULL aufweist Select Case aktLieferant - Case "UTA" : If Not alle Then SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0" 'UTA + Case "UTA" : If Not alle Then SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0 AND Art = 'RE'" 'UTA bei UTA auch EPN ausblenden! Case "PLOSE" : If Not alle Then SQLWhere &= " AND plInv_Bruttobetrag <> 0" 'PLOSE Case "VERAG" : If Not alle Then SQLWhere &= " AND (tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal) <> 0" 'VERAG Case "MSE" : If Not alle Then SQLWhere &= " AND total_amount_euro <> 0" 'MSE @@ -376,12 +376,13 @@ Public Class usrcntlFremdrechnungen '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant = ''").CopyToDataTable Dim counter = 0 Dim landBez As String = "" - For Each row As DataRow In dtkeineMWST.Rows + For Each row As DataRow In dtkeineMWST_ohneContraint.Rows landBez = "'" & row.Item("Erstattungsland") & "'" counter = counter + 1 - If (dtkeineMWST.Rows.Count <> 0 And counter <> dtkeineMWST.Rows.Count) Then landBez &= "," + If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," Next SQLWhere &= " AND " & land & " not in (" & landBez & ")" End If @@ -447,12 +448,13 @@ Public Class usrcntlFremdrechnungen '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = 'IDS'").CopyToDataTable Dim counter = 0 Dim landBez As String = "" - For Each row As DataRow In dtkeineMWST.Rows + For Each row As DataRow In dtkeineMWST_IDS.Rows landBez = "'" & row.Item("Erstattungsland") & "'" counter = counter + 1 - If (dtkeineMWST.Rows.Count <> 0 And counter <> dtkeineMWST.Rows.Count) Then landBez &= "," + If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," Next SQLWhere &= " AND " & land & " not in (" & landBez & ")" End If @@ -687,7 +689,7 @@ Public Class usrcntlFremdrechnungen TextHTMLtable &= "
" TextHTMLtable &= "" - Dim daId = r.Item("daId") + Dim daId As Integer = IIf(IsDBNull(r.Item("daId")), -1, r.Item("daId")) If daId > 0 Then Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) pdflist.Add(DS.GET_TOP1_PATH()) @@ -704,7 +706,7 @@ Public Class usrcntlFremdrechnungen TextHTMLtable &= "" TextHTMLtable &= "" - Dim daId = row.Cells("daId").Value + Dim daId As Integer = IIf(IsDBNull(row.Cells("daId").Value), -1, row.Cells("daId").Value) If daId > 0 Then Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) pdflist.Add(DS.GET_TOP1_PATH()) From 6276aee28f50cd8e435940de9f262765fd74bb99 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 12 Mar 2025 17:01:52 +0100 Subject: [PATCH 05/24] Fremdrechnungen, offeneAntraege --- SDL/USTV/frmUSTVoffeneAntraege.vb | 26 ++++++++++++++++++++++++++ SDL/mdm/usrcntlFremdrechnungen.vb | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/SDL/USTV/frmUSTVoffeneAntraege.vb b/SDL/USTV/frmUSTVoffeneAntraege.vb index 33ad27a9..4421bce3 100644 --- a/SDL/USTV/frmUSTVoffeneAntraege.vb +++ b/SDL/USTV/frmUSTVoffeneAntraege.vb @@ -1,4 +1,5 @@ Imports System.Windows.Documents +Imports com.sun.org.apache.bcel.internal.generic Imports com.sun.org.apache.xpath.internal.objects Imports DocumentFormat.OpenXml.Drawing.Spreadsheet Imports VERAG_PROG_ALLGEMEIN @@ -10,6 +11,7 @@ Public Class frmUSTVoffeneAntraege Dim datumVon As Date = Nothing Dim kdNr As Integer = -1 Dim kdName As String + Dim dtkeineMWST As DataTable Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click initLieferant("PLOSE", sender) End Sub @@ -536,6 +538,19 @@ Public Class frmUSTVoffeneAntraege sqlwhereLand &= " and isnull(UStVAn_ID,0) = 0 " End If + + Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant = ''").CopyToDataTable + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST_ohneContraint.Rows + landBez = "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," + Next + sqlwhereLand &= " AND Einreichland not in (" & landBez & ")" + + + Dim year = CDate(dat_Sum_Von.Value).Year If year >= 2025 Then @@ -688,6 +703,13 @@ Public Class frmUSTVoffeneAntraege where 1 = 1 and isnull(kde_keineMWSt,0) = 0 " & sqlwhereLand & sqlwhereSteuerNr & " group by isnull(UStVAn_ID,0) , Lieferant, KdNr, Kundenname,Kundenland, Einreichland, tblSteuernummern.UStV" + Dim SQLWhere = "" + + + + + + .SET_SQL(sqlstring, "FMZOLL") .LOAD() If .Columns.Count > 0 Then @@ -926,4 +948,8 @@ Public Class frmUSTVoffeneAntraege End Sub + + Private Sub frmUSTVoffeneAntraege_Load(sender As Object, e As EventArgs) Handles MyBase.Load + dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland, Lieferant from tblKeineMWSTErstattung", "FMZOLL") + End Sub End Class \ No newline at end of file diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 1bd6516e..88645df3 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -74,9 +74,9 @@ Public Class usrcntlFremdrechnungen End If KUNDE = kundenSQL.getKundeByKdNr(kdNr) + dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland, Lieferant from tblKeineMWSTErstattung", "FMZOLL") If KUNDE IsNot Nothing Then - dtkeineMWST = (New SQL).loadDgvBySql("select Land, Erstattungsland, Lieferant from tblKeineMWSTErstattung", "FMZOLL") dtKundeMWST = (New SQL).loadDgvBySql("select LandKz from tblKundenMWST where KdNr = " & KUNDE.KundenNr, "FMZOLL") End If From 0b9f816fadaf09e4f7d0127bfc4b39f2201f22c2 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 09:12:15 +0100 Subject: [PATCH 06/24] Fremdrechnungen, offeneAntraege, etc. --- SDL/My Project/AssemblyInfo.vb | 4 +-- SDL/USTV/frmUSTVoffeneAntraege.vb | 32 ++++++++++++++++------- SDL/mdm/usrcntlFremdrechnungen.vb | 27 +++++-------------- VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb | 6 +++++ 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 9a7abcd7..c187bf12 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/USTV/frmUSTVoffeneAntraege.vb b/SDL/USTV/frmUSTVoffeneAntraege.vb index 4421bce3..88a583b9 100644 --- a/SDL/USTV/frmUSTVoffeneAntraege.vb +++ b/SDL/USTV/frmUSTVoffeneAntraege.vb @@ -511,6 +511,8 @@ Public Class frmUSTVoffeneAntraege Dim sqlwhereLand = "" Dim sqlwhereSteuerNr = "" + Dim kundenLandISO2 As String = "" + Dim SQLPLOSEUMSTELLUNG = "" If kdnr > 0 Then @@ -528,6 +530,15 @@ Public Class frmUSTVoffeneAntraege If cbxKundeLand._value <> "" Then sqlwhereLand &= " and Kundenland = '" & cbxKundeLand._value & "'" + 'LandKZ vom Kunden muss auf ISO2 konvertiert werden, weil da ein Misch-Masch in der Datenbank herrscht! + If cbxKundeLand._value.Length = 2 Then + kundenLandISO2 = cbxKundeLand._value + ElseIf cbxKundeLand._value.Length = 3 Then + kundenLandISO2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(cbxKundeLand._value) + ElseIf cbxKundeLand._value.Length = 1 Then + kundenLandISO2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(cbxKundeLand._value) + End If + End If If cbxUStV.Checked Then @@ -538,17 +549,18 @@ Public Class frmUSTVoffeneAntraege sqlwhereLand &= " and isnull(UStVAn_ID,0) = 0 " End If + If dtkeineMWST.Rows.Count > 0 AndAlso kundenLandISO2 <> "" Then + Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Land = '" & kundenLandISO2 & "'").CopyToDataTable + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST_ohneContraint.Rows + landBez &= "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," + Next + sqlwhereLand &= " AND Einreichland not in (" & landBez & ")" - Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant = ''").CopyToDataTable - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtkeineMWST_ohneContraint.Rows - landBez = "'" & row.Item("Erstattungsland") & "'" - counter = counter + 1 - If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," - Next - sqlwhereLand &= " AND Einreichland not in (" & landBez & ")" - + End If Dim year = CDate(dat_Sum_Von.Value).Year diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 88645df3..180ca658 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -337,15 +337,17 @@ Public Class usrcntlFremdrechnungen 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) - If land <> "" Then + If land <> "" Then 'LandKZ vom Kunden muss auf ISO2 konvertiert werden, weil da ein Misch-Masch in der Datenbank herrscht! If KUNDE.LandKz <> "" Then Dim landKZiso2 = "" + If KUNDE.LandKz.Length = 2 Then landKZiso2 = KUNDE.LandKz ElseIf KUNDE.LandKz.Length = 3 Then landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) - + ElseIf KUNDE.LandKz.Length = 1 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(KUNDE.LandKz) End If SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" @@ -353,7 +355,6 @@ Public Class usrcntlFremdrechnungen End If '2. wenn die Rechnung die Summe NULL aufweist - Select Case aktLieferant Case "UTA" : If Not alle Then SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0 AND Art = 'RE'" 'UTA bei UTA auch EPN ausblenden! Case "PLOSE" : If Not alle Then SQLWhere &= " AND plInv_Bruttobetrag <> 0" 'PLOSE @@ -363,17 +364,6 @@ Public Class usrcntlFremdrechnungen Case "ALLE" : If alle Then SQLWhere &= " AND temp.Nettobetrag <> 0" 'ALLE End Select - - 'Dim counter = 0 - 'For Each n In List - ' gsnr &= n.ToString() - ' counter = counter + 1 - ' If (List.Count <> 0 And counter <> List.Count) Then - ' gsnr &= "," - ' End If - - - '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant = ''").CopyToDataTable @@ -387,10 +377,7 @@ Public Class usrcntlFremdrechnungen SQLWhere &= " AND " & land & " not in (" & landBez & ")" End If - - '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt - If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then Dim counter = 0 Dim landBez As String = "" @@ -432,7 +419,8 @@ Public Class usrcntlFremdrechnungen landKZiso2 = KUNDE.LandKz ElseIf KUNDE.LandKz.Length = 3 Then landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) - + ElseIf KUNDE.LandKz.Length = 1 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(KUNDE.LandKz) End If SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" @@ -440,13 +428,11 @@ Public Class usrcntlFremdrechnungen End If '2. wenn die Rechnung die Summe NULL aufweist - Select Case aktLieferant Case "IDS" : If Not alle Then SQLWhere &= " AND [AmminclVAT] <> 0" 'IDS End Select '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt - If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = 'IDS'").CopyToDataTable Dim counter = 0 @@ -462,7 +448,6 @@ Public Class usrcntlFremdrechnungen '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt - If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then Dim counter = 0 Dim landBez As String = "" diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb index e7bcac9d..2f8cb588 100644 --- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb +++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb @@ -553,6 +553,12 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object( End Function + Shared Function getISO2LandFromISO1Land(Iso1Land As String) + Dim sqlstr = "SELECT TOP 1 isnull([Länderverzeichnis für die Außenhandelsstatistik].LandKz,'') AS LandKzISO2 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE Währungstabelle.LandKz='" & Iso1Land & "' " + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Return SQL.getValueTxtBySql(sqlstr, "FMZOLL") + End Function + Shared Function getISO1Land(LandKz As String) Dim sqlstr = "SELECT TOP 1 isnull(Währungstabelle.LandKz,'') AS LandKzISO1 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE [Länderverzeichnis für die Außenhandelsstatistik].LandKz='" & LandKz & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL From 8d3bcad4874e75576de2ac8984265af398bf6374 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 10:18:17 +0100 Subject: [PATCH 07/24] FaktEmail, dynMailvorlagen, Fremdrechnungen --- SDL/Fakturierung/frmFaktEmail.vb | 59 +++++++++++++------------------ SDL/frmdynMailvorlage.vb | 1 + SDL/mdm/usrcntlFremdrechnungen.vb | 8 ++--- 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 04f2f0e5..a1dd5710 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -313,49 +313,38 @@ Public Class frmFaktEmail End Select Else + Dim mailText As String = "" If steuerbetrag = 0 Then mailText &= (New SQL).getValueTxtBySql("SELECT Text FROM Rechnungstexte WHERE Firma_ID=0 AND EMailRechnung=1 AND Rechnungstexte.DrucksteuerungsKz='R' AND LandKZ='" & RechnungsLandKz & "'", "FMZOLL") End If + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID) + + Dim spracheRechnung As String = "EN" 'Defaultsprache + Select Case RechnungsLandKz - Case "TR" - txtSubject.Text = If(BelegartenNr = 71, "Kredi Nr. ", "Fatura Nr. ") & txtRgNr - TextHTML = "Sayin yetkili," & vbNewLine & vbNewLine & "ekte yeni Faturanizi ve Dökümünü bulabilirsiniz." - TextHTML &= TextHTMLADD - TextHTML &= "" & vbNewLine & "Fatura kopileri kdv iadesi icin kullanilamaz." - If mailText <> "" Then TextHTML &= mailText & vbNewLine - TextHTML &= "" & vbNewLine & vbNewLine & vbNewLine & "Saygilarimizla" & vbNewLine & vbNewLine & "" - Case "A", "AT", "D", "DE", "CH" - txtSubject.Text = If(BelegartenNr = 71, "Gutschrift Nr. ", "Rechnung Nr. ") & txtRgNr - TextHTML = "Sehr geehrte Kunde" & vbNewLine & vbNewLine & "anbei unsere neue " & If(BelegartenNr = 71, "Gutschrift(en)", "Rechnung(en)") & " der letzten Abrechnungsperiode mit den dazugehörigen Anhängen." - TextHTML &= TextHTMLADD - TextHTML &= "" & vbNewLine & "Da es sich bei den beigefügten Rechnungen nur um Kopien handelt, dürfen diese NICHT zur MWST-Rückerstattung verwendet werden. " - If mailText <> "" Then TextHTML &= mailText & vbNewLine - TextHTML &= "" & vbNewLine & vbNewLine & vbNewLine & "Mit freundlichen Grüßen" & vbNewLine & vbNewLine & "" - Case "HR", "SRB", "SLO" - txtSubject.Text = If(BelegartenNr = 71, "Credit No. ", "Invoice No. ") & txtRgNr - TextHTML = "Postovani komitente" & vbNewLine & vbNewLine & "u prilogu novi " & If(BelegartenNr = 71, "kredit", "racun") & " sa specifikacijma za prethodni period. " - TextHTML &= TextHTMLADD - TextHTML &= "" & vbNewLine & "Prilozeni racuni nisu dopusteni za povrat PDV-a, jer su samo kopije." - If mailText <> "" Then TextHTML &= mailText & vbNewLine - TextHTML &= "" & vbNewLine & vbNewLine & vbNewLine & "Best regards" & vbNewLine & vbNewLine & "" - Case "RO" - txtSubject.Text = If(BelegartenNr = 71, "Credit No. ", "Invoice No. ") & txtRgNr - TextHTML = "Stimate client" & vbNewLine & vbNewLine & "Va transmitem factura " & If(BelegartenNr = 71, "kredit", "racun") & " referitoare ultimei perioade de decontare impreuna cu anexele aferente." - TextHTML &= TextHTMLADD - TextHTML &= "" & vbNewLine & "Prilozeni racuni nisu dopusteni za povrat PDV-a, jer su samo kopije." - If mailText <> "" Then TextHTML &= mailText & vbNewLine - TextHTML &= "" & vbNewLine & vbNewLine & vbNewLine & "Best regards" & vbNewLine & vbNewLine & "" - Case Else - txtSubject.Text = If(BelegartenNr = 71, "Credit No. ", "Invoice No. ") & txtRgNr - TextHTML = "Dear Customer" & vbNewLine & vbNewLine & "Enclosed is our new " & If(BelegartenNr = 71, "credit note", "invoice") & " for the last billing period with the associated attachments." - TextHTML &= TextHTMLADD - TextHTML &= "" & vbNewLine & "Since the attached invoices are only copies, the may NOT be used for VAT refunds." - If mailText <> "" Then TextHTML &= mailText & vbNewLine - TextHTML &= "" & vbNewLine & vbNewLine & vbNewLine & "Best regards" & vbNewLine & vbNewLine & "" + Case "TR" : spracheRechnung = RechnungsLandKz + Case "A", "AT", "D", "DE", "CH" : spracheRechnung = "DE" + Case "RO" : spracheRechnung = "RO" + Case "HR", "SRB", "SLO" : spracheRechnung = "SRB" End Select + If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then + + + Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung) + If r IsNot Nothing Then + txtSubject.Text = r.txt_betreff + txtSubject.Text = txtSubject.Text.Replace("%BelegNr%", txtRgNr) + TextHTML &= r.txt_text + If mailText <> "" Then TextHTML &= mailText & vbNewLine + 'TextHTML &= "


" & cFakturierung.getSignature(RechnungsLandKz, Firma_ID) + + End If + End If + End If diff --git a/SDL/frmdynMailvorlage.vb b/SDL/frmdynMailvorlage.vb index ad047908..83ff75cc 100644 --- a/SDL/frmdynMailvorlage.vb +++ b/SDL/frmdynMailvorlage.vb @@ -56,6 +56,7 @@ Public Class frmdynMailvorlagen cbxTyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sendung", "1")) cbxTyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Mahnung", "2")) cbxTyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("OP-Liste", "3")) + cbxTyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MDM-SR", "4")) cbxTyp.changeItem("") diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 180ca658..9d5fafc2 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -370,7 +370,7 @@ Public Class usrcntlFremdrechnungen Dim counter = 0 Dim landBez As String = "" For Each row As DataRow In dtkeineMWST_ohneContraint.Rows - landBez = "'" & row.Item("Erstattungsland") & "'" + landBez &= "'" & row.Item("Erstattungsland") & "'" counter = counter + 1 If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," Next @@ -382,7 +382,7 @@ Public Class usrcntlFremdrechnungen Dim counter = 0 Dim landBez As String = "" For Each row As DataRow In dtKundeMWST.Rows - landBez = "'" & row.Item("LandKz") & "'" + landBez &= "'" & row.Item("LandKz") & "'" counter = counter + 1 If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," Next @@ -438,7 +438,7 @@ Public Class usrcntlFremdrechnungen Dim counter = 0 Dim landBez As String = "" For Each row As DataRow In dtkeineMWST_IDS.Rows - landBez = "'" & row.Item("Erstattungsland") & "'" + landBez &= "'" & row.Item("Erstattungsland") & "'" counter = counter + 1 If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," Next @@ -452,7 +452,7 @@ Public Class usrcntlFremdrechnungen Dim counter = 0 Dim landBez As String = "" For Each row As DataRow In dtKundeMWST.Rows - landBez = "'" & row.Item("LandKz") & "'" + landBez &= "'" & row.Item("LandKz") & "'" counter = counter + 1 If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," Next From 76acd9bf10d1d9ef6c2c28382b086229b72988cf Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 10:28:05 +0100 Subject: [PATCH 08/24] offert. --- SDL/kunden/usrCntlOfferte.vb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index dab8fcb1..cd2f645e 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -166,9 +166,8 @@ Public Class usrCntlOfferte cbxArchivierteOffertenAnzeigen.Checked = False cbxArchivierteOfferten.Items.Clear() checkPermissions() - If dgvOfferteNew.RowCount > 0 Then - - rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.Rows(0).Cells("Besonderheiten").Value) + If dgvOfferteNew.RowCount > 0 AndAlso dgvOfferteNew.SelectedRows.Count > 0 Then + rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.SelectedRows(0).Cells("Besonderheiten").Value) Else btnStandardLaden.Visible = False cbxArchivierteOfferten.Enabled = False From 08d10be7df7407f47ae57bc16a5d3b8ea1cfc8e9 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 10:29:58 +0100 Subject: [PATCH 09/24] offert --- SDL/kunden/usrCntlOfferte.vb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index cd2f645e..82b04598 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -166,8 +166,12 @@ Public Class usrCntlOfferte cbxArchivierteOffertenAnzeigen.Checked = False cbxArchivierteOfferten.Items.Clear() checkPermissions() - If dgvOfferteNew.RowCount > 0 AndAlso dgvOfferteNew.SelectedRows.Count > 0 Then - rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.SelectedRows(0).Cells("Besonderheiten").Value) + If dgvOfferteNew.RowCount > 0 Then + If dgvOfferteNew.SelectedRows.Count > 0 Then + rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.SelectedRows(0).Cells("Besonderheiten").Value) + Else + rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.Rows(0).Cells("Besonderheiten").Value) + End If Else btnStandardLaden.Visible = False cbxArchivierteOfferten.Enabled = False From 9fc10579afeda7eebae12da194f47774879b1ab4 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 11:21:59 +0100 Subject: [PATCH 10/24] Essensbestellungen Reminder --- SDL/frmEssensbestellungenAdministration.vb | 18 +++++++++++++++--- SDL/mdm/usrcntlFremdrechnungen.vb | 2 -- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/SDL/frmEssensbestellungenAdministration.vb b/SDL/frmEssensbestellungenAdministration.vb index eb8c56d3..1f613c17 100644 --- a/SDL/frmEssensbestellungenAdministration.vb +++ b/SDL/frmEssensbestellungenAdministration.vb @@ -562,10 +562,10 @@ Public Class frmEssensbestellungenAdministration If isReminder Then Mail.Subject = "Essensgeld für " - DETextHTML &= "bitte diese Woche das Essensgeld " & IIf(kw <> "", "für " & kw, "") & " bezahlen.
" + DETextHTML &= "bitte diese Woche das Essensgeld " & IIf(kw <> "", "für " & kw, "") & " bezahlen.

" Else Mail.Subject = "Essensbestellung: " - DETextHTML &= "Anbei ist die Essensbestellung " & IIf(kw <> "", "für " & kw, "") & ".
" + DETextHTML &= "Anbei ist die Essensbestellung " & IIf(kw <> "", "für " & kw, "") & ".

" End If Mail.Subject &= IIf(kw <> "", kw, "") & " " & IIf(gebaeude <> "", gebaeude, "") @@ -1124,6 +1124,10 @@ Public Class frmEssensbestellungenAdministration Next + Dim TextHTMLtable = "" + + TextHTMLtable &= "
LieferantLandDatum
SupplierCountryDate
" & IIf(dgvLFRechnung.Columns.Contains("Lieferant"), row.Cells("Lieferant").Value, Lieferant) & "" & row.Cells("Land").Value & "" & row.Cells("Rechnungsdatum").Value & "
" & Lieferant & "" & r.Item("Land") & "" & r.Item("Rechnungsdatum") & "
" & Lieferant & "" & row.Cells("Land").Value & "" & row.Cells("Rechnungsdatum").Value & "
" & r.Item("Rechnungsdatum") & "
" & row.Cells("Rechnungsdatum").Value & "
" + TextHTMLtable &= "" For Each row As DataRow In distinctDT.Rows @@ -1137,6 +1141,14 @@ Public Class frmEssensbestellungenAdministration If result IsNot Nothing AndAlso IsNumeric(result) Then result = CDbl(result) + + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + TextHTMLtable &= "" + + Select Case mit.mit_abteilung Case "MDM", "EDV" ' -> per Mail weil SDL keine Benachrichtigungen hat und EDV nicht ins AVISO schaut: If mit.mit_email <> "" AndAlso Not emailEmpf.Contains(mit.mit_email) Then @@ -1167,7 +1179,7 @@ Public Class frmEssensbestellungenAdministration If emailEmpf <> "" Then - generateEmail(emailEmpf, kw, " - " & cboGebaeude._value, "", True) + generateEmail(emailEmpf, kw, " - " & cboGebaeude._value, TextHTMLtable, True) End If diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 9d5fafc2..4233f348 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -1,7 +1,5 @@ Imports System.Reflection -Imports javax.xml.bind Imports Microsoft.Office.Interop -Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFremdrechnungen Dim KUNDE As New cKunden From 34cf4659decd20372a148c9c7bc98fd30a36880e Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Thu, 13 Mar 2025 11:38:55 +0100 Subject: [PATCH 11/24] vers --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 9a7abcd7..c187bf12 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 84f74a2b9e51852fb25e3d9088774c19a7db61ab Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 12:03:53 +0100 Subject: [PATCH 12/24] ustva, Erstattungspos, etc. --- SDL/USTV/frmMDM_USTVAntrag.vb | 10 +- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 2 +- ...stCntlUSTV_ErstattungPosition .Designer.vb | 277 ++++++++++++++++-- SDL/USTV/ustCntlUSTV_ErstattungPosition .vb | 2 + .../Classes/USTV/cUSTVAntrag.vb | 4 + 5 files changed, 270 insertions(+), 25 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 261aadd8..1d61eac1 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -636,7 +636,8 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() - USTV_POS.UStVPo_daId = ANTRAG.plose_daId + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False + ' USTV_POS.UStVPo_daId = ANTRAG.plose_daId ' Berechnungen If Not MWSTSummenAusBeleg Then @@ -745,6 +746,8 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_Zeitstempel = Now() USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & USTV_POS.UStVPo_ReDat & "' and Rechnungsausgang.RechnungsNr='" & USTV_POS.UStVPo_ReNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL") + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False + Dim dt_Prod As New DataTable Dim GET_Positionen = cTrdProduct.GET_PRODUCTS(dt_Prod, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr) @@ -834,6 +837,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_ReNr = r.Item("rmc_reNr").ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("rmc_daId") + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then @@ -900,6 +904,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_ReNr = r.Item("invoice_number") & " - " & kdNr & IIf(Antrag_LandKz = "BE", "/Belgium", "") USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("daId") + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False If Not alreadyExistsMitLeistungsBez(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then @@ -967,6 +972,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer").ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("daId") + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then @@ -1036,7 +1042,7 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = 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") - + If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index dc9f6a84..875cf11d 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -86,7 +86,7 @@ Public Class ustCntlUSTV_AntragPosition If da_id > -1 Then scanSonstiges.INIT_daId(da_id) - scanSonstiges.Enabled = Not UStV_POS.UStVPo_SchnittstellenNr > 0 + scanSonstiges.Enabled = UStV_POS.UStVPo_daId_loeschbar 'Not UStV_POS.UStVPo_SchnittstellenNr > 0 Else scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_ID) 'scanSonstiges.INIT_daId(da_id) diff --git a/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb b/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb index 2efe8331..e711bebf 100644 --- a/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb +++ b/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb @@ -22,6 +22,7 @@ Partial Class ustCntlUSTV_ErstattungPosition 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() Me.Label8 = New System.Windows.Forms.Label() Me.Label7 = New System.Windows.Forms.Label() Me.Panel2 = New System.Windows.Forms.Panel() @@ -59,9 +60,30 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtUmrechnungskurs = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtUSTBetrag = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Panel1 = New System.Windows.Forms.Panel() + Me.Panel3 = New System.Windows.Forms.Panel() + Me.tbcntr = New System.Windows.Forms.TabControl() + Me.tabDok = New System.Windows.Forms.TabPage() + Me.scanSonstiges = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() + Me.tabVollmachten = New System.Windows.Forms.TabPage() + Me.scanUSTVVollmachten = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() + Me.tabFABest = New System.Windows.Forms.TabPage() + Me.scanUSTVFABest = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() + Me.Panel4 = New System.Windows.Forms.Panel() + Me.TabControl1 = New System.Windows.Forms.TabControl() + Me.TabPage1 = New System.Windows.Forms.TabPage() + Me.UsrcntlPDFScanList1 = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() + Me.scanLieferschein = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan() Me.Panel2.SuspendLayout() Me.pnl.SuspendLayout() Me.Panel1.SuspendLayout() + Me.Panel3.SuspendLayout() + Me.tbcntr.SuspendLayout() + Me.tabDok.SuspendLayout() + Me.tabVollmachten.SuspendLayout() + Me.tabFABest.SuspendLayout() + Me.Panel4.SuspendLayout() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() Me.SuspendLayout() ' 'Label8 @@ -92,7 +114,7 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.Panel2.Dock = System.Windows.Forms.DockStyle.Top Me.Panel2.Location = New System.Drawing.Point(0, 0) Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(1300, 30) + Me.Panel2.Size = New System.Drawing.Size(1307, 30) Me.Panel2.TabIndex = 0 ' 'Label9 @@ -109,7 +131,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label1.AutoSize = True Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label1.Location = New System.Drawing.Point(504, 14) + Me.Label1.Location = New System.Drawing.Point(465, 14) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(62, 13) Me.Label1.TabIndex = 1 @@ -145,7 +167,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label2.AutoSize = True Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label2.Location = New System.Drawing.Point(504, 31) + Me.Label2.Location = New System.Drawing.Point(465, 31) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(108, 15) Me.Label2.TabIndex = 4 @@ -155,7 +177,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label3.AutoSize = True Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label3.Location = New System.Drawing.Point(692, 31) + Me.Label3.Location = New System.Drawing.Point(640, 31) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(87, 15) Me.Label3.TabIndex = 5 @@ -288,14 +310,14 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.pnl.Dock = System.Windows.Forms.DockStyle.Fill Me.pnl.Location = New System.Drawing.Point(0, 30) Me.pnl.Name = "pnl" - Me.pnl.Size = New System.Drawing.Size(1300, 235) + Me.pnl.Size = New System.Drawing.Size(1307, 235) Me.pnl.TabIndex = 1 ' 'Label19 ' Me.Label19.AutoSize = True Me.Label19.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label19.Location = New System.Drawing.Point(504, 112) + Me.Label19.Location = New System.Drawing.Point(465, 112) Me.Label19.Name = "Label19" Me.Label19.Size = New System.Drawing.Size(107, 15) Me.Label19.TabIndex = 34 @@ -305,7 +327,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label18.AutoSize = True Me.Label18.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label18.Location = New System.Drawing.Point(504, 92) + Me.Label18.Location = New System.Drawing.Point(465, 92) Me.Label18.Name = "Label18" Me.Label18.Size = New System.Drawing.Size(58, 13) Me.Label18.TabIndex = 33 @@ -325,7 +347,7 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtGuNr._value = Nothing Me.txtGuNr._Waehrung = False Me.txtGuNr._WaehrungZeichen = False - Me.txtGuNr.Location = New System.Drawing.Point(695, 49) + Me.txtGuNr.Location = New System.Drawing.Point(643, 49) Me.txtGuNr.MaxLength = 22 Me.txtGuNr.MaxLineLength = -1 Me.txtGuNr.MaxLines_Warning = "" @@ -349,7 +371,7 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtBerufungsdatum._Waehrung = False Me.txtBerufungsdatum._WaehrungZeichen = True Me.txtBerufungsdatum.ForeColor = System.Drawing.Color.Red - Me.txtBerufungsdatum.Location = New System.Drawing.Point(507, 130) + Me.txtBerufungsdatum.Location = New System.Drawing.Point(468, 130) Me.txtBerufungsdatum.MaxLength = 50 Me.txtBerufungsdatum.MaxLineLength = -1 Me.txtBerufungsdatum.MaxLines_Warning = "" @@ -383,20 +405,20 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtBemerkung._Waehrung = False Me.txtBemerkung._WaehrungZeichen = True Me.txtBemerkung.ForeColor = System.Drawing.Color.Red - Me.txtBemerkung.Location = New System.Drawing.Point(507, 179) + Me.txtBemerkung.Location = New System.Drawing.Point(468, 179) Me.txtBemerkung.MaxLength = 50 Me.txtBemerkung.MaxLineLength = -1 Me.txtBemerkung.MaxLines_Warning = "" Me.txtBemerkung.MaxLines_Warning_Label = Nothing Me.txtBemerkung.Name = "txtBemerkung" - Me.txtBemerkung.Size = New System.Drawing.Size(458, 20) + Me.txtBemerkung.Size = New System.Drawing.Size(418, 20) Me.txtBemerkung.TabIndex = 11 ' 'Label14 ' Me.Label14.AutoSize = True Me.Label14.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label14.Location = New System.Drawing.Point(692, 112) + Me.Label14.Location = New System.Drawing.Point(645, 112) Me.Label14.Name = "Label14" Me.Label14.Size = New System.Drawing.Size(95, 15) Me.Label14.TabIndex = 23 @@ -406,7 +428,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label15.AutoSize = True Me.Label15.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label15.Location = New System.Drawing.Point(863, 112) + Me.Label15.Location = New System.Drawing.Point(784, 112) Me.Label15.Name = "Label15" Me.Label15.Size = New System.Drawing.Size(91, 15) Me.Label15.TabIndex = 25 @@ -427,7 +449,7 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtBerufungshoehe._Waehrung = False Me.txtBerufungshoehe._WaehrungZeichen = True Me.txtBerufungshoehe.ForeColor = System.Drawing.Color.Red - Me.txtBerufungshoehe.Location = New System.Drawing.Point(866, 130) + Me.txtBerufungshoehe.Location = New System.Drawing.Point(787, 130) Me.txtBerufungshoehe.MaxLength = 10 Me.txtBerufungshoehe.MaxLineLength = -1 Me.txtBerufungshoehe.MaxLines_Warning = "" @@ -463,7 +485,7 @@ Partial Class ustCntlUSTV_ErstattungPosition ' Me.Label16.AutoSize = True Me.Label16.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.5!) - Me.Label16.Location = New System.Drawing.Point(504, 161) + Me.Label16.Location = New System.Drawing.Point(465, 161) Me.Label16.Name = "Label16" Me.Label16.Size = New System.Drawing.Size(71, 15) Me.Label16.TabIndex = 27 @@ -484,13 +506,13 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtBerurunfgrund._Waehrung = False Me.txtBerurunfgrund._WaehrungZeichen = True Me.txtBerurunfgrund.ForeColor = System.Drawing.Color.Red - Me.txtBerurunfgrund.Location = New System.Drawing.Point(695, 130) + Me.txtBerurunfgrund.Location = New System.Drawing.Point(643, 130) Me.txtBerurunfgrund.MaxLength = 50 Me.txtBerurunfgrund.MaxLineLength = -1 Me.txtBerurunfgrund.MaxLines_Warning = "" Me.txtBerurunfgrund.MaxLines_Warning_Label = Nothing Me.txtBerurunfgrund.Name = "txtBerurunfgrund" - Me.txtBerurunfgrund.Size = New System.Drawing.Size(154, 20) + Me.txtBerurunfgrund.Size = New System.Drawing.Size(136, 20) Me.txtBerurunfgrund.TabIndex = 9 ' 'txtBelegDatum @@ -531,13 +553,13 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.txtGuDatum._value = Nothing Me.txtGuDatum._Waehrung = False Me.txtGuDatum._WaehrungZeichen = False - Me.txtGuDatum.Location = New System.Drawing.Point(507, 49) + Me.txtGuDatum.Location = New System.Drawing.Point(468, 49) Me.txtGuDatum.MaxLength = 22 Me.txtGuDatum.MaxLineLength = -1 Me.txtGuDatum.MaxLines_Warning = "" Me.txtGuDatum.MaxLines_Warning_Label = Nothing Me.txtGuDatum.Name = "txtGuDatum" - Me.txtGuDatum.Size = New System.Drawing.Size(182, 20) + Me.txtGuDatum.Size = New System.Drawing.Size(169, 20) Me.txtGuDatum.TabIndex = 3 ' 'txtUSTBetragEUR @@ -614,14 +636,204 @@ Partial Class ustCntlUSTV_ErstattungPosition ' 'Panel1 ' + Me.Panel1.Controls.Add(Me.Panel3) Me.Panel1.Controls.Add(Me.btnBildAuf) Me.Panel1.Controls.Add(Me.Button1) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Right - Me.Panel1.Location = New System.Drawing.Point(1201, 30) + Me.Panel1.Location = New System.Drawing.Point(945, 30) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(99, 235) + Me.Panel1.Size = New System.Drawing.Size(362, 235) Me.Panel1.TabIndex = 2 ' + 'Panel3 + ' + Me.Panel3.Controls.Add(Me.tbcntr) + Me.Panel3.Controls.Add(Me.Panel4) + Me.Panel3.Dock = System.Windows.Forms.DockStyle.Right + Me.Panel3.Location = New System.Drawing.Point(98, 0) + Me.Panel3.Name = "Panel3" + Me.Panel3.Size = New System.Drawing.Size(264, 235) + Me.Panel3.TabIndex = 26 + Me.Panel3.Visible = False + ' + 'tbcntr + ' + Me.tbcntr.Controls.Add(Me.tabDok) + Me.tbcntr.Controls.Add(Me.tabVollmachten) + Me.tbcntr.Controls.Add(Me.tabFABest) + Me.tbcntr.Dock = System.Windows.Forms.DockStyle.Fill + Me.tbcntr.Location = New System.Drawing.Point(0, 16) + Me.tbcntr.Name = "tbcntr" + Me.tbcntr.SelectedIndex = 0 + Me.tbcntr.Size = New System.Drawing.Size(264, 219) + Me.tbcntr.TabIndex = 3 + ' + 'tabDok + ' + Me.tabDok.Controls.Add(Me.scanSonstiges) + Me.tabDok.Location = New System.Drawing.Point(4, 22) + Me.tabDok.Name = "tabDok" + Me.tabDok.Padding = New System.Windows.Forms.Padding(3) + Me.tabDok.Size = New System.Drawing.Size(256, 193) + Me.tabDok.TabIndex = 1 + Me.tabDok.Text = "Bescheide" + Me.tabDok.UseVisualStyleBackColor = True + ' + 'scanSonstiges + ' + Me.scanSonstiges._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.scanSonstiges._DATENSERVER_ORDNER = "MDM" + Me.scanSonstiges._DATENSERVER_UOrdner1 = "" + Me.scanSonstiges._DATENSERVER_UOrdner2 = "" + Me.scanSonstiges._DATENSERVER_UOrdner3 = "" + Me.scanSonstiges._OPEN_ORIGINAL = False + Me.scanSonstiges._TYPE = "PDF" + Me.scanSonstiges.AllowDrop = True + Me.scanSonstiges.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.scanSonstiges.BackColor = System.Drawing.Color.White + Me.scanSonstiges.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.scanSonstiges.Cursor = System.Windows.Forms.Cursors.Hand + Me.scanSonstiges.Dock = System.Windows.Forms.DockStyle.Fill + Me.scanSonstiges.Location = New System.Drawing.Point(3, 3) + Me.scanSonstiges.Margin = New System.Windows.Forms.Padding(0) + Me.scanSonstiges.Name = "scanSonstiges" + Me.scanSonstiges.Size = New System.Drawing.Size(250, 187) + Me.scanSonstiges.TabIndex = 0 + ' + 'tabVollmachten + ' + Me.tabVollmachten.Controls.Add(Me.scanUSTVVollmachten) + Me.tabVollmachten.Location = New System.Drawing.Point(4, 22) + Me.tabVollmachten.Name = "tabVollmachten" + Me.tabVollmachten.Padding = New System.Windows.Forms.Padding(3) + Me.tabVollmachten.Size = New System.Drawing.Size(256, 193) + Me.tabVollmachten.TabIndex = 2 + Me.tabVollmachten.Text = "Vollmachten" + Me.tabVollmachten.UseVisualStyleBackColor = True + ' + 'scanUSTVVollmachten + ' + Me.scanUSTVVollmachten._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.scanUSTVVollmachten._DATENSERVER_ORDNER = "MDM" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner1 = "" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner2 = "" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner3 = "" + Me.scanUSTVVollmachten._OPEN_ORIGINAL = False + Me.scanUSTVVollmachten._TYPE = "PDF" + Me.scanUSTVVollmachten.AllowDrop = True + Me.scanUSTVVollmachten.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.scanUSTVVollmachten.BackColor = System.Drawing.Color.White + Me.scanUSTVVollmachten.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.scanUSTVVollmachten.Cursor = System.Windows.Forms.Cursors.Hand + Me.scanUSTVVollmachten.Dock = System.Windows.Forms.DockStyle.Fill + Me.scanUSTVVollmachten.Location = New System.Drawing.Point(3, 3) + Me.scanUSTVVollmachten.Margin = New System.Windows.Forms.Padding(0) + Me.scanUSTVVollmachten.Name = "scanUSTVVollmachten" + Me.scanUSTVVollmachten.Size = New System.Drawing.Size(250, 187) + Me.scanUSTVVollmachten.TabIndex = 1 + ' + 'tabFABest + ' + Me.tabFABest.Controls.Add(Me.scanUSTVFABest) + Me.tabFABest.Location = New System.Drawing.Point(4, 22) + Me.tabFABest.Name = "tabFABest" + Me.tabFABest.Size = New System.Drawing.Size(256, 193) + Me.tabFABest.TabIndex = 3 + Me.tabFABest.Text = "FA_Bestätigung" + Me.tabFABest.UseVisualStyleBackColor = True + ' + 'scanUSTVFABest + ' + Me.scanUSTVFABest._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.scanUSTVFABest._DATENSERVER_ORDNER = "MDM" + Me.scanUSTVFABest._DATENSERVER_UOrdner1 = "" + Me.scanUSTVFABest._DATENSERVER_UOrdner2 = "" + Me.scanUSTVFABest._DATENSERVER_UOrdner3 = "" + Me.scanUSTVFABest._OPEN_ORIGINAL = False + Me.scanUSTVFABest._TYPE = "PDF" + Me.scanUSTVFABest.AllowDrop = True + Me.scanUSTVFABest.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.scanUSTVFABest.BackColor = System.Drawing.Color.White + Me.scanUSTVFABest.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.scanUSTVFABest.Cursor = System.Windows.Forms.Cursors.Hand + Me.scanUSTVFABest.Dock = System.Windows.Forms.DockStyle.Fill + Me.scanUSTVFABest.Location = New System.Drawing.Point(0, 0) + Me.scanUSTVFABest.Margin = New System.Windows.Forms.Padding(0) + Me.scanUSTVFABest.Name = "scanUSTVFABest" + Me.scanUSTVFABest.Size = New System.Drawing.Size(256, 193) + Me.scanUSTVFABest.TabIndex = 1 + ' + 'Panel4 + ' + Me.Panel4.Controls.Add(Me.TabControl1) + Me.Panel4.Controls.Add(Me.scanLieferschein) + Me.Panel4.Dock = System.Windows.Forms.DockStyle.Top + Me.Panel4.Location = New System.Drawing.Point(0, 0) + Me.Panel4.Name = "Panel4" + Me.Panel4.Size = New System.Drawing.Size(264, 16) + Me.Panel4.TabIndex = 26 + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Location = New System.Drawing.Point(39, 49) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(278, 239) + Me.TabControl1.TabIndex = 3 + ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.UsrcntlPDFScanList1) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(270, 213) + Me.TabPage1.TabIndex = 1 + Me.TabPage1.Text = "Dokumente" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'UsrcntlPDFScanList1 + ' + Me.UsrcntlPDFScanList1._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.UsrcntlPDFScanList1._DATENSERVER_ORDNER = "MDM" + Me.UsrcntlPDFScanList1._DATENSERVER_UOrdner1 = "" + Me.UsrcntlPDFScanList1._DATENSERVER_UOrdner2 = "" + Me.UsrcntlPDFScanList1._DATENSERVER_UOrdner3 = "" + Me.UsrcntlPDFScanList1._OPEN_ORIGINAL = False + Me.UsrcntlPDFScanList1._TYPE = "PDF" + Me.UsrcntlPDFScanList1.AllowDrop = True + Me.UsrcntlPDFScanList1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.UsrcntlPDFScanList1.BackColor = System.Drawing.Color.White + Me.UsrcntlPDFScanList1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.UsrcntlPDFScanList1.Cursor = System.Windows.Forms.Cursors.Hand + Me.UsrcntlPDFScanList1.Dock = System.Windows.Forms.DockStyle.Fill + Me.UsrcntlPDFScanList1.Location = New System.Drawing.Point(3, 3) + Me.UsrcntlPDFScanList1.Margin = New System.Windows.Forms.Padding(0) + Me.UsrcntlPDFScanList1.Name = "UsrcntlPDFScanList1" + Me.UsrcntlPDFScanList1.Size = New System.Drawing.Size(264, 207) + Me.UsrcntlPDFScanList1.TabIndex = 0 + ' + 'scanLieferschein + ' + Me.scanLieferschein._ARCHIV = True + Me.scanLieferschein._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.scanLieferschein._DATENSERVER_ORDNER = "MDM" + Me.scanLieferschein._DATENSERVER_UOrdner1 = Nothing + Me.scanLieferschein._DATENSERVER_UOrdner2 = Nothing + Me.scanLieferschein._DATENSERVER_UOrdner3 = Nothing + Me.scanLieferschein._MULTI_FILES = True + Me.scanLieferschein._TEXT_PDF = "XX Vollmacht" + Me.scanLieferschein.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.scanLieferschein.BackColor = System.Drawing.Color.White + Me.scanLieferschein.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.scanLieferschein.Cursor = System.Windows.Forms.Cursors.Default + Me.scanLieferschein.Location = New System.Drawing.Point(146, 3) + Me.scanLieferschein.Name = "scanLieferschein" + Me.scanLieferschein.Size = New System.Drawing.Size(111, 34) + Me.scanLieferschein.TabIndex = 2 + Me.scanLieferschein.Visible = False + ' 'ustCntlUSTV_ErstattungPosition ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -630,12 +842,20 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.Controls.Add(Me.pnl) Me.Controls.Add(Me.Panel2) Me.Name = "ustCntlUSTV_ErstattungPosition" - Me.Size = New System.Drawing.Size(1300, 265) + Me.Size = New System.Drawing.Size(1307, 265) Me.Panel2.ResumeLayout(False) Me.Panel2.PerformLayout() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() Me.Panel1.ResumeLayout(False) + Me.Panel3.ResumeLayout(False) + Me.tbcntr.ResumeLayout(False) + Me.tabDok.ResumeLayout(False) + Me.tabVollmachten.ResumeLayout(False) + Me.tabFABest.ResumeLayout(False) + Me.Panel4.ResumeLayout(False) + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -676,4 +896,17 @@ Partial Class ustCntlUSTV_ErstattungPosition Friend WithEvents Label18 As Label Friend WithEvents txtGuNr As VERAG_PROG_ALLGEMEIN.MyTextBox Friend WithEvents Label19 As Label + Friend WithEvents Panel3 As Panel + Friend WithEvents tbcntr As TabControl + Friend WithEvents tabDok As TabPage + Friend WithEvents scanSonstiges As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList + Friend WithEvents tabVollmachten As TabPage + Friend WithEvents scanUSTVVollmachten As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList + Friend WithEvents tabFABest As TabPage + Friend WithEvents scanUSTVFABest As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList + Friend WithEvents Panel4 As Panel + Friend WithEvents TabControl1 As TabControl + Friend WithEvents TabPage1 As TabPage + Friend WithEvents UsrcntlPDFScanList1 As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList + Friend WithEvents scanLieferschein As VERAG_PROG_ALLGEMEIN.usrcntlPDFScan End Class diff --git a/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb b/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb index 44df7114..14de90e6 100644 --- a/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb +++ b/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb @@ -269,5 +269,7 @@ Public Class ustCntlUSTV_ErstattungPosition End Sub + Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint + End Sub End Class diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb index 7b7edd9c..3a90e738 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb @@ -301,6 +301,7 @@ Public Class cUStVPositionen Property UStVPo_Sachbearbeiter As Object = Nothing ' NVARCHAR(15) NULL, Property UStVPo_Zeitstempel As Object = Nothing ' DATETIME Default (getdate()) NULL, Property UStVPo_daId As Object = Nothing + Property UStVPo_daId_loeschbar As Object = Nothing Dim SQL As New SQL @@ -399,6 +400,7 @@ Public Class cUStVPositionen list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVPo_Sachbearbeiter", UStVPo_Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVPo_Zeitstempel", UStVPo_Zeitstempel)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVPo_daId", UStVPo_daId)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVPo_daId_loeschbar", UStVPo_daId_loeschbar)) Return list End Function @@ -455,6 +457,7 @@ Public Class cUStVErstattungPositionen Property UStVEr_USteuerbetragEUR As Object = Nothing Property UStVEr_Sachbearbeiter As Object = Nothing Property UStVEr_Zeitstempel As Object = Nothing + Property UStVEr_daId As Object = Nothing Dim SQL As New SQL @@ -477,6 +480,7 @@ Public Class cUStVErstattungPositionen list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_USteuerbetragEUR", UStVEr_USteuerbetragEUR)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Sachbearbeiter", UStVEr_Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Zeitstempel", UStVEr_Zeitstempel)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_daId", UStVEr_daId)) Return list End Function From 7ff2b4d34fe30a57c3e61655f0f772268c9d35ec Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 13 Mar 2025 16:28:41 +0100 Subject: [PATCH 13/24] Offert, Ustva --- ...stCntlUSTV_ErstattungPosition .Designer.vb | 118 ++++++------------ SDL/kunden/usrCntlOfferte.vb | 2 +- VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb | 2 + 3 files changed, 43 insertions(+), 79 deletions(-) diff --git a/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb b/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb index e711bebf..6a085ae7 100644 --- a/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb +++ b/SDL/USTV/ustCntlUSTV_ErstattungPosition .Designer.vb @@ -64,26 +64,23 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.tbcntr = New System.Windows.Forms.TabControl() Me.tabDok = New System.Windows.Forms.TabPage() Me.scanSonstiges = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() - Me.tabVollmachten = New System.Windows.Forms.TabPage() - Me.scanUSTVVollmachten = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() - Me.tabFABest = New System.Windows.Forms.TabPage() - Me.scanUSTVFABest = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() Me.Panel4 = New System.Windows.Forms.Panel() Me.TabControl1 = New System.Windows.Forms.TabControl() Me.TabPage1 = New System.Windows.Forms.TabPage() Me.UsrcntlPDFScanList1 = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() Me.scanLieferschein = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan() + Me.scanUSTVVollmachten = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList() + Me.tabVZ = New System.Windows.Forms.TabPage() Me.Panel2.SuspendLayout() Me.pnl.SuspendLayout() Me.Panel1.SuspendLayout() Me.Panel3.SuspendLayout() Me.tbcntr.SuspendLayout() Me.tabDok.SuspendLayout() - Me.tabVollmachten.SuspendLayout() - Me.tabFABest.SuspendLayout() Me.Panel4.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabPage1.SuspendLayout() + Me.tabVZ.SuspendLayout() Me.SuspendLayout() ' 'Label8 @@ -659,8 +656,7 @@ Partial Class ustCntlUSTV_ErstattungPosition 'tbcntr ' Me.tbcntr.Controls.Add(Me.tabDok) - Me.tbcntr.Controls.Add(Me.tabVollmachten) - Me.tbcntr.Controls.Add(Me.tabFABest) + Me.tbcntr.Controls.Add(Me.tabVZ) Me.tbcntr.Dock = System.Windows.Forms.DockStyle.Fill Me.tbcntr.Location = New System.Drawing.Point(0, 16) Me.tbcntr.Name = "tbcntr" @@ -676,7 +672,7 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.tabDok.Padding = New System.Windows.Forms.Padding(3) Me.tabDok.Size = New System.Drawing.Size(256, 193) Me.tabDok.TabIndex = 1 - Me.tabDok.Text = "Bescheide" + Me.tabDok.Text = "Bescheide/Anträge" Me.tabDok.UseVisualStyleBackColor = True ' 'scanSonstiges @@ -700,69 +696,6 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.scanSonstiges.Size = New System.Drawing.Size(250, 187) Me.scanSonstiges.TabIndex = 0 ' - 'tabVollmachten - ' - Me.tabVollmachten.Controls.Add(Me.scanUSTVVollmachten) - Me.tabVollmachten.Location = New System.Drawing.Point(4, 22) - Me.tabVollmachten.Name = "tabVollmachten" - Me.tabVollmachten.Padding = New System.Windows.Forms.Padding(3) - Me.tabVollmachten.Size = New System.Drawing.Size(256, 193) - Me.tabVollmachten.TabIndex = 2 - Me.tabVollmachten.Text = "Vollmachten" - Me.tabVollmachten.UseVisualStyleBackColor = True - ' - 'scanUSTVVollmachten - ' - Me.scanUSTVVollmachten._DATENSERVER_KATEGORIE = "DOKUMENTE" - Me.scanUSTVVollmachten._DATENSERVER_ORDNER = "MDM" - Me.scanUSTVVollmachten._DATENSERVER_UOrdner1 = "" - Me.scanUSTVVollmachten._DATENSERVER_UOrdner2 = "" - Me.scanUSTVVollmachten._DATENSERVER_UOrdner3 = "" - Me.scanUSTVVollmachten._OPEN_ORIGINAL = False - Me.scanUSTVVollmachten._TYPE = "PDF" - Me.scanUSTVVollmachten.AllowDrop = True - Me.scanUSTVVollmachten.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.scanUSTVVollmachten.BackColor = System.Drawing.Color.White - Me.scanUSTVVollmachten.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.scanUSTVVollmachten.Cursor = System.Windows.Forms.Cursors.Hand - Me.scanUSTVVollmachten.Dock = System.Windows.Forms.DockStyle.Fill - Me.scanUSTVVollmachten.Location = New System.Drawing.Point(3, 3) - Me.scanUSTVVollmachten.Margin = New System.Windows.Forms.Padding(0) - Me.scanUSTVVollmachten.Name = "scanUSTVVollmachten" - Me.scanUSTVVollmachten.Size = New System.Drawing.Size(250, 187) - Me.scanUSTVVollmachten.TabIndex = 1 - ' - 'tabFABest - ' - Me.tabFABest.Controls.Add(Me.scanUSTVFABest) - Me.tabFABest.Location = New System.Drawing.Point(4, 22) - Me.tabFABest.Name = "tabFABest" - Me.tabFABest.Size = New System.Drawing.Size(256, 193) - Me.tabFABest.TabIndex = 3 - Me.tabFABest.Text = "FA_Bestätigung" - Me.tabFABest.UseVisualStyleBackColor = True - ' - 'scanUSTVFABest - ' - Me.scanUSTVFABest._DATENSERVER_KATEGORIE = "DOKUMENTE" - Me.scanUSTVFABest._DATENSERVER_ORDNER = "MDM" - Me.scanUSTVFABest._DATENSERVER_UOrdner1 = "" - Me.scanUSTVFABest._DATENSERVER_UOrdner2 = "" - Me.scanUSTVFABest._DATENSERVER_UOrdner3 = "" - Me.scanUSTVFABest._OPEN_ORIGINAL = False - Me.scanUSTVFABest._TYPE = "PDF" - Me.scanUSTVFABest.AllowDrop = True - Me.scanUSTVFABest.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.scanUSTVFABest.BackColor = System.Drawing.Color.White - Me.scanUSTVFABest.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.scanUSTVFABest.Cursor = System.Windows.Forms.Cursors.Hand - Me.scanUSTVFABest.Dock = System.Windows.Forms.DockStyle.Fill - Me.scanUSTVFABest.Location = New System.Drawing.Point(0, 0) - Me.scanUSTVFABest.Margin = New System.Windows.Forms.Padding(0) - Me.scanUSTVFABest.Name = "scanUSTVFABest" - Me.scanUSTVFABest.Size = New System.Drawing.Size(256, 193) - Me.scanUSTVFABest.TabIndex = 1 - ' 'Panel4 ' Me.Panel4.Controls.Add(Me.TabControl1) @@ -834,6 +767,38 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.scanLieferschein.TabIndex = 2 Me.scanLieferschein.Visible = False ' + 'scanUSTVVollmachten + ' + Me.scanUSTVVollmachten._DATENSERVER_KATEGORIE = "DOKUMENTE" + Me.scanUSTVVollmachten._DATENSERVER_ORDNER = "MDM" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner1 = "" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner2 = "" + Me.scanUSTVVollmachten._DATENSERVER_UOrdner3 = "" + Me.scanUSTVVollmachten._OPEN_ORIGINAL = False + Me.scanUSTVVollmachten._TYPE = "PDF" + Me.scanUSTVVollmachten.AllowDrop = True + Me.scanUSTVVollmachten.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.scanUSTVVollmachten.BackColor = System.Drawing.Color.White + Me.scanUSTVVollmachten.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.scanUSTVVollmachten.Cursor = System.Windows.Forms.Cursors.Hand + Me.scanUSTVVollmachten.Dock = System.Windows.Forms.DockStyle.Fill + Me.scanUSTVVollmachten.Location = New System.Drawing.Point(3, 3) + Me.scanUSTVVollmachten.Margin = New System.Windows.Forms.Padding(0) + Me.scanUSTVVollmachten.Name = "scanUSTVVollmachten" + Me.scanUSTVVollmachten.Size = New System.Drawing.Size(250, 187) + Me.scanUSTVVollmachten.TabIndex = 1 + ' + 'tabVZ + ' + Me.tabVZ.Controls.Add(Me.scanUSTVVollmachten) + Me.tabVZ.Location = New System.Drawing.Point(4, 22) + Me.tabVZ.Name = "tabVZ" + Me.tabVZ.Padding = New System.Windows.Forms.Padding(3) + Me.tabVZ.Size = New System.Drawing.Size(256, 193) + Me.tabVZ.TabIndex = 2 + Me.tabVZ.Text = "Vorauszahlungen" + Me.tabVZ.UseVisualStyleBackColor = True + ' 'ustCntlUSTV_ErstattungPosition ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -851,11 +816,10 @@ Partial Class ustCntlUSTV_ErstattungPosition Me.Panel3.ResumeLayout(False) Me.tbcntr.ResumeLayout(False) Me.tabDok.ResumeLayout(False) - Me.tabVollmachten.ResumeLayout(False) - Me.tabFABest.ResumeLayout(False) Me.Panel4.ResumeLayout(False) Me.TabControl1.ResumeLayout(False) Me.TabPage1.ResumeLayout(False) + Me.tabVZ.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -900,13 +864,11 @@ Partial Class ustCntlUSTV_ErstattungPosition Friend WithEvents tbcntr As TabControl Friend WithEvents tabDok As TabPage Friend WithEvents scanSonstiges As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList - Friend WithEvents tabVollmachten As TabPage - Friend WithEvents scanUSTVVollmachten As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList - Friend WithEvents tabFABest As TabPage - Friend WithEvents scanUSTVFABest As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList Friend WithEvents Panel4 As Panel Friend WithEvents TabControl1 As TabControl Friend WithEvents TabPage1 As TabPage Friend WithEvents UsrcntlPDFScanList1 As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList Friend WithEvents scanLieferschein As VERAG_PROG_ALLGEMEIN.usrcntlPDFScan + Friend WithEvents tabVZ As TabPage + Friend WithEvents scanUSTVVollmachten As VERAG_PROG_ALLGEMEIN.usrcntlPDFScanList End Class diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index 82b04598..0a2b9f7c 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -895,7 +895,7 @@ Public Class usrCntlOfferte Dim currentRow As Integer = 13 - Dim DatumDerZollabf As String = SQL.getValueTxtBySql("select top(1) isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = 704150 and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) order by Preis desc", "FMZOLL") + Dim DatumDerZollabf As String = SQL.getValueTxtBySql("select top(1) isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) order by Preis desc", "FMZOLL") For Each row In dtKostenkalk.Rows Blatt.Range("A" & currentRow).Value = row("LeistungsBez") diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb index 4047c9aa..648c314e 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb @@ -240,6 +240,7 @@ Public Class cUTA Property daId As Object Property charged As Boolean = False Property chargedDatetime As Object = Nothing + Property daIdgesetztDatum As Object = Nothing Public hasEntry = False @@ -345,6 +346,7 @@ Public Class cUTA list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daId", daId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("charged", charged)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("chargedDatetime", chargedDatetime)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daIdgesetztDatum", daIdgesetztDatum)) Return list End Function From 33b814d995f29c046f03ee39caa03a3f0f808a36 Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Fri, 14 Mar 2025 09:15:27 +0100 Subject: [PATCH 14/24] vers --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index c187bf12..29588c10 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 1b75de92b0ca2067be4d1fc85554c49769d2d110 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 14 Mar 2025 15:20:56 +0100 Subject: [PATCH 15/24] Offerten, Fremdrechnungen --- SDL/My Project/AssemblyInfo.vb | 4 +- SDL/kunden/usrCntlOfferte.vb | 21 +++-- SDL/mdm/usrcntlFremdrechnungen.vb | 141 ++++++++++++++++-------------- 3 files changed, 86 insertions(+), 80 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index c187bf12..29588c10 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index 0a2b9f7c..2115496a 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -820,19 +820,13 @@ Public Class usrCntlOfferte If True Then - - Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(kdNr) Dim ADR As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNr) Dim FIRMA_TMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KD.FilialenNr) + If dgvOfferteDetails.Rows.Count = 0 Then Exit Sub - Dim sqlKostenkalk = " Select OffertenNr, isnull(LeistungsNr,'') as LeistungsNr,isnull(LeistungsBez,'' ) as LeistungsBez,isnull(Preis,'') as Preis,isnull([Geändert am],[Eingegeben am]) as Datum - FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) - order by Preis desc" - - - Dim dtKostenkalk As DataTable = (New SQL).loadDgvBySql(sqlKostenkalk, "FMZOLL") + Dim dtKostenkalk As DataTable = cProgramFunctions.dgridViewTods(dgvOfferteDetails) If dtKostenkalk.Rows.Count < 1 Then MsgBox("keine Daten!") @@ -895,11 +889,16 @@ Public Class usrCntlOfferte Dim currentRow As Integer = 13 - Dim DatumDerZollabf As String = SQL.getValueTxtBySql("select top(1) isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) order by Preis desc", "FMZOLL") + Dim dtkeineMdtKostenkalk_mitPreise As DataTable = dtKostenkalk.Select("Preis <> ''", "Preis desc").CopyToDataTable + + For Each row In dtkeineMdtKostenkalk_mitPreise.Rows - For Each row In dtKostenkalk.Rows Blatt.Range("A" & currentRow).Value = row("LeistungsBez") - Blatt.Range("B" & currentRow).Value = row("Preis") + Blatt.Range("B" & currentRow).Value = CDbl(row("Preis")) + + Dim DatumDerZollabf As String = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Geändert am") + + If DatumDerZollabf = "" Then DatumDerZollabf = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Eingegeben am") If IsDate(DatumDerZollabf) Then diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index 4233f348..a691b4b1 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -217,9 +217,9 @@ Public Class usrcntlFremdrechnungen 'UTA Case "UTA" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & - " [Rechnungsdatum],[Rechnungsnummer_pro_Lieferland] as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[daId],[Lieferland_ISO2] as Land, 'RE' as Art, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " AND [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Land") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2]" + " [Rechnungsdatum],[Rechnungsnummer_pro_Lieferland] as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[daId],[Lieferland_ISO2] as Land, 'RE' as Art, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " AND [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Lieferland_ISO2") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2]" - SQL_STR &= " UNION ALL SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [Datum], [RechnungsNr],[KundenNr],0,0,0,[daId],'',[DocumentTyp], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Datum] " & setSQLWhere(SDLNrTmp, "") & " order by Rechnungsdatum desc" + SQL_STR &= " UNION ALL SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & " [Datum], [RechnungsNr],[KundenNr],0,0,0,[daId],'',[DocumentTyp], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Datum] " & setSQLWhere("_", "") & " order by Rechnungsdatum desc" 'PLOSE Case "PLOSE" : SQL_STR = "SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahlTop, "") & @@ -239,36 +239,36 @@ Public Class usrcntlFremdrechnungen Case "ALLE" : Dim anzahl As Integer = anzahlTop / 6 : SQL_STR = " select * from (SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " --IDS - 'IDS' as Lieferant,invoice_id, [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer,CustomerCode as Kundennummer,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt,'' as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] = (SELECT TOP 1 [CustomerCode] FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & " ORDER BY Zeitstempel DESC) and [YearMonthDay] " & setSQLWhere(SDLNrTmp, "") & " order by [YearMonthDay], [Invoicenumber] + 'IDS' as Lieferant,invoice_id, [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer,CustomerCode as Kundennummer,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt,'' as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblIDSInvoicesNew WHERE [CustomerCode] = (SELECT TOP 1 [CustomerCode] FROM [VERAG].[dbo].[tbl_IDS_Kunden] WHERE 1 = 1 " & IIf(kdNr > 0, " AND [KdNrVERAG]=" & kdNr, "") & " ORDER BY Zeitstempel DESC) and [YearMonthDay] " & setSQLWhere("IDS", "") & " order by [YearMonthDay], [Invoicenumber] UNION ALL --MSE - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'MSE' as Lieferant,-1 as invoice_id, [invoice_date] as Rechnungsdatum, cast([invoice_id] as nvarchar) as Rechnungsnummer,[customer_number] as Kundennummer, [total_amount_euro] as Bruttobetrag ,(total_amount_euro - [total_vat_amount_euro]) as Nettobetrag ,[total_vat_amount_euro] as MWST,[country] as Land,'RE' as Art,daId, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblMSEInvoices where customer_number = (select top 1 customer_id from tblMSECustomers where 1 = 1 " & IIf(kdNr > 0, " AND [partner_customer_number]=" & kdNr, "") & " and [invoice_date] " & setSQLWhere(SDLNrTmp, "country") & " ) order by invoice_date, invoice_id + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'MSE' as Lieferant,-1 as invoice_id, [invoice_date] as Rechnungsdatum, cast([invoice_id] as nvarchar) as Rechnungsnummer,[customer_number] as Kundennummer, [total_amount_euro] as Bruttobetrag ,(total_amount_euro - [total_vat_amount_euro]) as Nettobetrag ,[total_vat_amount_euro] as MWST,[country] as Land,'RE' as Art,daId, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblMSEInvoices where customer_number = (select top 1 customer_id from tblMSECustomers where 1 = 1 " & IIf(kdNr > 0, " AND [partner_customer_number]=" & kdNr, "") & " and [invoice_date] " & setSQLWhere("MSE", "country") & " ) order by invoice_date, invoice_id UNION ALL --UTA - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'UTA' as Lieferant,-1 as invoice_id, [Rechnungsdatum],STR([Rechnungsnummer_pro_Lieferland]) as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[Lieferland_ISO2] as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Rechnungsdatum] " & setSQLWhere(SDLNrTmp, "Lieferland_ISO2") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2] UNION ALL SELECT 'UTA',-1, [Datum], cast([RechnungsNr] as nvarchar) ,[KundenNr],0,0,0,'',[DocumentTyp],[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where AdressenNr = " & kdNr & " AND Datum " & setSQLWhere(SDLNrTmp, "") & " --order by Rechnungsnummer desc + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'UTA' as Lieferant,-1 as invoice_id, [Rechnungsdatum],STR([Rechnungsnummer_pro_Lieferland]) as Rechnungsnummer,Kundennummer,SUM(Gesamtbetrag_Brutto_in_Darstellwährung) as Bruttobetrag,SUM(Gesamtbetrag_Netto_in_Darstellwährung) as Nettobetrag, SUM(Gesamtbetrag_Umsatzsteuer_in_Darstellwährung) as MWSt,[Lieferland_ISO2] as Land, 'RE' as Art,[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTAImportNew] inner join adressen on Kundennummer = UTAKundenNr where 1 = 1 " & IIf(kdNr > 0, " AND [AdressenNr]=" & kdNr, "") & " and [Rechnungsdatum] " & setSQLWhere("UTA", "Lieferland_ISO2") & " group by [Rechnungsnummer_pro_Lieferland],[Rechnungsdatum],Kundennummer,[daId],[Lieferland_ISO2] UNION ALL SELECT 'UTA',-1, [Datum], cast([RechnungsNr] as nvarchar) ,[KundenNr],0,0,0,'',[DocumentTyp],[daId], cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblUTADocuments] inner join adressen on KundenNr = UTAKundenNr where AdressenNr = " & kdNr & " AND Datum " & setSQLWhere("UTA_", "") & " --order by Rechnungsnummer desc UNION ALL --VERAG - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'VERAG' as Lieferant,-1 as invoice_id, tblTrdinInvoice.Rechnungsdatum, cast(tblTrdinInvoice.Rechnungsnummer as nvarchar) as Rechnungsnummer ,tblTrdinInvoice.KundenNrZentrale as Kundennummer, tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal as Bruttobetrag ,tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal - tblTrdinInvoice.SteuerbetragLokal as Nettobetrag ,tblTrdinInvoice.SteuerbetragLokal as MWST, 'AT' as Land, 'RE' as Art, 1 as daId, cast(1 as bit) PDFvorhanden FROM tblTrdinInvoice WHERE 1 = 1 " & IIf(kdNr > 0, " AND tblTrdinInvoice.RechnungsKundenNr=" & kdNr, "") & " and tblTrdinInvoice.Rechnungsdatum " & setSQLWhere(SDLNrTmp, "'AT'") & " AND tblTrdinInvoice.FilialenNr = 4814 ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'VERAG' as Lieferant,-1 as invoice_id, tblTrdinInvoice.Rechnungsdatum, cast(tblTrdinInvoice.Rechnungsnummer as nvarchar) as Rechnungsnummer ,tblTrdinInvoice.KundenNrZentrale as Kundennummer, tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal as Bruttobetrag ,tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal - tblTrdinInvoice.SteuerbetragLokal as Nettobetrag ,tblTrdinInvoice.SteuerbetragLokal as MWST, 'AT' as Land, 'RE' as Art, 1 as daId, cast(1 as bit) PDFvorhanden FROM tblTrdinInvoice WHERE 1 = 1 " & IIf(kdNr > 0, " AND tblTrdinInvoice.RechnungsKundenNr=" & kdNr, "") & " and tblTrdinInvoice.Rechnungsdatum " & setSQLWhere("VERAG", "'AT'") & " AND tblTrdinInvoice.FilialenNr = 4814 ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer UNION ALL --PLOSE - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'PLOSE' as Lieferant,-1 as invoice_id, [plInv_SupplierRechnungsDatum] as Rechnungsdatum, cast([plInv_SupplierRechnungsNr] as nvarchar) as Rechnungsnummer,[plInv_PLOSEKundennummer] as Kundennummer,[plInv_Bruttobetrag] as Bruttobetrag,[plInv_Nettobetrag] as Nettobetrag,[plInv_MWSTBetrag] as MWST, [plInv_SupplierCountry] as Land, 'RE' as Art,[plInv_daId] as daId, cast(case when [plInv_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblPLOSE_Inv_Data inner join Adressen on Adressen.PLOSEKundenNr = plInv_PLOSEKundennummer where 1 = 1 " & IIf(kdNr > 0, " AND Adressen.AdressenNr=" & kdNr, "") & " and [plInv_SupplierRechnungsDatum] " & setSQLWhere(SDLNrTmp, "plInv_SupplierCountry") & " Order by plInv_SupplierRechnungsDatum desc, [plInv_SupplierRechnungsNr] + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'PLOSE' as Lieferant,-1 as invoice_id, [plInv_SupplierRechnungsDatum] as Rechnungsdatum, cast([plInv_SupplierRechnungsNr] as nvarchar) as Rechnungsnummer,[plInv_PLOSEKundennummer] as Kundennummer,[plInv_Bruttobetrag] as Bruttobetrag,[plInv_Nettobetrag] as Nettobetrag,[plInv_MWSTBetrag] as MWST, [plInv_SupplierCountry] as Land, 'RE' as Art,[plInv_daId] as daId, cast(case when [plInv_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM tblPLOSE_Inv_Data inner join Adressen on Adressen.PLOSEKundenNr = plInv_PLOSEKundennummer where 1 = 1 " & IIf(kdNr > 0, " AND Adressen.AdressenNr=" & kdNr, "") & " and [plInv_SupplierRechnungsDatum] " & setSQLWhere("PLOSE", "plInv_SupplierCountry") & " Order by plInv_SupplierRechnungsDatum desc, [plInv_SupplierRechnungsNr] UNION ALL --RMC - SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'RMC' as Lieferant,-1 as invoice_id, [rmc_reDatum] as Rechnungsdatum,cast([rmc_reNr] as nvarchar) as Rechnungsnummer,rmc_kdNr as Kundennummer ,[rmc_betragBrutto] as Bruttobetrag,[rmc_betragNetto] as Nettobetrag,[rmc_betragMWST] as MWST, rmc_landKZ as Land, 'RE' as Art, [rmc_daId] as daId, cast(case when [rmc_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblRMCImport] inner join Adressen on Adressen.WölflKundenNr = rmc_kdNr where 1 = 1 " & IIf(kdNr > 0, " AND AdressenNr=" & kdNr, "") & " and [rmc_reDatum] " & setSQLWhere(SDLNrTmp, "rmc_landKZ") & " order by rmc_reDatum, rmc_reNr + SELECT " & IIf(cbxMax1000Eintrage.Checked, " top " & anzahl, "") & " 'RMC' as Lieferant,-1 as invoice_id, [rmc_reDatum] as Rechnungsdatum,cast([rmc_reNr] as nvarchar) as Rechnungsnummer,rmc_kdNr as Kundennummer ,[rmc_betragBrutto] as Bruttobetrag,[rmc_betragNetto] as Nettobetrag,[rmc_betragMWST] as MWST, rmc_landKZ as Land, 'RE' as Art, [rmc_daId] as daId, cast(case when [rmc_daId] is not null then 1 else 0 end as bit) as PDFvorhanden FROM [VERAG].[dbo].[tblRMCImport] inner join Adressen on Adressen.WölflKundenNr = rmc_kdNr where 1 = 1 " & IIf(kdNr > 0, " AND AdressenNr=" & kdNr, "") & " and [rmc_reDatum] " & setSQLWhere("RMC", "rmc_landKZ") & " order by rmc_reDatum, rmc_reNr - ) as temp where 1=1 and temp.Rechnungsdatum" & setSQLWhere(SDLNrTmp, "temp.Land", True) & " order by Rechnungsdatum desc" + ) as temp where 1=1 and temp.Rechnungsdatum" & setSQLWhere(SDLNrTmp, "temp.Land") & " order by Rechnungsdatum desc" @@ -326,20 +326,20 @@ Public Class usrcntlFremdrechnungen setPDFImages() End Sub - Private Function setSQLWhere(aktLieferant As String, land As String, Optional alle As Boolean = False) As String + Private Function setSQLWhere(aktLieferant As String, land As String) As String Dim SQLWhere = " between '" & dat_Sum_Von.Value.ToShortDateString & "' and '" & dat_Sum_Bis.Value.ToShortDateString & "'" If cbx.Checked AndAlso aktLieferant <> "IDS" AndAlso KUNDE IsNot Nothing Then - + SQLWhere &= "AND (" 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) + + Dim landKZiso2 = "" + If land <> "" Then 'LandKZ vom Kunden muss auf ISO2 konvertiert werden, weil da ein Misch-Masch in der Datenbank herrscht! - If KUNDE.LandKz <> "" Then - Dim landKZiso2 = "" - If KUNDE.LandKz.Length = 2 Then landKZiso2 = KUNDE.LandKz ElseIf KUNDE.LandKz.Length = 3 Then @@ -348,23 +348,26 @@ Public Class usrcntlFremdrechnungen landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(KUNDE.LandKz) End If - SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" + SQLWhere &= " " & land & " in ('" & landKZiso2 & "')" End If End If - '2. wenn die Rechnung die Summe NULL aufweist + '2. wenn die Rechnung die MWST-SUMME 0 aufweist!!! Select Case aktLieferant - Case "UTA" : If Not alle Then SQLWhere &= " AND Gesamtbetrag_Brutto_in_Darstellwährung <> 0 AND Art = 'RE'" 'UTA bei UTA auch EPN ausblenden! - Case "PLOSE" : If Not alle Then SQLWhere &= " AND plInv_Bruttobetrag <> 0" 'PLOSE - Case "VERAG" : If Not alle Then SQLWhere &= " AND (tblTrdinInvoice.SteuerpflichtigerBetragLokal + tblTrdinInvoice.SteuerfreierBetragLokal) <> 0" 'VERAG - Case "MSE" : If Not alle Then SQLWhere &= " AND total_amount_euro <> 0" 'MSE - Case "RMC" : If Not alle Then SQLWhere &= " AND rmc_betragBrutto <> 0" 'RMC - Case "ALLE" : If alle Then SQLWhere &= " AND temp.Nettobetrag <> 0" 'ALLE + Case "UTA" : SQLWhere &= " OR Gesamtbetrag_Umsatzsteuer_in_Darstellwährung = 0 " 'UTA bei UTA auch EPN ausblenden! + Case "PLOSE" : SQLWhere &= " OR plInv_MWSTBetrag = 0" 'PLOSE + Case "VERAG" : SQLWhere &= " OR tblTrdinInvoice.SteuerbetragLokal = 0" 'VERAG + Case "MSE" : SQLWhere &= " OR total_vat_amount_euro = 0" 'MSE + Case "RMC" : SQLWhere &= " OR rmc_betragMWST = 0" 'RMC + Case "ALLE" : SQLWhere &= " OR temp.MWSt = 0" 'ALLE + Case "UTA_" : SQLWhere &= " 1 <> 1" + Case Else : SQLWhere &= " 1 <> 1" + End Select '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then - Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant = ''").CopyToDataTable + Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select("Lieferant <> 'IDS' AND Land = '" & landKZiso2 & "'").CopyToDataTable Dim counter = 0 Dim landBez As String = "" For Each row As DataRow In dtkeineMWST_ohneContraint.Rows @@ -372,7 +375,8 @@ Public Class usrcntlFremdrechnungen counter = counter + 1 If (dtkeineMWST_ohneContraint.Rows.Count <> 0 And counter <> dtkeineMWST_ohneContraint.Rows.Count) Then landBez &= "," Next - SQLWhere &= " AND " & land & " not in (" & landBez & ")" + SQLWhere &= " OR " & land & " in (" & landBez & ")" + If aktLieferant = "ALLE" Then SQLWhere &= " OR " & land & " in ('')" 'damit IDS ohne Land nicht ausgeschlossen wird. End If '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt @@ -384,8 +388,9 @@ Public Class usrcntlFremdrechnungen counter = counter + 1 If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," Next - SQLWhere &= " AND " & land & " not in (" & landBez & ")" + SQLWhere &= " OR " & land & " in (" & landBez & ")" End If + SQLWhere &= ")" 'nicht NOTWENDIG! @@ -397,7 +402,7 @@ Public Class usrcntlFremdrechnungen End If - Return SQLWhere + Return SQLWhere End Function @@ -407,58 +412,60 @@ Public Class usrcntlFremdrechnungen Dim SQLWhere = "" If cbx.Checked AndAlso KUNDE IsNot Nothing Then - + SQLWhere &= "AND (" 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) - If land <> "" Then - If KUNDE.LandKz <> "" Then - Dim landKZiso2 = "" - If KUNDE.LandKz.Length = 2 Then - landKZiso2 = KUNDE.LandKz - ElseIf KUNDE.LandKz.Length = 3 Then - landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) - ElseIf KUNDE.LandKz.Length = 1 Then - landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(KUNDE.LandKz) - End If + Dim landKZiso2 = "" - SQLWhere &= " AND " & land & " not in ('" & landKZiso2 & "')" + If KUNDE.LandKz <> "" Then + + If KUNDE.LandKz.Length = 2 Then + landKZiso2 = KUNDE.LandKz + ElseIf KUNDE.LandKz.Length = 3 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(KUNDE.LandKz) + ElseIf KUNDE.LandKz.Length = 1 Then + landKZiso2 = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(KUNDE.LandKz) End If + + If land <> "" Then SQLWhere &= " " & land & " in ('" & landKZiso2 & "')" End If + + '2. wenn die Rechnung die Summe NULL aufweist Select Case aktLieferant - Case "IDS" : If Not alle Then SQLWhere &= " AND [AmminclVAT] <> 0" 'IDS - End Select + Case "IDS" : If Not alle Then SQLWhere &= " OR [AmminclVAT] = 0" 'IDS + End Select - '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt - If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then - Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = 'IDS'").CopyToDataTable - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtkeineMWST_IDS.Rows - landBez &= "'" & row.Item("Erstattungsland") & "'" - counter = counter + 1 - If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," - Next - SQLWhere &= " AND " & land & " not in (" & landBez & ")" + '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt (auch nicht auf Diesel -> IDS) + If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = '' AND Land = '" & landKZiso2 & "'").CopyToDataTable + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST_IDS.Rows + landBez &= "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" + End If + + + + '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt + If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWST.Rows + landBez &= "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" + End If + SQLWhere &= ")" End If - - - '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt - If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtKundeMWST.Rows - landBez &= "'" & row.Item("LandKz") & "'" - counter = counter + 1 - If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," - Next - SQLWhere &= " AND " & land & " not in (" & landBez & ")" - End If - - End If - Return SQLWhere End Function From 13627a96582e1fb62f9cc3ea3e4806809b0273ad Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Fri, 14 Mar 2025 15:43:15 +0100 Subject: [PATCH 16/24] kn8 --- .../Schnittstellen/cTariffKN8.vb | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb index c49833c4..7273fcf2 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cTariffKN8.vb @@ -4,6 +4,7 @@ Imports System.Globalization Imports System.Net Imports io.konik.zugferd.entity Imports System.Data.SqlClient +Imports System.Windows.Forms ' Definieren der Klasse, um die Daten zu repräsentieren Public Class cTariffKN8 @@ -91,4 +92,114 @@ Public Class cTariffKN8_Interface End Try Return False End Function + Public Shared Function UPDATE_KN8_DESTAT() + ' URL zur Datei + Dim fileUrl As String = "https://www.destatis.de/DE/Methoden/Klassifikationen/Aussenhandel/sova-leitdatei.html" + '--> Manuell laden + + Try + Dim openFileDialog As New OpenFileDialog() + openFileDialog.Title = "Wähle eine Textdatei" + openFileDialog.Filter = "Textdateien (*.txt)|*.txt|Alle Dateien (*.*)|*.*" + + If openFileDialog.ShowDialog() = DialogResult.OK Then + Dim filePath As String = openFileDialog.FileName + If File.Exists(filePath) Then + Dim lines() As String = File.ReadAllLines(filePath) + + ' Verbindung zur Datenbank öffnen + Using connection As New SqlConnection(VERAG_PROG_ALLGEMEIN.SQL.GetFMZOLLConnectionString) + connection.Open() + + Using command As New SqlCommand("DELETE tblEZTKN8_DE ", connection) + + command.ExecuteNonQuery() + + End Using + + + For Each line As String In lines + ' Sicherstellen, dass die Zeile nicht leer ist + If Not String.IsNullOrWhiteSpace(line) Then + ' Annahme: Der Code besteht aus den ersten 8 Zeichen, danach folgt die Beschreibung + Dim code As String = line.Substring(0, 8).Trim() + Dim description As String = line.Substring(9).Trim() + + + Using command As New SqlCommand("INSERT INTO tblEZTKN8_DE (code, description) VALUES (@code, @description )", connection) + command.Parameters.AddWithValue("@code", code.Trim().Replace("""", "")) + command.Parameters.AddWithValue("@description", description.Trim().Replace("""", "")) + + command.ExecuteNonQuery() + + End Using + + + ' Entferne unnötige Leerzeichen aus der Beschreibung + description = System.Text.RegularExpressions.Regex.Replace(description, "\s{2,}", " ") + + Console.WriteLine($"Code: {code}, Beschreibung: {description}") + End If + Next + + End Using + Else + Console.WriteLine("Datei nicht gefunden!") + End If + End If + + + + + ' WebClient verwenden, um die Datei direkt herunterzuladen + Using client As New WebClient() + Dim fileContent As String = client.DownloadString(fileUrl) + + ' Datei-Inhalt in Zeilen aufteilen + Dim lines As String() = fileContent.Split(New String() {Environment.NewLine}, StringSplitOptions.None) + + ' Verbindung zur Datenbank öffnen + Using connection As New SqlConnection(VERAG_PROG_ALLGEMEIN.SQL.GetFMZOLLConnectionString) + connection.Open() + + Using command As New SqlCommand("DELETE tblEZTKN8_DE ", connection) + + command.ExecuteNonQuery() + + End Using + + ' Zeilen durchlaufen, Kopfzeile überspringen + For i As Integer = 1 To lines.Length - 1 + Dim line As String = lines(i).Trim() + + ' Überspringen leerer Zeilen + If String.IsNullOrEmpty(line) Then Continue For + + ' Spalten trennen (Semikolon als Trennzeichen) + Dim columns As String() = line.Split(";") + + ' Sicherstellen, dass genügend Spalten vorhanden sind + If columns.Length >= 4 Then + ' Daten in die Datenbank einfügen + Using command As New SqlCommand("INSERT INTO tblEZTKN8_DE (Ebene, EDV_Code, Code, Kurztitel) VALUES (@Spalte1, @Spalte2, @Spalte3, @Spalte4)", connection) + command.Parameters.AddWithValue("@Spalte1", columns(0).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte2", columns(1).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte3", columns(2).Trim().Replace("""", "")) + command.Parameters.AddWithValue("@Spalte4", columns(3).Trim().Replace("""", "")) + + command.ExecuteNonQuery() + + End Using + End If + Next + End Using + End Using + Return True + + Console.WriteLine("Daten erfolgreich in die Datenbank geladen.") + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return False + End Function End Class From adb2969fe6c89d083295cbe2d732a6c9f98cc2a7 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 08:20:21 +0100 Subject: [PATCH 17/24] offertenNr --- SDL/My Project/AssemblyInfo.vb | 4 ++-- SDL/kunden/usrCntlOfferte.vb | 26 +++++++++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 29588c10..386114cd 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index 2115496a..f5762ef7 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -847,13 +847,15 @@ Public Class usrCntlOfferte Dim ExcelBez = "Kostenkalkulation" + Dim offertenNr As Integer = dtKostenkalk.Rows(0).Item("OffertenNr") + If offertenNr = 26 Or offertenNr = 38 Then FIRMA_TMP = "CS" + Select Case FIRMA_TMP Case "IMEX" : ExcelBez &= "_IMEX " Case "VERAG" : ExcelBez &= "_AG " Case Else : ExcelBez &= " " End Select - With exclApp .Visible = False @@ -863,6 +865,8 @@ Public Class usrCntlOfferte Path = sPath & ExcelBez & kdNr & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" End While + + Select Case FIRMA_TMP Case "IMEX" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_IMEX, False) Case "VERAG" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_AG, False) @@ -885,20 +889,32 @@ Public Class usrCntlOfferte Blatt.Range("B8").Value = ADR.Name_1 Blatt.Range("B9").Value = ADR.AdressenNr + Blatt.Range("H11").Value = "Tarif für " & Today().Year Dim currentRow As Integer = 13 - Dim dtkeineMdtKostenkalk_mitPreise As DataTable = dtKostenkalk.Select("Preis <> ''", "Preis desc").CopyToDataTable + Dim dtkeineMdtKostenkalk_mitPreise As DataTable = dtKostenkalk.Select("Preis <> ''").CopyToDataTable + dtkeineMdtKostenkalk_mitPreise.Columns.Add("price_new", System.Type.GetType("System.Int32")) + + Dim DatumDerZollabf As String = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Geändert am") + + If DatumDerZollabf = "" Then DatumDerZollabf = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Eingegeben am") + + If IsDate(DatumDerZollabf) Then Blatt.Range("B11").Value = "aktueller Tarif " & CDate(DatumDerZollabf).Year + + For Each row In dtkeineMdtKostenkalk_mitPreise.Rows + row("price_new") = CDbl(row("Preis")) + Next + + dtkeineMdtKostenkalk_mitPreise.DefaultView.Sort = "price_new desc" + dtkeineMdtKostenkalk_mitPreise = dtkeineMdtKostenkalk_mitPreise.DefaultView.ToTable For Each row In dtkeineMdtKostenkalk_mitPreise.Rows Blatt.Range("A" & currentRow).Value = row("LeistungsBez") Blatt.Range("B" & currentRow).Value = CDbl(row("Preis")) - Dim DatumDerZollabf As String = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Geändert am") - - If DatumDerZollabf = "" Then DatumDerZollabf = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Eingegeben am") If IsDate(DatumDerZollabf) Then From 2b7295452645bbb2191fe7193d5306ca5261c426 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 08:47:33 +0100 Subject: [PATCH 18/24] Offerte Fixe Taxe --- SDL/kunden/usrCntlOfferte.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDL/kunden/usrCntlOfferte.vb b/SDL/kunden/usrCntlOfferte.vb index f5762ef7..642a1370 100644 --- a/SDL/kunden/usrCntlOfferte.vb +++ b/SDL/kunden/usrCntlOfferte.vb @@ -194,7 +194,7 @@ Public Class usrCntlOfferte init(kdNr, isVerag360) ' sbLeistungAdd.initSearchBox(Me.FindForm, " [Code] ,[LeistungsNr],[LeistungsBez] FROM [Leistungen]", {"LeistungsNr", "LeistungsBez"}, " ", "LeistungsNr", "LeistungsNr", , "FMZOLL", , 400, 200) - cboLeistungenAdd.fillWithSQL("SELECT [LeistungsNr],[LeistungsBez] FROM [Leistungen] ORDER BY LeistungsNr", , "FMZOLL", True) + cboLeistungenAdd.fillWithSQL("SELECT [LeistungsNr],Replace([LeistungsBez],'P.P./', '') FROM [Leistungen] ORDER BY LeistungsNr", , "FMZOLL", True) checkPermissions() From 27e384c711d030a35f81c5898d6cf47da6979635 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 10:23:24 +0100 Subject: [PATCH 19/24] erstattungspos, ustva. --- SDL/USTV/frmMDM_USTVAntrag.vb | 8 ++++---- SDL/USTV/ustCntlUSTV_ErstattungPosition .vb | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 1d61eac1..a61aced5 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -2093,16 +2093,16 @@ Public Class frmMDM_USTVAntrag End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click + getValue(USTV_ANTRAG) USTV_ANTRAG.SAVE() If IsDBNull(USTV_ANTRAG.FilialenNr) OrElse USTV_ANTRAG.FilialenNr Is Nothing OrElse USTV_ANTRAG.FilialenNr = 0 Then MsgBox("Für das Speditionsbuch muss die Filiale eingegeben werden.") : Exit Sub If IsDBNull(USTV_ANTRAG.AbfertigungsNr) OrElse USTV_ANTRAG.AbfertigungsNr Is Nothing OrElse USTV_ANTRAG.AbfertigungsNr <= 0 Then MsgBox("Für das Speditionsbuch muss die Abfertigungs-Nr eingegeben werden.") : Exit Sub - Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr) + Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) If spedBuch.hasEntry Then MsgBox("Es existiert bereits ein Speditionsbucheintrag!" & vbNewLine & "Vorgang wird abgebrochen ") : Exit Sub With spedBuch - .UnterNr = 0 .Abfertigungsdatum = Today() .AvisUhrzeit = Now() .Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME @@ -2111,11 +2111,11 @@ Public Class frmMDM_USTVAntrag .Abfertigungsart = 10 .Abfertigungsanzahl = 1 .Packstücke = "Mehrwertsteuerrückerstattung " & USTV_ANTRAG.UStVAn_LandKz & " / " & USTV_ANTRAG.UStVAn_ReDatVon & " - " & USTV_ANTRAG.UStVAn_ReDatBis - .VermittlerKundenNr = KundenNr + .VermittlerKundenNr = USTV_ANTRAG.UStVAn_KuNr If .SAVE() Then MsgBox("Sped-Eintrag wurde angelegt") End With - End Sub + End Sub Private Sub initdgvErstattungen() diff --git a/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb b/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb index 14de90e6..b1ac9012 100644 --- a/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb +++ b/SDL/USTV/ustCntlUSTV_ErstattungPosition .vb @@ -97,13 +97,13 @@ Public Class ustCntlUSTV_ErstattungPosition If txtUSTBetrag.Text <> "" Then UStV_ERS.UStVEr_USteuerbetrag = txtUSTBetrag.Text.Replace(",", ".") Else - save = False + 'save = False End If If txtUSTBetragEUR.Text <> "" Then UStV_ERS.UStVEr_USteuerbetragEUR = txtUSTBetragEUR.Text.Replace(",", ".") Else - save = False + 'save = False End If If txtGuDatum.Text <> "" Then @@ -115,7 +115,7 @@ Public Class ustCntlUSTV_ErstattungPosition UStV_ERS.UStVEr_Umrechnungskurs = txtUmrechnungskurs.Text.Replace(",", ".") End If Else - save = False + 'save = False End If If txtGuDatum.Text <> "" Then From 62e752823b1d9558c64c45802d90b29fb144f7e2 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 11:31:57 +0100 Subject: [PATCH 20/24] email, fakt. --- SDL/Fakturierung/frmFaktEmail.vb | 7 ++-- SDL/seriendruck/usrCntlFakturierung.vb | 45 +++++++++++++++----------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index a1dd5710..64aac63b 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -325,10 +325,9 @@ Public Class frmFaktEmail Dim spracheRechnung As String = "EN" 'Defaultsprache Select Case RechnungsLandKz - Case "TR" : spracheRechnung = RechnungsLandKz - Case "A", "AT", "D", "DE", "CH" : spracheRechnung = "DE" - Case "RO" : spracheRechnung = "RO" - Case "HR", "SRB", "SLO" : spracheRechnung = "SRB" + Case "TR", "RO", "DE", "SRB" : spracheRechnung = RechnungsLandKz + Case "A", "AT", "D", "CH" : spracheRechnung = "DE" + Case "HR", "SLO", "BIH", "MNE", "MK", "MO" : spracheRechnung = "SRB" End Select If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index 0d628b71..4efd0f64 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -173,6 +173,32 @@ Public Class usrcntlFakturierung End If + 'es sollen alle RE der letzen 3 Monate gesetzt werden (warum, weil das schon immer so war....) + 'ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL") + + ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Firma_ID = 19 And Sammelrechnung = 6 And Abfertigungsdatum > DateAdd(Month, -3, GETDATE())", "FMZOLL") + + showPic(ok, PictureBox1) + + If Not ok Then Exit Sub + + + Dim rechnungenMitAbwAbfDat As Integer = CInt((New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang + WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) <> '" & rechnungsdatum & "'", "FMZOLL",, 0)) + + If rechnungenMitAbwAbfDat > 0 Then + Dim res As MsgBoxResult + res = MsgBox("Es gibt noch " & rechnungenMitAbwAbfDat & " Rechnungen mit abweichenden Abfertigungsdatum (Abfertigungsdatum ist nicht " & rechnungsdatum & ")" & vbNewLine & "Möchten Sie fortfahren (Abfertigungsdatum wird autoamtisch auf " & rechnungsdatum & " gesetzt) ?", vbYesNoCancel) + Select Case res + Case MsgBoxResult.Yes : SQL.doSQL("update [Rechnungsausgang] set Abfertigungsdatum = '" & rechnungsdatum & "' WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) <> '" & rechnungsdatum & "'", "FMZOLL") + Case MsgBoxResult.No + Case MsgBoxResult.Cancel : Exit Sub + End Select + + + End If + + Dim rechnungenMitGesamtmautanhantCSV As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID @@ -200,25 +226,6 @@ Public Class usrcntlFakturierung End If - - 'es sollen alle RE der letzen 3 Monate gesetzt werden (warum, weil das schon immer so war....) - 'ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL") - - ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Firma_ID = 19 And Sammelrechnung = 6 And Abfertigungsdatum > DateAdd(Month, -3, GETDATE())", "FMZOLL") - - showPic(ok, PictureBox1) - - If Not ok Then Exit Sub - - - Dim rechnungenMitAbwAbfDat As Integer = CInt((New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang - WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) <> '" & rechnungsdatum & "'", "FMZOLL",, 0)) - - If rechnungenMitAbwAbfDat > 0 Then - If Not vbYes = MsgBox("Es gibt noch " & rechnungenMitAbwAbfDat & " Rechnungen mit abweichenden Abfertigungsdatum (Abfertigungsdatum ist nicht " & rechnungsdatum & ")" & vbNewLine & "Möchten Sie trotzdem fortfahren?", vbYesNoCancel) Then Exit Sub - End If - - Dim dtREGU As DataTable = SQL.loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, Sum([SteuerpflichtigerGesamtbetrag]+[SteuerfreierGesamtbetrag]) AS Sammelrechnungsbetrag FROM Rechnungsausgang WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' From 2d0ccfce7f7a616c9207a025e1c36cef57367a61 Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Mon, 17 Mar 2025 13:19:17 +0100 Subject: [PATCH 21/24] IMEX offerte --- SDL/My Project/AssemblyInfo.vb | 4 ++-- SDL/kunden/frmOffertenBearbeiten.vb | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 29588c10..386114cd 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/kunden/frmOffertenBearbeiten.vb b/SDL/kunden/frmOffertenBearbeiten.vb index 406e31f9..aa79a168 100644 --- a/SDL/kunden/frmOffertenBearbeiten.vb +++ b/SDL/kunden/frmOffertenBearbeiten.vb @@ -27,7 +27,8 @@ Dim where = "" Select Case FIRMA_TMP Case "IMEX" - where = " WHERE [Offertenstamm].[OffertenNr] IN (1,2,3,4,5,6,7,8,9,10,26,27,29,50,51)" + ' where = " WHERE [Offertenstamm].[OffertenNr] IN (1,2,3,4,5,6,7,8,9,10,26,27,29,50,51)" + where = " [Offertenstamm].[OffertenNr] IN (SELECT tblAbfertigungsartOffertenstamm.ao_OffertenNr FROM tblAbfertigungsartenFiliale inner join tblAbfertigungsartOffertenstamm on ao_Abfertigungsart=Abfertigungsart WHERE FilialenNr=5501 ) " End Select Dim SQLsrt = " SELECT (select case when COUNT(*)>0 then 1 else 0 end FROM Offerten where KundenNr=" & kdnr & " and [Offerten].[OffertenNr]=[Offertenstamm].[OffertenNr]) as vorhanden," & " [Offertenstamm].[OffertenNr],[OffertenBez] FROM Offertenstamm " & where & " order by OffertenNr" From 41e1ce92d2a08d56cbf749b94b19004e7fda07fa Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 13:36:08 +0100 Subject: [PATCH 22/24] Fakt (Kontodaten von AMBAR aktualisiert). --- SDL/Fakturierung/cFakturierung.vb | 28 ++++++++++++++----- SDL/seriendruck/usrCntlFakturierung.vb | 22 +++++++++------ .../usrcntlPDFScanList.vb | 1 + 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 63d9deb5..2f7ac0da 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -778,7 +778,10 @@ Public Class cFakturierung rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim rpt.txtBank3.Visible = True - rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + + 'Änderung Ticket_Nr.: 6983 + 'rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR67 0006 2000 5440 0009 0513 57" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim rpt.picVERAG.Size = New SizeF(2.712, 0.61) rpt.txtDisclaimer.Text = rpt.txtDisclaimer.Text.Replace("Schärding oder Passau", "Bad Reichenhall") Case 26 @@ -896,7 +899,10 @@ Public Class cFakturierung rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim rpt.txtBank3.Visible = True - rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + + 'Änderung Ticket_Nr.: 6983 + 'rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR67 0006 2000 5440 0009 0513 57" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim rpt.txtDisclaimer.Text = rpt.txtDisclaimer.Text.Replace("Schärding oder Passau", "Bad Reichenhall") Case 26 'VERAG-UNISPED" rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim @@ -971,7 +977,9 @@ Public Class cFakturierung rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim rpt.txtBank3.Visible = True - rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + 'Änderung Ticket_Nr.: 6983 + 'rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR67 0006 2000 5440 0009 0513 57" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim rpt.txtDisclaimer.Text = rpt.txtDisclaimer.Text.Replace("Schärding oder Passau", "Bad Reichenhall") Case 20 '"IMEX" @@ -1043,7 +1051,10 @@ Public Class cFakturierung rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim rpt.txtBank3.Visible = True - rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + + 'Änderung Ticket_Nr.: 6983 + 'rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR90 0006 2001 6040 0009 0804 66" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim + rpt.txtBank3.Text = "Garanti Bank Türkei – Euro Konto" & vbNewLine & "IBAN: TR67 0006 2000 5440 0009 0513 57" & vbNewLine & "BIC/SWIFT: TGBATRISXXX".ToString.Trim rpt.txtDisclaimer.Text = rpt.txtDisclaimer.Text.Replace("Schärding oder Passau", "Bad Reichenhall") Case 20 '"IMEX" @@ -1971,7 +1982,9 @@ Public Class cFakturierung Case 24 'AMBAR" If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + 'Änderung Ticket_Nr.: 6983 + 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") Case 20 '"IMEX" If RECHNUNG.RechnungsLandKz = "TR" Then @@ -2256,9 +2269,10 @@ Public Class cFakturierung Case 24 'AMBAR" If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, "")) If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, "")) - desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") - + 'Änderung Ticket_Nr.: 6983 + 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") + desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto") Case 20 '"IMEX" If RechnungsLandKz = "TR" Then diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index 4efd0f64..db9c56af 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -798,12 +798,15 @@ Public Class usrcntlFakturierung Dim KundenNr = FileCSV.Name.ToString.Substring(0, 6) If IsNumeric(KundenNr) Then Dim RK_ID As Integer = dtSammelRechnugen.AsEnumerable().Where(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = KundenNr).Select(Function(r) r.Field(Of Integer)("RK_ID")).FirstOrDefault() - Dim RECHNUNG As New cRechnungsausgang(RK_ID) - attachmentIsSet = AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum) - If attachmentIsSet Then counterCSV = counterCSV + 1 + If RK_ID > 0 Then + Dim RECHNUNG As New cRechnungsausgang(RK_ID) + attachmentIsSet = AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum) + If attachmentIsSet Then counterCSV = counterCSV + 1 + End If + End If - End If + End If ElseIf f.Contains("_Maut.pdf") Then @@ -812,11 +815,14 @@ Public Class usrcntlFakturierung Dim KundenNr = FilePDF.Name.ToString.Substring(0, 6) If IsNumeric(KundenNr) Then Dim RK_ID As Integer = dtSammelRechnugen.AsEnumerable().Where(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = CInt(KundenNr)).Select(Function(r) r.Field(Of Integer)("RK_ID")).FirstOrDefault() - Dim RECHNUNG As New cRechnungsausgang(RK_ID) - attachmentIsSet = AddAttachementToRE(FilePDF.FullName, KundenNr, RECHNUNG, rechnungsdatum) - If attachmentIsSet Then counterPDF = counterPDF + 1 + If RK_ID > 0 Then + Dim RECHNUNG As New cRechnungsausgang(RK_ID) + attachmentIsSet = AddAttachementToRE(FilePDF.FullName, KundenNr, RECHNUNG, rechnungsdatum) + If attachmentIsSet Then counterPDF = counterPDF + 1 + End If + + End If End If - End If End If Next diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb index cafa20c0..4cc895c6 100644 --- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb +++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb @@ -158,6 +158,7 @@ Public Class usrcntlPDFScanList Private Sub DateiHochladenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click If DS.uploadDataToDATENSERVERFileDialog_MULTI(, , , _TYPE) Then initPdf() + RaiseEvent FileAdded(DS.da_id, DS.GET_TOP1_PATH, DS.da_name) End If 'If DS.uploadDataToDATENSERVERFileDialog(, ".pdf", , "PDF") <> "" Then ' If DS.DATA_LIST.LIST.Count > 0 Then From 3697b119e0ea86ee624a74c2e4057adb3c16fc33 Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Mon, 17 Mar 2025 13:41:09 +0100 Subject: [PATCH 23/24] vers --- SDL/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 386114cd..7aa38b65 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 10de05236b53227b153dc261732abbbd731fb6ef Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Mon, 17 Mar 2025 14:54:18 +0100 Subject: [PATCH 24/24] filter originalrechnungen --- SDL/My Project/AssemblyInfo.vb | 4 +- SDL/mdm/usrcntlFremdrechnungen.vb | 64 +++++++++++++++++-------------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 386114cd..7aa38b65 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index a691b4b1..eb3e6e0a 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -1,5 +1,6 @@ Imports System.Reflection Imports Microsoft.Office.Interop +Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFremdrechnungen Dim KUNDE As New cKunden @@ -332,6 +333,9 @@ Public Class usrcntlFremdrechnungen Dim SQLWhere = " between '" & dat_Sum_Von.Value.ToShortDateString & "' and '" & dat_Sum_Bis.Value.ToShortDateString & "'" If cbx.Checked AndAlso aktLieferant <> "IDS" AndAlso KUNDE IsNot Nothing Then + Dim erw As New cKundenErweitert(KUNDE.KundenNr) + If erw.kde_keineMWSt Then Return SQLWhere + SQLWhere &= "AND (" 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) @@ -412,6 +416,8 @@ Public Class usrcntlFremdrechnungen Dim SQLWhere = "" If cbx.Checked AndAlso KUNDE IsNot Nothing Then + Dim erw As New cKundenErweitert(KUNDE.KundenNr) + If erw.kde_keineMWSt Then Return SQLWhere SQLWhere &= "AND (" 'ORIGINAL-RECHNUNG senden wenn: '1. wenn die Rechnung in dem Land in dem er ansässig ist ausgestellt wurde (rumän. Kunde – Rechnung ausgestellt in Rumänien = z.B. IDS in RO getankt…) @@ -434,38 +440,38 @@ Public Class usrcntlFremdrechnungen '2. wenn die Rechnung die Summe NULL aufweist Select Case aktLieferant - Case "IDS" : If Not alle Then SQLWhere &= " OR [AmminclVAT] = 0" 'IDS - End Select + Case "IDS" : If Not alle Then SQLWhere &= " OR [AmminclVAT] = 0" 'IDS + End Select - '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt (auch nicht auf Diesel -> IDS) - If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then - Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = '' AND Land = '" & landKZiso2 & "'").CopyToDataTable - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtkeineMWST_IDS.Rows - landBez &= "'" & row.Item("Erstattungsland") & "'" - counter = counter + 1 - If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," - Next - SQLWhere &= " OR " & land & " in (" & landBez & ")" - End If - - - - '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt - If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtKundeMWST.Rows - landBez &= "'" & row.Item("LandKz") & "'" - counter = counter + 1 - If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," - Next - SQLWhere &= " OR " & land & " in (" & landBez & ")" - End If - SQLWhere &= ")" + '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt (auch nicht auf Diesel -> IDS) + If land <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then + Dim dtkeineMWST_IDS As DataTable = dtkeineMWST.Select("Lieferant = '' AND Land = '" & landKZiso2 & "'").CopyToDataTable + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtkeineMWST_IDS.Rows + landBez &= "'" & row.Item("Erstattungsland") & "'" + counter = counter + 1 + If (dtkeineMWST_IDS.Rows.Count <> 0 And counter <> dtkeineMWST_IDS.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" End If + + + '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt + If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWST.Rows + landBez &= "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" + End If + SQLWhere &= ")" + End If + Return SQLWhere End Function
MitarbeiterBetragFirma
" & mit.mit_username & "" & result & "" & mit.mit_firma & "