diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index b939cd74..e3027531 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2978,7 +2978,7 @@ Public Class cFakturierung End Function - Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False) As Boolean + Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsmautanhangAsPDF As Boolean = False) As Boolean 'SB Nicht mehr benötigt, da RG-Nr und DruckdatumUhrzeit Dim dt As DataTable @@ -3007,6 +3007,31 @@ Public Class cFakturierung doSAMMELRechnungsDruck_Abschnitt = doSAMMELRechnungDruck_Rechnungsdruck(dt, RechnungsNr, DruckdatumUhrzeit, 3, RechnungsdruckArt, pathPDF_SammelRg, PrinterName, SRDruckWiederholen, VorschauID) 'Sammelrechnung drucken If Sammelrechnungsbericht Then If Not doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht(RechnungsNr, DruckdatumUhrzeit, RechnungsdruckArt, pathPDF_SammelBericht, PrinterName, VorschauID, dt) Then doSAMMELRechnungsDruck_Abschnitt = False 'Sammelrechnungsbericht drucken If AnlageEinzelRg Then If Not doSAMMELRechnungDruck_Rechnungsdruck_Anlagen(RechnungsNr, DruckdatumUhrzeit, PrinterName, pathPDF_Anlage, RechnungsdruckArt, VorschauID) Then doSAMMELRechnungsDruck_Abschnitt = False 'Anlagen drucken + If RechnungsmautanhangAsPDF Then + + Dim displayView = New DataView(dt, "", "RK_ID", DataViewRowState.CurrentRows) + Dim distinctDT_RK As DataTable = displayView.ToTable(True, "RK_ID") + + For Each r In distinctDT_RK.Rows + Dim RG As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(r("RK_ID")) + If RG IsNot Nothing Then + RG.LOAD_ANHAENGE() + For Each RG_AH In RG.ANHAENGE + If RG_AH.Bezeichnung.ToUpper.Contains("MAUT") Or RG_AH.Bezeichnung.ToUpper.Contains("DIESEL") Or RG_AH.Bezeichnung.ToUpper.Contains("INVOICE") Then + Dim Path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(RG_AH.dsId) + If Not pathPDF_Anlage.Contains(Path) Then + + If Not (pathPDF_Anlage.Any(Function(f) f.Contains("COPY_INVOICE")) And Path.ToUpper.Contains("COPY_INVOICE")) Then 'damit diesel IDS-Rechnung nicht doppelt hinzugefügt wird. + pathPDF_Anlage.Add(Path) + + End If + End If + End If + Next + End If + Next + End If + 'SONSTIGE ANLAGEN: If AnlageExcelEvolog Then 'Sammelrechnungsbericht EVOLOG diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index d48c51e1..ed58abde 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/seriendruck/usrCntlFakturierung.Designer.vb b/SDL/seriendruck/usrCntlFakturierung.Designer.vb index 4c27ce77..a3f28fac 100644 --- a/SDL/seriendruck/usrCntlFakturierung.Designer.vb +++ b/SDL/seriendruck/usrCntlFakturierung.Designer.vb @@ -76,6 +76,7 @@ Partial Class usrcntlFakturierung Me.Label63 = New System.Windows.Forms.Label() Me.Label45 = New System.Windows.Forms.Label() Me.Button14 = New System.Windows.Forms.Button() + Me.cbxMautanh = New System.Windows.Forms.CheckBox() Me.GroupBox1.SuspendLayout() Me.GBMautberichte.SuspendLayout() CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -303,6 +304,7 @@ Partial Class usrcntlFakturierung ' 'GBSammelrechnung ' + Me.GBSammelrechnung.Controls.Add(Me.cbxMautanh) Me.GBSammelrechnung.Controls.Add(Me.Button1) Me.GBSammelrechnung.Controls.Add(Me.PictureBox6) Me.GBSammelrechnung.Controls.Add(Me.PictureBox5) @@ -666,6 +668,18 @@ Partial Class usrcntlFakturierung Me.Button14.Text = "Rechnungspos. berechnen" Me.Button14.UseVisualStyleBackColor = True ' + 'cbxMautanh + ' + Me.cbxMautanh.AutoSize = True + Me.cbxMautanh.Checked = True + Me.cbxMautanh.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbxMautanh.Location = New System.Drawing.Point(450, 262) + Me.cbxMautanh.Name = "cbxMautanh" + Me.cbxMautanh.Size = New System.Drawing.Size(184, 17) + Me.cbxMautanh.TabIndex = 107 + Me.cbxMautanh.Text = "Mautanhänge im PDF hinzufügen" + Me.cbxMautanh.UseVisualStyleBackColor = True + ' 'usrcntlFakturierung ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -747,4 +761,5 @@ Partial Class usrcntlFakturierung Friend WithEvents PictureBox3 As PictureBox Friend WithEvents PictureBox2 As PictureBox Friend WithEvents Button1 As Button + Friend WithEvents cbxMautanh As CheckBox End Class diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index c240c7ca..c7cb0d9e 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -961,7 +961,7 @@ Public Class usrcntlFakturierung Dim SQLStringGruppierteSammelrechnung = "SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsKundenNr, Adressen.LandKz FROM Rechnungsausgang INNER JOIN Adressen on AdressenNr = RechnungsKundenNr - WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null " & IIf(kdnr > 0, " AND RechnungsKundenNr = " & kdnr, "") & " + WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER(Rechnungsausgang.Sachbearbeiter) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null " & IIf(kdnr > 0, " AND RechnungsKundenNr = " & kdnr, "") & " group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsKundenNr, Adressen.LandKz ORDER BY [Firma_ID], [Status], RechnungsNr" @@ -972,28 +972,30 @@ Public Class usrcntlFakturierung If cbxVorschau.Checked Then Dim nurNICHTEUKunden As Boolean = False If rbAlleKunden.Checked Then - If vbYes = MsgBox("Sollen nur die Rechnungen der NICHT-EU Kunden gedruckt werden?", vbYesNoCancel) Then nurNICHTEUKunden = True + nurNICHTEUKunden = MsgBox("Sollen nur die Rechnungen der NICHT-EU Kunden gedruckt werden?", vbYesNo) End If - For Each rowRE In dtSelectedSammelrechnungen.Rows + Dim dTLANDEU As DataTable = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL") + + Dim R As DataRow = dTLANDEU.NewRow + R("LandKz") = "MK" + R("MitgliedslandEU") = False + dTLANDEU.Rows.Add(R) + + For Each rowRE In dtSelectedSammelrechnungen.Rows Dim path = "" If nurNICHTEUKunden Then - Dim isEU As Boolean = True - isEU = (New SQL).getValueTxtBySql("select MitgliedslandEU from Währungstabelle where landkz = '" & rowRE("Adressen.LandKz") & "'", "FMZOLL",) - If Not isEU Then cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , , ) + Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = rowRE("LandKZ")).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault() + If Not isEU Then cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked) + If path <> "" Then listPDFs.Add(path) Else - cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , , ) + cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , , ,, cbxMautanh.Checked) + If path <> "" Then listPDFs.Add(path) - If path <> "" Then - - listPDFs.Add(path) - - - End If End If @@ -1005,9 +1007,11 @@ Public Class usrcntlFakturierung 'GroupBox12.Refresh() My.Application.DoEvents() End If - cnt += 1 + cnt += 1 - Next + 'Exit For + + Next If listPDFs.Count > 0 Then @@ -1518,16 +1522,14 @@ Public Class usrcntlFakturierung Dim rechnungenMitGesamtmautanhantCSV As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID - WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv') - group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsausgangAnhaenge.Bezeichnung ", "FMZOLL",, 0) + WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv')", "FMZOLL",, 0) Dim rechnungenMitGesamtmautanhantPDF As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID - WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf') - group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsausgangAnhaenge.Bezeichnung ", "FMZOLL",, 0) + WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf')", "FMZOLL",, 0) MsgBox("Anzahl CSV-Anhänge: " & rechnungenMitGesamtmautanhantCSV & vbNewLine & "Anzahl PDF-Anhänge: " & rechnungenMitGesamtmautanhantPDF) @@ -1538,7 +1540,7 @@ Public Class usrcntlFakturierung sammelrechnung0vorhanden = checkIfStatus0Sammelrechnugnenvorhanden(cboSachbearbeiter._value, CDate(dtRechnungsdatum.Text)) Button14.Enabled = sammelrechnung0vorhanden - Button19.Enabled = sammelrechnung0vorhanden + 'Button19.Enabled = sammelrechnung0vorhanden wenn RE bereits Status 2 wird sie nur gedruckt!!!! Button20.Enabled = sammelrechnung0vorhanden @@ -1547,6 +1549,10 @@ Public Class usrcntlFakturierung Private Function checkIfStatus0Sammelrechnugnenvorhanden(Sachbearbeiter As String, rechnungsdatum As Date) As Boolean + If Sachbearbeiter = "" Then Return False + + If rechnungsdatum > Today() Then Return False + Dim rechnungenMitStatus0 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)) @@ -1559,7 +1565,7 @@ Public Class usrcntlFakturierung Dim sammelrechnung0vorhanden As Boolean = True sammelrechnung0vorhanden = checkIfStatus0Sammelrechnugnenvorhanden(cboSachbearbeiter._value, CDate(dtRechnungsdatum.Text)) - Button19.Enabled = sammelrechnung0vorhanden + 'Button19.Enabled = sammelrechnung0vorhanden wenn RE bereits Status 2 wird sie nur gedruckt!!!! Button14.Enabled = sammelrechnung0vorhanden Button20.Enabled = sammelrechnung0vorhanden