diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index 427b3590..0dfd75f7 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -62,7 +62,6 @@ Public Class frmAbrechnungsMaske cboSachbearbeiter.Items.Clear() - Select Case FirmaTmp Case "VERAG" diff --git a/SDL/Fakturierung/frmAbrechnungsMaskeEinzeln.vb b/SDL/Fakturierung/frmAbrechnungsMaskeEinzeln.vb index 6c23a56e..6c4e655e 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaskeEinzeln.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaskeEinzeln.vb @@ -7,7 +7,7 @@ ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() - MsgBox(FilialenNr) + 'MsgBox(FilialenNr) If FilialenNr IsNot Nothing AndAlso IsNumeric(FilialenNr) Then Me.FilialenNr = FilialenNr If AbfertigungsNr IsNot Nothing AndAlso IsNumeric(AbfertigungsNr) Then Me.AbfertigungsNr = AbfertigungsNr ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index 1204e89a..62f9b0cf 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -1,7 +1,6 @@  -Imports System.Web.Configuration +Imports System.IO Imports System.Web.UI.WebControls.Expressions -Imports com.sun.imageio.plugins Imports VERAG_PROG_ALLGEMEIN Public Class usrCntlFaktAbrechnung @@ -1734,6 +1733,56 @@ Public Class usrCntlFaktAbrechnung '----------------------------- End If + 'Anhänge aus USTVA -> SPED-BUCH + Excel Pos-Liste + If SPEDBUCH IsNot Nothing Then + If FIRMA.Firma_ID = 19 And SPEDBUCH.Abfertigungsart = 10 AndAlso SPEDBUCH.ErfassungsNr > 0 Then + + Dim func As New cMDMFunctionsAllgemein() + Dim dt = SQL.loadDgvBySql("SELECT UStVPo_daId, UStVPo_ID,UStVPo_SchnittstellenNr, UStVPo_ReNr, UStVPo_ReDat FROM tblUStVPositionen where UStVAn_ID='" & SPEDBUCH.ErfassungsNr & "' AND UStVPo_SchnittstellenNr <> 1 order by UStVPo_ID", "FMZOLL") + Dim USTV As New cUSTVAntrag(SPEDBUCH.ErfassungsNr) + If dt IsNot Nothing Then + For Each r In dt.Rows + + Dim DAID As String = "" + DAID = func.getPDF(r("UStVPo_SchnittstellenNr"), r("UStVPo_ReNr"), r("UStVPo_ReDat"), r("UStVPo_daId"), False, True, USTV.UStVAn_LandKz, USTV, New cFakturierung, True) + + Dim nameLief As String = "" + + Select Case r("UStVPo_SchnittstellenNr") + Case 1 : nameLief = "VERAG-" 'Verag360 + Case 2, 8, 12 : nameLief = "IDS-" + Case 3 : nameLief = "IT-" + Case 4, 9 : nameLief = "MSE-" + Case 5, 10 : nameLief = "UTA-" + Case 6, 11 : nameLief = "PLOSE-" + Case 7 : nameLief = "RMC-" + End Select + + nameLief &= "RE" + + If DAID <> "" AndAlso IsNumeric(DAID) Then + Dim daidno As Integer = CInt(DAID) + Dim ds As New cDATENSERVER(daidno) + .Rows.Add(0, nameLief, ds.da_name, ds.da_id, ds.da_id) + End If + + Next + End If + + + Dim pfadExcel As String = func.generateExcelPosList(USTV, "", "", "", False) 'soll immer alle POS bekommen! laut Lidya! 28.04.2025 + If pfadExcel <> "" Then + + Dim FI As New FileInfo(pfadExcel) + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "POS_LISTE", "", "", FI.Name, USTV.UStVAn_KuNr, False) + DS.uploadDataToDATENSERVER(pfadExcel, FI.Name, FI.Extension,,,, True) + .Rows.Add(0, "POS-LIST", DS.da_name, DS.da_id, DS.da_id) + End If + End If + + End If + + End With dgvAnhaenge.ClearSelection() End Sub @@ -1771,6 +1820,14 @@ Public Class usrCntlFaktAbrechnung RECHNUNG.Anlage_3 = "" RECHNUNG.Anlage_4 = "" RECHNUNG.Anlage_5 = "" + + Case 19 'MDM + RECHNUNG.Anlage_1 = "Rechnung" + RECHNUNG.Anlage_2 = "Lief.-Rechn." + RECHNUNG.Anlage_3 = "POS-Liste" + RECHNUNG.Anlage_4 = "" + RECHNUNG.Anlage_5 = "" + Case Else If SPEDBUCH IsNot Nothing Then Select Case SPEDBUCH.Abfertigungsart @@ -1939,6 +1996,7 @@ Public Class usrCntlFaktAbrechnung 'Case "7002" : cboFirma.changeItem(26) : RECHNUNG.Firma_ID = 26 'UK oder AG Case "5701" : cboFirma.changeItem(24) : If RECHNUNG IsNot Nothing Then RECHNUNG.Firma_ID = 24'AMBAR Case "5801" : cboFirma.changeItem(17) : If RECHNUNG IsNot Nothing Then RECHNUNG.Firma_ID = 17 'FRONT-OFFICE + Case "4817", "4820", "4821", "4823", "4824", "4814", "4868" : cboFirma.changeItem(19) : If RECHNUNG IsNot Nothing Then RECHNUNG.Firma_ID = 19 'MDM Case Else If SPEDBUCH IsNot Nothing AndAlso SPEDBUCH.Abfertigungsart = 38 Then 'EV-VZ @@ -2162,7 +2220,7 @@ Public Class usrCntlFaktAbrechnung For Each POS In RECHNUNG.POSITIONEN If POS.Preis IsNot Nothing AndAlso IsNumeric(POS.Preis) AndAlso POS.Preis <> 0 Then - If CBool(SQL.getValueTxtBySql("SELECT isnull([Abfertigungskosten],0) FROM [Leistungen] where LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then + If CBool(SQL.getValueTxtBySql("Select isnull([Abfertigungskosten],0) FROM [Leistungen] where LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then Abfertigungskosten_Berechnen += POS.SteuerpflichtigerBetrag 'fktEuro(![SteuerpflichtigerBetrag], Me![Währungscode], "EUR") Abfertigungskosten_Berechnen += POS.SteuerfreierBetrag 'Me![Abfertigungskosten] = Me![Abfertigungskosten] + fktEuro(![SteuerfreierBetrag], Me![Währungscode], "EUR") @@ -4227,7 +4285,7 @@ Nächste_Textzeile_lesen: ContextMenuStrip3.Show(Cursor.Position) End Sub -Private Sub AbsenderToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles AbsenderToolStripMenuItem2.Click, EmpfängerToolStripMenuItem2.Click, AuftraggeberToolStripMenuItem2.Click, AvisiererToolStripMenuItem2.Click + Private Sub AbsenderToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles AbsenderToolStripMenuItem2.Click, EmpfängerToolStripMenuItem2.Click, AuftraggeberToolStripMenuItem2.Click, AvisiererToolStripMenuItem2.Click Try diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 818de374..550bc040 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -18,6 +18,7 @@ Public Class frmMDM_USTVAntrag Dim atez_api = New cATEZ_NCTS_IN("ATEZ_VAT", False) Dim abfNrisSetManually As Boolean = False Dim von, bis As Date + Dim func As New cMDMFunctionsAllgemein Sub New(UStVAn_ID) @@ -174,7 +175,7 @@ Public Class frmMDM_USTVAntrag If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value Else - da_id = getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value) + da_id = func.getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Antrag_LandKz, USTV_ANTRAG) End If @@ -1208,7 +1209,9 @@ Public Class frmMDM_USTVAntrag Shared Function loadUSTVFrom_IDS(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean Try - Dim bytSchnittstellenNr = 8 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden + 'Dim bytSchnittstellenNr = 8 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden + Dim bytSchnittstellenNr = 12 + Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable Dim GET_Antraege = cIDS.GET_Antraege_IDS(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) @@ -1226,7 +1229,14 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer").ToString 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") + + 'OLD - Gesammelte Rechnung + '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") + + 'NEW-Einzelrechnung + USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNewSplittedByCountry.daId FROM [tblIDSInvoicesNewSplittedByCountry] where tblIDSInvoicesNewSplittedByCountry.[YearMonthDay] ='" & USTV_POS.UStVPo_ReDat & "' AND tblIDSInvoicesNewSplittedByCountry.Invoicenumber ='" & USTV_POS.UStVPo_ReNr.ToString.Replace("/", "") & "' and tblIDSInvoicesNewSplittedByCountry.Country='" & Antrag_LandKz & "' AND tblIDSInvoicesNewSplittedByCountry.daId is not null", "FMZOLL") + + If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else @@ -1819,7 +1829,7 @@ Public Class frmMDM_USTVAntrag Case 7 'RMC - neue Schnittstelle - OK sqlText = "Update [tblRMCImport] Set rmc_archiv=0, [rmc_archiviertDatum] = NULL, UStVAn_ID = NULL FROM [tblRMCImport] inner join adressen on adressen.WölflKundenNr = tblRMCImport.rmc_kdNr Where cast(rmc_reDatum as date) = '" & RechnungsDatum.ToShortDateString & "' And rmc_reNr = " & RechnungsNr & " AND adressen.AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") - Case 8 'IDS neue Schnittstelle - OK + Case 8, 12 'IDS neue Schnittstelle - OK sqlText = "update tblIDSTransactionsNew set UStVAn_ID = NULL From tblIDSTransactionsNew INNER Join tbl_IDS_Länder @@ -1845,7 +1855,7 @@ Public Class frmMDM_USTVAntrag End Select - If (SchnittstellenNr > 0 And SchnittstellenNr < 12) Then + If (SchnittstellenNr > 0 And SchnittstellenNr < 13) Then If Not updated Then If Not vbYes = MsgBox("Fehler beim zurücksetzen der USTVA-ID!" & vbNewLine & "Möchten Sie den Eintrag trotzdem löschen?", vbYesNoCancel) Then Return updated @@ -1934,7 +1944,7 @@ Public Class frmMDM_USTVAntrag If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then Dim pdf As String = "" - pdf = getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False, False) + pdf = func.getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False, False, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If IO.File.Exists(pdf) Then Process.Start(pdf) @@ -1948,22 +1958,22 @@ Public Class frmMDM_USTVAntrag Me.Cursor = Cursors.Default End Sub - Private Function getDaID_OLD(SchnittstellenNr, reDat, reNr) - Dim da_id = -1 + 'Private Function getDaID_OLD(SchnittstellenNr, reDat, reNr) + ' Dim da_id = -1 - Select Case If(SchnittstellenNr, -1) - Case 1 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & reDat & "' and Rechnungsausgang.RechnungsNr='" & reNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL",,, -1) - 'Case 6, 0 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and isnull(plose_RechnungsNr,plInv_SupplierRechnungsNr)='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) - Case 6, 0, 11 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and plInv_SupplierRechnungsNr='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_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='" & reDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & USTV_ANTRAG.UStVAn_KuNr & " AND daId is not null", "FMZOLL",,, -1) - Case 10 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & reDat & "' and Abrechnungsnummer='" & reNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) - Case 7 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & reDat & "' and rmc_reNr='" & reNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_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] ='" & reDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & reNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) - End Select + ' Select Case If(SchnittstellenNr, -1) + ' Case 1 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & reDat & "' and Rechnungsausgang.RechnungsNr='" & reNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL",,, -1) + ' 'Case 6, 0 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and isnull(plose_RechnungsNr,plInv_SupplierRechnungsNr)='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) + ' Case 6, 0, 11 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and plInv_SupplierRechnungsNr='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_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='" & reDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & USTV_ANTRAG.UStVAn_KuNr & " AND daId is not null", "FMZOLL",,, -1) + ' Case 10 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & reDat & "' and Abrechnungsnummer='" & reNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) + ' Case 7 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & reDat & "' and rmc_reNr='" & reNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_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] ='" & reDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & reNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) + ' End Select - Return da_id + ' Return da_id - End Function + 'End Function Private Sub cbxLand_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxLand.SelectedValueChanged @@ -1994,7 +2004,7 @@ Public Class frmMDM_USTVAntrag For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim pdf As String = "" - pdf = getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True) + pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then list.Add(pdf) @@ -2035,7 +2045,7 @@ Public Class frmMDM_USTVAntrag If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value Else - da_id = getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value) + da_id = func.getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Antrag_LandKz, USTV_ANTRAG) End If If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf Next @@ -2043,216 +2053,216 @@ Public Class frmMDM_USTVAntrag End Sub - Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected) As String + 'Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected, LandKZ, USTVA) As String - Dim schnnittstellenNr = schnittstellenNr - Dim dsID + ' Dim schnnittstellenNr = schnittstellenNr + ' Dim dsID - If Not IsDBNull(daId) AndAlso IsNumeric(daId) AndAlso daId > 0 Then - dsID = daId - Else - dsID = getDaID_OLD(schnnittstellenNr, ReDat, ReNr) + ' If Not IsDBNull(daId) AndAlso IsNumeric(daId) AndAlso daId > 0 Then + ' dsID = daId + ' Else + ' dsID = func.getDaID_OLD(schnnittstellenNr, ReDat, ReNr, LandKZ, USTVA) - End If + ' End If - If dsID < 0 Then Return "" + ' If dsID < 0 Then Return "" - 'Anschrift Nummerierung: - Dim x = 100 - Dim y = 10 - Dim width = 300 - Dim height = 10 - Dim mSize = 10 - Dim mFont = "" + ' 'Anschrift Nummerierung: + ' Dim x = 100 + ' Dim y = 10 + ' Dim width = 300 + ' Dim height = 10 + ' Dim mSize = 10 + ' Dim mFont = "" - Select Case schnnittstellenNr - Case 1 - If dsID > 0 Then - Me.Cursor = Cursors.WaitCursor - Dim path As String - cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 4, path) + ' Select Case schnnittstellenNr + ' Case 1 + ' If dsID > 0 Then + ' Me.Cursor = Cursors.WaitCursor + ' Dim path As String + ' cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 4, path) - If nummierung > 0 Then + ' If nummierung > 0 Then - Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path) - PdfReader.unethicalreading = True + ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path) + ' PdfReader.unethicalreading = True - Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager - Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) - For page As Integer = 1 To pdfReader.NumberOfPages - listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - Next + ' For page As Integer = 1 To pdfReader.NumberOfPages + ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + ' Next - pdfReader.Close() + ' pdfReader.Close() - Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(path, listTowrite, , , , ,) - Return PdfTmp + ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(path, listTowrite, , , , ,) + ' Return PdfTmp - Else - Return path - End If + ' Else + ' Return path + ' End If - End If + ' End If - Case 8 + ' Case 8 - Me.Cursor = Cursors.WaitCursor - Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) + ' Me.Cursor = Cursors.WaitCursor + ' Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) - Dim path_src As String = ds.OPEN_SINGLE(False) - If path_src = "" Then Return "" + ' Dim path_src As String = ds.OPEN_SINGLE(False) + ' If path_src = "" Then Return "" - Try + ' Try - Dim fi As New System.IO.DirectoryInfo(path_src) - Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path_src) + ' Dim fi As New System.IO.DirectoryInfo(path_src) + ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path_src) - Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi.Name, fi.Extension,, False, "IDS-Rechnungen") - Dim srcDoc As New itextsharp.text.Document() - Dim PdfCopyProvider As New itextsharp.text.pdf.PdfCopy(srcDoc, New FileStream(TMP_Path_New, System.IO.FileMode.Create)) - PdfCopyProvider.SetFullCompression() - srcDoc.Open() - PdfReader.unethicalreading = True - Dim pages As New List(Of Integer)() + ' Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi.Name, fi.Extension,, False, "IDS-Rechnungen") + ' Dim srcDoc As New itextsharp.text.Document() + ' Dim PdfCopyProvider As New itextsharp.text.pdf.PdfCopy(srcDoc, New FileStream(TMP_Path_New, System.IO.FileMode.Create)) + ' PdfCopyProvider.SetFullCompression() + ' srcDoc.Open() + ' PdfReader.unethicalreading = True + ' Dim pages As New List(Of Integer)() - For page As Integer = 1 To pdfReader.NumberOfPages + ' For page As Integer = 1 To pdfReader.NumberOfPages - Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() - Dim currentpagetext As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) - Dim searchtext As String = ReNr - Dim impPage As itextsharp.text.pdf.PdfImportedPage = Nothing + ' Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() + ' Dim currentpagetext As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) + ' Dim searchtext As String = ReNr + ' Dim impPage As itextsharp.text.pdf.PdfImportedPage = Nothing - If (currentpagetext.Contains(searchtext)) Then + ' If (currentpagetext.Contains(searchtext)) Then - If page > pdfReader.NumberOfPages Then - MsgBox("Seitenanzahl überschritten!") - srcDoc.Close() : pdfReader.Close() - Return False - End If - Try + ' If page > pdfReader.NumberOfPages Then + ' MsgBox("Seitenanzahl überschritten!") + ' srcDoc.Close() : pdfReader.Close() + ' Return False + ' End If + ' Try - impPage = PdfCopyProvider.GetImportedPage(pdfReader, page) - ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite - PdfCopyProvider.SetPageSize(New itextsharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, pdfReader.GetPageRotation(page))) - ' ----- PDF Seite in das neue Dokument einfügen - If impPage IsNot Nothing Then PdfCopyProvider.AddPage(impPage) - Catch ex As Exception - VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) - End Try + ' impPage = PdfCopyProvider.GetImportedPage(pdfReader, page) + ' ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite + ' PdfCopyProvider.SetPageSize(New itextsharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, pdfReader.GetPageRotation(page))) + ' ' ----- PDF Seite in das neue Dokument einfügen + ' If impPage IsNot Nothing Then PdfCopyProvider.AddPage(impPage) + ' Catch ex As Exception + ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + ' End Try - End If + ' End If - Next + ' Next - srcDoc.Close() - pdfReader.Close() + ' srcDoc.Close() + ' pdfReader.Close() - If nummierung > 0 Then + ' If nummierung > 0 Then - Dim pdfReadernNew As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(TMP_Path_New) - pdfReadernNew.unethicalreading = True + ' Dim pdfReadernNew As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(TMP_Path_New) + ' pdfReadernNew.unethicalreading = True - Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager - Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) - For page As Integer = 1 To pdfReadernNew.NumberOfPages - listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - Next + ' For page As Integer = 1 To pdfReadernNew.NumberOfPages + ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + ' Next - pdfReader.Close() + ' pdfReader.Close() - Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,) - Return PdfTmp - Else + ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,) + ' Return PdfTmp + ' Else - Return TMP_Path_New + ' Return TMP_Path_New - End If + ' End If - Catch ex As Exception - VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) - End Try - Case Else - If dsID > 0 Then - Me.Cursor = Cursors.WaitCursor - Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) - If nummierung > 0 Then + ' Catch ex As Exception + ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + ' End Try + ' Case Else + ' If dsID > 0 Then + ' Me.Cursor = Cursors.WaitCursor + ' Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) + ' If nummierung > 0 Then - 'wenn PDF nicht beschreibbar, dann mittels Stamp! - If PDFisProtected Then + ' 'wenn PDF nicht beschreibbar, dann mittels Stamp! + ' If PDFisProtected Then - Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA") + ' Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA") - Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) - PdfReader.unethicalreading = True + ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + ' PdfReader.unethicalreading = True - Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None) - Dim stamper = New PdfStamper(pdfReader, fs) + ' Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None) + ' Dim stamper = New PdfStamper(pdfReader, fs) - For page As Integer = 1 To pdfReader.NumberOfPages - Dim canvas As PdfContentByte = stamper.GetOverContent(page) - Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED) - canvas.SetFontAndSize(bf, 12) - canvas.BeginText() + ' For page As Integer = 1 To pdfReader.NumberOfPages + ' Dim canvas As PdfContentByte = stamper.GetOverContent(page) + ' Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED) + ' canvas.SetFontAndSize(bf, 12) + ' canvas.BeginText() - 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!! - Dim _height = pdfReader.GetPageSizeWithRotation(page).GetTop(25) 'oberer Rand - Dim _width = pdfReader.GetPageSizeWithRotation(page).GetRight(0) / 2 'Mitte + ' 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!! + ' Dim _height = pdfReader.GetPageSizeWithRotation(page).GetTop(25) 'oberer Rand + ' Dim _width = pdfReader.GetPageSizeWithRotation(page).GetRight(0) / 2 'Mitte - canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, _width, _height, 0) - 'canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0) + ' canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, _width, _height, 0) + ' 'canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0) - canvas.EndText() - 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - Next - stamper.Close() - pdfReader.Close() + ' canvas.EndText() + ' 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + ' Next + ' stamper.Close() + ' pdfReader.Close() - Return tempPathNew + ' Return tempPathNew - Else + ' Else - Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) - Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager - Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) - For page As Integer = 1 To pdfReader.NumberOfPages - listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - Next + ' For page As Integer = 1 To pdfReader.NumberOfPages + ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + ' Next - pdfReader.Close() + ' pdfReader.Close() - Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) - Return PdfTmp + ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) + ' Return PdfTmp - End If + ' End If - Else + ' Else - Return DS.GET_TOP1_PATH - End If + ' Return DS.GET_TOP1_PATH + ' End If - End If - End Select + ' End If + ' End Select - End Function + 'End Function Private Sub reorderUSTVAPositions(UStVAn_ID As Integer) @@ -2481,51 +2491,9 @@ Public Class frmMDM_USTVAntrag If (dgvUSTVPositionen.SelectedRows.Count <> 1 And counter <> dgvUSTVPositionen.SelectedRows.Count) Then posId &= "," Next - - Dim StringSQL = "SELECT [UStVPo_ID] as Number ,[UStVPo_ReDat] as 'Date of Invoice',[UStVPo_ReNr] as 'Number of invoice' ,[UStVPo_Leistungsbezeichnung] as 'Name of service',[UStVPo_Leistender] as 'Name of supplier',leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as Street, - leist.[UstV_Leistender_PLZ] as 'ZIP-Code',leist.[UstV_Leistender_Stadt] as City,leist.[UstV_Leistender_Land] as Country,leist.[UstV_Leistender_UstNr] as VAT,[UStVPo_USteuerbetrag] as 'Amount of tax refund' - FROM [tblUStVPositionen] - LEFT JOIN [tblUStVLeistender] as leist - ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0 - AND leist.[UStV_LeistenderId] = [tblUStVPositionen].[UStVPo_LeistenderId]) - OR ([tblUStVPositionen].[UStVPo_LeistenderId] <= 0 - AND leist.[UStV_Leistender] = [tblUStVPositionen].[UStVPo_Leistender]) - where UStVAn_ID=" & UStVAn_ID & " and UStVPo_ID in(" & posId & ") ORDER BY UStVPo_ID" - - Dim dtNew As DataTable = SQL.loadDgvBySql(StringSQL, "FMZOLL") - - If dtNew IsNot Nothing AndAlso dtNew.Rows.Count > 0 Then + func.generateExcelPosList(USTV_ANTRAG, posId, Antrag_LandKz, txtStNr.Text, True) - Dim sumVAT As Double = 0 - - For Each row In dtNew.Rows - If Not IsDBNull(row("Amount of tax refund")) AndAlso IsNumeric(row("Amount of tax refund")) Then sumVAT += CDbl(row("Amount of tax refund")) - If Not IsDBNull(row("Amount of tax refund")) AndAlso IsNumeric(row("Amount of tax refund")) Then row("Amount of tax refund") = CDbl(row("Amount of tax refund")) - If Not IsDBNull(row("Name of supplier")) AndAlso row("Name of supplier") <> "" AndAlso Not IsDBNull(row("VAT")) AndAlso row("VAT") <> "" Then - row("Name of supplier") = row("Name of supplier").ToString.Replace(" " & row("VAT").ToString.Substring(0, 2), "") - End If - Next - - Dim drLast = dtNew.NewRow - If dtNew.Columns.Contains("Number") Then drLast.Item("Number") = dtNew.Rows.Count + 1 - If dtNew.Columns.Contains("Date of Invoice") Then drLast.Item("Date of Invoice") = DBNull.Value - If dtNew.Columns.Contains("Number of invoice") Then drLast.Item("Number of invoice") = DBNull.Value - If dtNew.Columns.Contains("Amount of tax refund") Then drLast.Item("Amount of tax refund") = sumVAT - If dtNew.Columns.Contains("Name of supplier") Then drLast.Item("Name of supplier") = DBNull.Value - If dtNew.Columns.Contains("Street") Then drLast.Item("Street") = DBNull.Value - If dtNew.Columns.Contains("City") Then drLast.Item("City") = DBNull.Value - If dtNew.Columns.Contains("Country") Then drLast.Item("Country") = DBNull.Value - If dtNew.Columns.Contains("ZIP-Code") Then drLast.Item("ZIP-Code") = DBNull.Value - If dtNew.Columns.Contains("VAT") Then drLast.Item("VAT") = "SUM" - If dtNew.Columns.Contains("Name of service") Then drLast.Item("Name of service") = DBNull.Value - - dtNew.Rows.InsertAt(drLast, dtNew.Rows.Count) - - Dim AD As New cAdressen(USTV_ANTRAG.UStVAn_KuNr) - cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K4:K" & (dtNew.Rows.Count + 1)},, "Statement itemising VAT amounts relating to the period covered by this application", "VAT NO.: " & USTV_ANTRAG.UStVAn_Steuernummer & " " & "Name/Company: " & AD.Name_1 & " " & AD.Name_2 & " " & "VAT in " & Antrag_LandKz & ": " & txtStNr.Text, IIf(USTV_ANTRAG.UStVAn_Währungscode = "EUR", "€", ""), True, "J", True, True) - - End If End Sub @@ -2692,7 +2660,7 @@ Public Class frmMDM_USTVAntrag Else If Not abfNrisSetManually Then abfNrisSetManually = True - txtAbfNr.Text = CInt(CDate(USTV_ANTRAG.UStVAn_ReDatVon).Year.ToString.Substring(2, 2)) * 1000000 + CInt(txtAbfNr.Text) + txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year)) End If @@ -2710,7 +2678,7 @@ Public Class frmMDM_USTVAntrag If Not IsNumeric(cbxFiliale._value) OrElse CInt(cbxFiliale._value) <= 0 Then MsgBox("Bitte Filiale auswählen!") : Exit Sub End If - txtAbfNr.Text = CInt(CDate(USTV_ANTRAG.UStVAn_ReDatVon).Year.ToString.Substring(2, 2)) * 1000000 + CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year)) + txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year)) If txtBezugsNr.Text = "" AndAlso txtAbfNr.Text.ToString.Length >= 6 Then txtBezugsNr.Text = txtAbfNr.Text.Substring(txtAbfNr.Text.ToString.Length - 6, 6) diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb b/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb index 24ba3f29..b3282860 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb @@ -1,5 +1,10 @@  +Imports iTextSharp.text.pdf +Imports iTextSharp.text.pdf.parser +Imports System.IO +Imports System.Windows.Forms + Public Class cMDMFunctionsAllgemein Public Shared ploseAlteLogikSchnittstelle As Boolean = False @@ -139,7 +144,7 @@ Public Class cMDMFunctionsAllgemein Else sqlWhere = "in (SELECT DISTINCT tblSteuernummern.AdressenNr AS UStVAn_KuNr FROM tblSteuernummern - where AdressenNr is not null) " + where AdressenNr is not null) AND Adressen.Auswahl = 'A'" End If 'alle Kunden, die eine SteuerNr hinterlegt haben inkl. deren hinterlegte Summen! @@ -791,4 +796,311 @@ Public Class cMDMFunctionsAllgemein End Function + Shared Function getDaID_OLD(SchnittstellenNr, reDat, reNr, Antrag_LandKz, USTV_ANTRAG) + Dim da_id = -1 + + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + + Select Case If(SchnittstellenNr, -1) + Case 1 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & reDat & "' and Rechnungsausgang.RechnungsNr='" & reNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL",,, -1) + 'Case 6, 0 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and isnull(plose_RechnungsNr,plInv_SupplierRechnungsNr)='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) + Case 6, 0, 11 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and plInv_SupplierRechnungsNr='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_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='" & reDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & USTV_ANTRAG.UStVAn_KuNr & " AND daId is not null", "FMZOLL",,, -1) + Case 10 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & reDat & "' and Abrechnungsnummer='" & reNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) + Case 7 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & reDat & "' and rmc_reNr='" & reNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_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] ='" & reDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & reNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) + Case 12 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNewSplittedByCountry.daId FROM [tblIDSInvoicesNewSplittedByCountry] where tblIDSInvoicesNewSplittedByCountry.[YearMonthDay] ='" & reDat & "' AND tblIDSInvoicesNewSplittedByCountry.Invoicenumber ='" & reNr.ToString.Replace("/", "") & "' andtblIDSInvoicesNewSplittedByCountry.Country='" & Antrag_LandKz & "' AND tblIDSInvoicesNewSplittedByCountry.daId is not null", "FMZOLL",,, -1) + End Select + + Return da_id + + End Function + + + Shared Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected, LandKZ, USTVA, cFakturierung, returnDSID) As String + + + Dim schnnittstellenNr = schnittstellenNr + Dim dsID + + If Not IsDBNull(daId) AndAlso IsNumeric(daId) AndAlso daId > 0 Then + dsID = daId + Else + dsID = getDaID_OLD(schnnittstellenNr, ReDat, ReNr, LandKZ, USTVA) + + End If + + If dsID < 0 Then + Return "" + ElseIf returnDSID Then + If schnittstellenNr = 8 Then 'Nr enthätl alle IDS-Rechnungen, die nicht mitgeben! + Return -1 + Else + Return dsID + End If + + End If + + + + 'Anschrift Nummerierung: + Dim x = 100 + Dim y = 10 + Dim width = 300 + Dim height = 10 + Dim mSize = 10 + Dim mFont = "" + + Select Case schnnittstellenNr + Case 1 + If dsID > 0 Then + 'Me.Cursor = Cursors.WaitCursor + Dim path As String + cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 4, path) + + If nummierung > 0 Then + + Dim pdfReader As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(path) + PdfReader.unethicalreading = True + + Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + + For page As Integer = 1 To pdfReader.NumberOfPages + listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , iTextSharp.text.Element.ALIGN_LEFT, page)) + Next + + pdfReader.Close() + + Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(path, listTowrite, , , , ,) + Return PdfTmp + + Else + Return path + End If + + + End If + + Case 8 + + 'Me.Cursor = Cursors.WaitCursor + Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) + + Dim path_src As String = ds.OPEN_SINGLE(False) + If path_src = "" Then Return "" + + Try + + Dim fi As New System.IO.DirectoryInfo(path_src) + Dim pdfReader As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(path_src) + + Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi.Name, fi.Extension,, False, "IDS-Rechnungen") + Dim srcDoc As New iTextSharp.text.Document() + Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New FileStream(TMP_Path_New, System.IO.FileMode.Create)) + PdfCopyProvider.SetFullCompression() + srcDoc.Open() + PdfReader.unethicalreading = True + Dim pages As New List(Of Integer)() + + For page As Integer = 1 To pdfReader.NumberOfPages + + Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() + Dim currentpagetext As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) + Dim searchtext As String = ReNr + Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing + + If (currentpagetext.Contains(searchtext)) Then + + If page > pdfReader.NumberOfPages Then + MsgBox("Seitenanzahl überschritten!") + srcDoc.Close() : pdfReader.Close() + Return False + End If + Try + + impPage = PdfCopyProvider.GetImportedPage(pdfReader, page) + ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite + PdfCopyProvider.SetPageSize(New iTextSharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, pdfReader.GetPageRotation(page))) + ' ----- PDF Seite in das neue Dokument einfügen + If impPage IsNot Nothing Then PdfCopyProvider.AddPage(impPage) + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + + + End If + + + + + Next + + srcDoc.Close() + pdfReader.Close() + + If nummierung > 0 Then + + Dim pdfReadernNew As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(TMP_Path_New) + pdfReadernNew.unethicalreading = True + + Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + + For page As Integer = 1 To pdfReadernNew.NumberOfPages + listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , iTextSharp.text.Element.ALIGN_LEFT, page)) + Next + + pdfReader.Close() + + Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,) + Return PdfTmp + Else + + + Return TMP_Path_New + + End If + + + + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Case Else + If dsID > 0 Then + 'Me.Cursor = Cursors.WaitCursor + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) + If nummierung > 0 Then + + 'wenn PDF nicht beschreibbar, dann mittels Stamp! + If PDFisProtected Then + + Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA") + + Dim pdfReader As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + PdfReader.unethicalreading = True + + Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None) + Dim stamper = New PdfStamper(pdfReader, fs) + + For page As Integer = 1 To pdfReader.NumberOfPages + Dim canvas As PdfContentByte = stamper.GetOverContent(page) + Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED) + canvas.SetFontAndSize(bf, 12) + canvas.BeginText() + + 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!! + Dim _height = pdfReader.GetPageSizeWithRotation(page).GetTop(25) 'oberer Rand + Dim _width = pdfReader.GetPageSizeWithRotation(page).GetRight(0) / 2 'Mitte + + canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, _width, _height, 0) + 'canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0) + + canvas.EndText() + 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + Next + stamper.Close() + pdfReader.Close() + + Return tempPathNew + + Else + + + Dim pdfReader As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + + Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + + For page As Integer = 1 To pdfReader.NumberOfPages + listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , iTextSharp.text.Element.ALIGN_LEFT, page)) + Next + + pdfReader.Close() + + Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) + Return PdfTmp + + End If + + + Else + + Return DS.GET_TOP1_PATH + End If + + + + End If + End Select + + + End Function + + Shared Function generateExcelPosList(USTV_ANTRAG As cUSTVAntrag, posId As String, Antrag_LandKz As String, SteuerNR As String, openFile As Boolean) As String + + Dim sql As New SQL + + Dim sqlWHere = "" + If posId <> "" Then + sqlWHere = " And UStVPo_ID in(" & posId & ")" + + End If + + Dim StringSQL = "SELECT [UStVPo_ID] as Number ,[UStVPo_ReDat] as 'Date of Invoice',[UStVPo_ReNr] as 'Number of invoice' ,[UStVPo_Leistungsbezeichnung] as 'Name of service',[UStVPo_Leistender] as 'Name of supplier',leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as Street, + leist.[UstV_Leistender_PLZ] as 'ZIP-Code',leist.[UstV_Leistender_Stadt] as City,leist.[UstV_Leistender_Land] as Country,leist.[UstV_Leistender_UstNr] as VAT,[UStVPo_USteuerbetrag] as 'Amount of tax refund' + FROM [tblUStVPositionen] + LEFT JOIN [tblUStVLeistender] as leist + ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0 + AND leist.[UStV_LeistenderId] = [tblUStVPositionen].[UStVPo_LeistenderId]) + OR ([tblUStVPositionen].[UStVPo_LeistenderId] <= 0 + AND leist.[UStV_Leistender] = [tblUStVPositionen].[UStVPo_Leistender]) + where UStVAn_ID=" & USTV_ANTRAG.UStVAn_ID & sqlWHere & " ORDER BY UStVPo_ID" + + Dim dtNew As DataTable = sql.loadDgvBySql(StringSQL, "FMZOLL") + + If dtNew IsNot Nothing AndAlso dtNew.Rows.Count > 0 Then + + + Dim sumVAT As Double = 0 + + For Each row In dtNew.Rows + If Not IsDBNull(row("Amount of tax refund")) AndAlso IsNumeric(row("Amount of tax refund")) Then sumVAT += CDbl(row("Amount of tax refund")) + If Not IsDBNull(row("Amount of tax refund")) AndAlso IsNumeric(row("Amount of tax refund")) Then row("Amount of tax refund") = CDbl(row("Amount of tax refund")) + If Not IsDBNull(row("Name of supplier")) AndAlso row("Name of supplier") <> "" AndAlso Not IsDBNull(row("VAT")) AndAlso row("VAT") <> "" Then + row("Name of supplier") = row("Name of supplier").ToString.Replace(" " & row("VAT").ToString.Substring(0, 2), "") + End If + Next + + Dim drLast = dtNew.NewRow + If dtNew.Columns.Contains("Number") Then drLast.Item("Number") = dtNew.Rows.Count + 1 + If dtNew.Columns.Contains("Date of Invoice") Then drLast.Item("Date of Invoice") = DBNull.Value + If dtNew.Columns.Contains("Number of invoice") Then drLast.Item("Number of invoice") = DBNull.Value + If dtNew.Columns.Contains("Amount of tax refund") Then drLast.Item("Amount of tax refund") = sumVAT + If dtNew.Columns.Contains("Name of supplier") Then drLast.Item("Name of supplier") = DBNull.Value + If dtNew.Columns.Contains("Street") Then drLast.Item("Street") = DBNull.Value + If dtNew.Columns.Contains("City") Then drLast.Item("City") = DBNull.Value + If dtNew.Columns.Contains("Country") Then drLast.Item("Country") = DBNull.Value + If dtNew.Columns.Contains("ZIP-Code") Then drLast.Item("ZIP-Code") = DBNull.Value + If dtNew.Columns.Contains("VAT") Then drLast.Item("VAT") = "SUM" + If dtNew.Columns.Contains("Name of service") Then drLast.Item("Name of service") = DBNull.Value + + dtNew.Rows.InsertAt(drLast, dtNew.Rows.Count) + + Dim header1 As String = "" + Dim header2 As String = "" + Dim AD As New cAdressen(USTV_ANTRAG.UStVAn_KuNr) + If Antrag_LandKz <> "" AndAlso SteuerNR <> "" Then + header1 = "Statement itemising VAT amounts relating to the period covered by this application" + header2 = "VAT NO.: " & USTV_ANTRAG.UStVAn_Steuernummer & " " & "Name/Company: " & AD.Name_1 & " " & AD.Name_2 & " " & "VAT in " & Antrag_LandKz & ": " & SteuerNR + End If + + Return cProgramFunctions.genExcelFromDT_NEW_(dtNew, {"K4:K" & (dtNew.Rows.Count + 1)},, header1, header2, IIf(USTV_ANTRAG.UStVAn_Währungscode = "EUR", "€", ""), True, "J", True,, openFile) + + End If + + End Function + End Class diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb index 93d9ba3c..d4a6b2e8 100644 --- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb +++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb @@ -354,6 +354,91 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object( End Try End Function + Public Shared Function genExcelFromDT_NEW_(dt As DataTable, Optional rangeAsWaehrung() As String = Nothing, Optional ShowAutoFilter As Boolean = True, Optional HeaderTxt As String = "", Optional HeaderTxt2 As String = "", Optional waehrungsZeichen As String = "€", Optional fitCellsToContent As Boolean = False, Optional mergeHeadersToCell As Char = "", Optional Landscape As Boolean = False, Optional fitToOnePage As Boolean = False, Optional openFile As Boolean = True) As String + Try + + Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" ' My.Computer.FileSystem.GetTempFileName + If Not My.Computer.FileSystem.DirectoryExists(sPath) Then + My.Computer.FileSystem.CreateDirectory(sPath) + End If + + Dim wb As New XLWorkbook + ' Dim dt As DataTable = (dgv.DataSource) + ' Dim dt As DataTable = TryCast(dgv., DataTable) + + wb.Worksheets.Add(dt, "DATEN") + wb.Worksheets(0).Tables.FirstOrDefault().ShowAutoFilter = ShowAutoFilter + + If rangeAsWaehrung IsNot Nothing Then + For Each r In rangeAsWaehrung + Try + wb.Worksheets(0).Range(r).Style.NumberFormat.SetFormat("###,###,##0.00 " & waehrungsZeichen) + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try + Next + End If + + If HeaderTxt <> "" Then + wb.Worksheets(0).FirstRow.InsertRowsAbove(2) + wb.Worksheets(0).Range("A1").Value = HeaderTxt + wb.Worksheets(0).Range("A1").Style.Font.Bold = True + + If mergeHeadersToCell <> "" Then + wb.Worksheets(0).Range("A1:" & mergeHeadersToCell & "1").Merge() + wb.Worksheets(0).Range("A1:" & mergeHeadersToCell & "1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center + wb.Worksheets(0).Range("A1:" & mergeHeadersToCell & "1").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + wb.Worksheets(0).Range("A1:" & mergeHeadersToCell & "1").Style.Alignment.WrapText = True + End If + + If HeaderTxt2 <> "" Then + wb.Worksheets(0).Range("A2").Value = HeaderTxt2 + wb.Worksheets(0).Row(2).InsertRowsBelow(1) + + If mergeHeadersToCell <> "" Then + wb.Worksheets(0).Range("A2:" & mergeHeadersToCell & "2").Merge() + wb.Worksheets(0).Range("A2:" & mergeHeadersToCell & "2").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center + wb.Worksheets(0).Range("A2:" & mergeHeadersToCell & "2").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + wb.Worksheets(0).Range("A2:" & mergeHeadersToCell & "2").Style.Alignment.WrapText = True + End If + + End If + + End If + + If fitCellsToContent Then + wb.Worksheets(0).Columns().AdjustToContents() + wb.Worksheets(0).Rows().AdjustToContents() + End If + + If Landscape Then + wb.Worksheets(0).PageSetup.PageOrientation = XLPageOrientation.Landscape + Else + wb.Worksheets(0).PageSetup.PageOrientation = XLPageOrientation.Default + End If + + If fitToOnePage Then + + wb.Worksheets(0).PageSetup.PagesWide = 1 ' In die Breite auf eine Seite anpassen + wb.Worksheets(0).PageSetup.PagesTall = 1 ' In die Höhe auf eine Seite anpassen + + + End If + + + Dim filename As String = sPath & "tmp_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + wb.SaveAs(filename) + + + If openFile Then Process.Start(filename) + + Return filename + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + Return Nothing + End Try + End Function + Public Shared Function sendMail(eMailTo, betreff, text, Optional eMailfrom = "support@verag.ag", Optional prio = False, Optional uhrzeitAngeben = True, Optional cc = "", Optional bcc = "", Optional anhaenge = Nothing, Optional art = 0) Dim Msg As New MailMessage Dim myCredentials As New System.Net.NetworkCredential