diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 86dfaca6..e3f7af9c 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -1315,7 +1315,7 @@ Public Class cFakturierung Return False End If Else - MsgBox("Fehler: Kein Rechnugsempfänger gefunden!") + MsgBox("Fehler: Kein Rechnungsempfänger gefunden!") Return False End If Else @@ -1325,6 +1325,10 @@ Public Class cFakturierung End If End If + If Not RECHNUNG.checkRechnungsNrIsSet() Then + MsgBox("Rechnungsnummer wurde nicht in Datenbank eingetragen" & vbNewLine & "Vorgang wird abgebrochen") + Return False + End If 'Rechnugnsdruck = Individuell für deise Rechnung, wird optional mitgegeben ' Dim RG_Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Rechnung_" & If(RECHNUNG.RechnungsNr, "") & ".pdf" @@ -1450,7 +1454,7 @@ Public Class cFakturierung End If Catch ex As Exception - MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!") + MsgBox("Fehler beim Öffnen des Mail-Programmes. PDF wird geladen!") Process.Start(tmpPath) End Try rpt.Dispose() @@ -2065,7 +2069,14 @@ Public Class cFakturierung End If RG.SAVE() - found = True + + If Not RG.checkRechnungsNrIsSet() Then + MsgBox("Rechnungsnummer wurde nicht in Datenbank eingetragen" & vbNewLine & "Vorgang wird abgebrochen") + Return False + Else + found = True + End If + End If Next @@ -2076,6 +2087,7 @@ Public Class cFakturierung If path <> "" Then listPDFs.Add(path) End If lastAktuelle_RgNr = Aktuelle_RgNr + Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 4a754416..7623a1fc 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -275,9 +275,10 @@ Public Class frmFaktEmail Dim lastAktuelle_RgNr As Integer = -1 'Rechnung erstellen: '----------------------------------------------------------------- + Dim RechnungsNrisSet As Boolean = False Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr) If RechnungsNr <= 0 Then - cFakturierung.doSAMMELRechnungsDruck(Firma_ID, SammelrechungArt, DatumBis, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, KdNr, 4, listPDFs, SB, lastAktuelle_RgNr, DruckDatumZeit, AvisoIds, cbxExcelEvolog.Checked, SonstAnlagen,, cbxTransFerry.Checked, FakturierungsGruppe, Abfertigungsart) + RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(Firma_ID, SammelrechungArt, DatumBis, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, KdNr, 4, listPDFs, SB, lastAktuelle_RgNr, DruckDatumZeit, AvisoIds, cbxExcelEvolog.Checked, SonstAnlagen,, cbxTransFerry.Checked, FakturierungsGruppe, Abfertigungsart) RechnungsNr = lastAktuelle_RgNr Else Dim path = "" @@ -287,6 +288,9 @@ Public Class frmFaktEmail listPDFs.Add(path) End If + If Not RechnungsNrisSet Then 'Abbruch bei fehlender RE-Nr + Exit Sub + End If If cbxRgKopieDrucken.Checked Then 'KOPIE DRUCK @@ -299,83 +303,83 @@ Public Class frmFaktEmail End If Dim outl As New Outlook.Application - Dim Mail As Microsoft.Office.Interop.Outlook.MailItem - Mail = outl.CreateItem(0) - Mail.Subject = txtSubject.Text + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + Mail.Subject = txtSubject.Text - 'Mail-Adressen eintragen - '----------------------------------------------------------------- - For Each r In dgvEmail.Rows - If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";" - Next - For Each r In dgvEmailCC.Rows - If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";" - Next - For Each r In dgvEmailBCC.Rows - If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";" - Next - - - RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr) - txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr) - - - Dim TextHTML = "
" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine) & "
" - - Mail.HTMLBody = TextHTML - Mail.Subject = txtSubject.Text - - ATTACHMENTS.Clear() - '----------------------------------------------------------------- - 'Rechnungen anfügen - '----------------------------------------------------------------- - For Each l In listPDFs - ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - Next - For Each l In SonstAnlagen - ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - Next - addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked) - - '----------------------------------------------------------------- - 'Steuerbescheid/VDB anfügen - '----------------------------------------------------------------- - getAnhaenge() - 'For Each l In listPDFs - ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) - ' ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) - 'Next - - 'Rechnungsanhänge anfügen - '----------------------------------------------------------------- - If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then - For Each r In SR_DT.Rows - Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID")) - If RG_ANH IsNot Nothing Then - For Each ANH In RG_ANH - ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung)) - Next - End If + 'Mail-Adressen eintragen + '----------------------------------------------------------------- + For Each r In dgvEmail.Rows + If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";" Next + For Each r In dgvEmailCC.Rows + If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";" + Next + For Each r In dgvEmailBCC.Rows + If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";" + Next + + + RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr) + txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr) + + + Dim TextHTML = "
" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine) & "
" + + Mail.HTMLBody = TextHTML + Mail.Subject = txtSubject.Text + + ATTACHMENTS.Clear() + '----------------------------------------------------------------- + 'Rechnungen anfügen + '----------------------------------------------------------------- + For Each l In listPDFs + ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + Next + For Each l In SonstAnlagen + ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + Next + addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked) + + '----------------------------------------------------------------- + 'Steuerbescheid/VDB anfügen + '----------------------------------------------------------------- + getAnhaenge() + 'For Each l In listPDFs + ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) + ' ATTACHMENTS.Add(New cFakt_MailATTach(l, "")) + 'Next + + 'Rechnungsanhänge anfügen + '----------------------------------------------------------------- + If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then + For Each r In SR_DT.Rows + Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID")) + If RG_ANH IsNot Nothing Then + For Each ANH In RG_ANH + ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung)) + Next + End If + Next + End If + '----------------------------------------------------------------- + + + addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked) + + + Mail.Display() + '------------------------------------------------------------------------------------------ + ' STB /FA SR: ABFRAGE FISKAL-VZ + If isFiskal Then + send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr) + End If + '------------------------------------------------------------------------------------------ + End If - '----------------------------------------------------------------- - - - addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked) - - - Mail.Display() - '------------------------------------------------------------------------------------------ - ' STB /FA SR: ABFRAGE FISKAL-VZ - If isFiskal Then - send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr) - End If - '------------------------------------------------------------------------------------------ - - End If Catch ex As Exception MsgBox("Fehler beim Öffnen des Mail-Programmes." & ex.Message & ex.StackTrace) 'Process.Start(a) @@ -390,6 +394,8 @@ Public Class frmFaktEmail If RECHNUNG.Status <> 0 OrElse vbYes = MsgBox("Möchten Sie das PDF als Mail-Anhang erstellen?" & vbNewLine & "Es wird eine Rechnungsnummer vergeben, die Rechnung gilt somit als gedruckt und kann nicht mehr bearbeitet werden.", vbYesNoCancel) Then abfNr = " Pos-Nr.: " & RECHNUNG.FilialenNr & "-" & RECHNUNG.AbfertigungsNr & "-" & RECHNUNG.SpeditionsbuchUnterNr + + Try Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem @@ -414,6 +420,12 @@ Public Class frmFaktEmail If Not cFakturierung.doRechnungsDruck(RECHNUNG,,, 4, pathRG,, cbxOriginalPrint.Checked) Then Exit Sub End If + + 'If Not RECHNUNG.checkRechnungsNrIsSet() Then + ' MsgBox("Rechnungsnummer wurde nicht in Datenbank eingetragen" & vbNewLine & "Vorgang wird abgebrochen") + ' Exit Sub + 'End If + RechnungsNr = RECHNUNG.RechnungsNr If cbxRgKopieDrucken.Checked Then diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb index f43fe9df..cddba5e7 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb @@ -254,10 +254,16 @@ Public Class frmFaktSammelRgDrucken Me.Cursor = Cursors.WaitCursor Dim listPDFs As New List(Of String) Dim SonstAnlagen As New List(Of String) - cFakturierung.doSAMMELRechnungsDruck(cboFirma._value, Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr, If(ausgabeArt = 1, -1, 4), listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, vorschau, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value) + Dim RechnungsNrisSet As Boolean = False + RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(cboFirma._value, Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr, If(ausgabeArt = 1, -1, 4), listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, vorschau, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value) '-------------- für PDF-Sammel-Rechnung -------------- + If Not RechnungsNrisSet Then + MsgBox("Rechnungsnummer wurde nicht in Datenbank eingetragen" & vbNewLine & "Vorgang wird abgebrochen") + Exit Sub + End If + If cbxZusammenfassen.Checked Then ' Gibt an, ob mehrere Sammelrechnung zusammengefasst werden sollten Select Case ausgabeArt diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsausgang.vb b/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsausgang.vb index 72a07916..adb7b535 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsausgang.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsausgang.vb @@ -148,6 +148,13 @@ Public Class cRechnungsausgang Return cnt > 0 End Function + Public Function checkRechnungsNrIsSet() As Boolean + 'Prüfugn ob Eintrag mit dieser Rechnungsnr in DB existiert + If Me.RechnungsNr <= 0 Then Return False + Dim cnt = SQL.getValueTxtBySql("SELECT COUNT(*) FROM [Rechnungsausgang] WHERE RechnungsNr='" & Me.RechnungsNr & "' and DruckDatumZeit is not null and Buchungsjahr = " & Me.Buchungsjahr & " and Firma_ID = '" & Me.Firma_ID & "'", "FMZOLL") + Return cnt > 0 + End Function + Public Shared Function getMaxRGUnterNr(FilialenNr As Integer, AbfertigungsNr As Integer, SpeditionsbuchUnterNr As Integer) As Integer ' Dim Nr = SQL.getValueTxtBySql("Select isnull([UnterNr], -1) + 1 FROM [Rechnungsausgang] where [FilialenNr]='" & FilialenNr & "' And AbfertigungsNr='" & AbfertigungsNr & "' And SpeditionsbuchUnterNr='" & SpeditionsbuchUnterNr & "' ORDER BY [UnterNr] desc", "FMZOLL") Dim Nr = SQL.getValueTxtBySql("Select TOP 1 isnull([UnterNr], -1) + 1 FROM [Rechnungsausgang] where [FilialenNr]='" & FilialenNr & "' And AbfertigungsNr='" & AbfertigungsNr & "' ORDER BY [UnterNr] desc", "FMZOLL") @@ -485,7 +492,7 @@ Public Class cRechnungsausgang End If Return True - End Function + End Function Public Function SAVE_POSITIONEN(RK_ID) As Boolean If DELETE_POSITIONEN() Then ' zuerst Einträge löschen...