Files
SDL/SDL/Fakturierung/frmAbrechnungsMaske.vb
2024-05-02 08:57:27 +02:00

776 lines
36 KiB
VB.net

Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports Microsoft.Office.Interop
Public Class frmAbrechnungsMaske
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim selChangedAllowed = True
Dim loaded = False
Private Sub frmAbrechnungsMaske_Load(sender As Object, e As EventArgs) Handles Me.Load
'Größe anpassen:
Me.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height
Me.Top = 0
initFilterPanel()
cProgramFunctions.initDrucker(cboPrinter)
txtAbfertDat.Text = Now.ToShortDateString 'CDate("01." & Now.ToString("MM.yyyy")).AddMonths(-1).ToShortDateString
txtAbfertDatBis.Text = Now.ToShortDateString
btnMonat.Text = MONAT.ToString("MMMM")
btnJahr.Text = JAHR.Year
cbx.Checked = False
MyComboBox3.Items.Clear()
MyComboBox3.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Alle", ""))
MyComboBox3.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ER", "ER"))
MyComboBox3.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("SR", "SR"))
MyComboBox3.changeItem("")
MyComboBox1.Items.Clear()
MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("POST", "0"))
MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FAX", "1"))
MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("E-MAIL", "2"))
MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MAIL+KOPIE", "5"))
MyComboBox1.changeItem("")
cboSort.Items.Clear()
cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Eingabezeitpunkt", "EZ"))
cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Pos.Nr", "POS"))
cboSort.changeItem("EZ")
'BERECHTIGUNG 90 = FAKTURIERUNG!!!
Dim FirmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGIMEX", "SDL") Then
FirmaTmp = "VERAGIMEX"
End If
MyComboBox2.Items.Clear()
FirmaTmp = "AMBAR"
Select Case FirmaTmp
Case "VERAG"
If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "MDM" Then
Dim whereFirma = " AND FIRMENGRUPPE In ('VERAG360')"
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
whereFirma = " AND FIRMENGRUPPE In ('VERAG360','VERAGAG_DE') "
End If
cboFirma.fillWithSQL("Select [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
cboFirma.changeItem("1")
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR [mit_id] IN (SELECT [beroz_bergrId] FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND beroz_art='B')) order by mit_username", False, "ADMIN", True)
MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("*BAUBÖCK", "BAUBOECK"))
Else
Dim whereFirma = " AND FIRMENGRUPPE IN ('VERAG','VERAGUNISPED','FRONTOFFICE','ATILLA') "
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
whereFirma = " AND FIRMENGRUPPE In ('VERAG','VERAGUNISPED','FRONTOFFICE','ATILLA','VERAGAG_DE') "
End If
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
cboFirma.changeItem("1")
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR [mit_id] IN (SELECT [beroz_bergrId] FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND beroz_art='B')) order by mit_username", False, "ADMIN", True)
End If
Case "IMEX"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE FIRMENGRUPPE IN ('IMEX') ", False, "FMZOLL")
cboFirma.changeItem("20")
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='IMEX' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
Case "UNISPED"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE FIRMENGRUPPE IN ('UNISPED') ", False, "FMZOLL")
cboFirma.changeItem("21")
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='UNISPED' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
Case "AMBAR"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE FIRMENGRUPPE IN ('AMBAR') ", False, "FMZOLL")
cboFirma.changeItem("24")
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='AMBAR' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) Or mit_id = '678' order by mit_username", False, "ADMIN", True)
Case "VERAGIMEX"
Dim whereFirma = " AND FIRMENGRUPPE IN ('VERAG','IMEX','ATILLA','VERAGUNISPED','FRONTOFFICE') "
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
whereFirma = " AND FIRMENGRUPPE In ('VERAG','IMEX','VERAGUNISPED','FRONTOFFICE','ATILLA','VERAGAG_DE') "
End If
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "VERAG" : cboFirma.changeItem("1")
Case "IMEX" : cboFirma.changeItem("20")
End Select
MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('IMEX','VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") AND mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("*BAUBÖCK", "BAUBOECK"))
End Select
' MyComboBox2.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) 'Benutzerwechsel
'If MyComboBox2.Items.Count > 0 Then MyComboBox2.SelectedIndex = 0
MyComboBox2.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
If MyComboBox2._value = "" Then MsgBox("Keine Benutzerberechtigung gefunden!") : Exit Sub
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_AlleBenutzer", Me) Then
MyComboBox2.Enabled = False
End If
End Sub
Private Sub frmAbrechnungsMaske_Shown(sender As Object, e As EventArgs) Handles Me.Shown
newRechnung()
loaded = True
initDGV()
End Sub
Sub newRechnung()
dgvRechnungen.ClearSelection()
UsrCntlFaktAbrechnung1.newRECHNUNG()
End Sub
Sub initFilterPanel()
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma]", True, "FMZOLL")
End Sub
Function getDGV() As VERAG_PROG_ALLGEMEIN.MyDatagridview
Return dgvRechnungen
'If tbcntr.SelectedTab Is TabPage1 Then
' Return MyDatagridview1
'Else
' Return MyDatagridview2
'End If
End Function
Sub initDGV()
If Not loaded Then Exit Sub
Dim dgv As VERAG_PROG_ALLGEMEIN.MyDatagridview = getDGV()
With dgv
Dim sqlstr = ""
' sqlstr &= " SELECT FilialenNr, AbfertigungsNr, UnterNr, Firma_ID, Status, Sammelrechnung, Sachbearbeiter, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, RechnungsNr, RechnungsDatum, DruckDatumZeit, Buchungsjahr, RK_ID"
sqlstr &= " SELECT FilialenNr, AbfertigungsNr, cast(FilialenNr as varchar) + ' ' + cast(AbfertigungsNr as varchar) as PosNr, UnterNr, Firma_ID,Rechnungsausgang.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr"
sqlstr &= " ,(CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' WHEN Rechnungsdruck=5 THEN 'MAIL+KOPIE' ELSE '-' END) as Rechnungsdruck "
sqlstr &= " FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=Rechnungsausgang.RechnungsKundenNr"
sqlstr &= " WHERE 1=1 "
sqlstr &= getRGWhere(MyComboBox3._value)
' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
sqlstr &= " ORDER BY FilialenNr, AbfertigungsNr, UnterNr "
.SET_SQL(sqlstr, "FMZOLL")
.LOAD()
If .ColumnCount > 0 Then
.Columns("RK_ID").Visible = False
.Columns("FilialenNr").Visible = False
.Columns("AbfertigungsNr").Visible = False
.Columns("Firma_ID").Visible = False
.Columns("RechnungsLandKz").Visible = False
.Columns("RechnungsKundenNr").Visible = False
.Columns("PosNr").HeaderText = "Pos-Nr."
.Columns("UnterNr").Width = 35
.Columns("Art").Width = 30
.Columns("Betrag").Width = 100
.Columns("Rechnungsempfänger").MinimumWidth = 150
.Columns("Rechnungsempfänger").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("Rechnungsdruck").Width = 60
.Columns("Rechnungsdruck").HeaderText = "Rg.Art"
.Columns("Rechnungsdruck").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("Betrag").DefaultCellStyle.Format = "C2"
End If
End With
End Sub
Function getRGWhere(filterSR)
Dim sqlstr = ""
Dim srchSB = "" ' "NÖBAUER ANJA" 'VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
srchSB = MyComboBox2._value
Select Case filterSR
Case "ER" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (0) "
Case "SR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (0,6) "
Case Else : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (6) "
End Select
If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" Then
sqlstr &= " AND (SELECT count(*) FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr = Rechnungsausgang.FilialenNr AND Speditionsbuch.AbfertigungsNr = Rechnungsausgang.AbfertigungsNr AND Speditionsbuch.Abfertigungsart = 1 AND Rechnungsausgang.RechnungsKundenNr = '3013401') = 0 AND Rechnungsausgang.Firma_ID=" & cboFirma._value
Else
If cbx.Checked Then
'sqlstr &= " AND Status = 0 "
sqlstr &= " AND DruckDatumZeit BETWEEN '" & txtAbfertDat._value & " 00:00:00' AND '" & txtAbfertDatBis._value & " 23:59:59'"
If MyTextBox2.Text <> "" Then
If MyTextBox3.Text <> "" Then
sqlstr &= " AND RechnungsNr BETWEEN '" & MyTextBox2.Text.Replace("*", "%") & "' AND '" & MyTextBox3.Text.Replace("*", "%") & "'"
Else
sqlstr &= " AND RechnungsNr LIKE '" & MyTextBox2.Text.Replace("*", "%") & "'"
End If
End If
Else
sqlstr &= " And (Status = 0 or DruckDatumZeit is null) "
End If
If MyComboBox1._value <> "" Then
sqlstr &= " And Rechnungsdruck='" & MyComboBox1._value & "' "
End If
If srchSB <> "" Then sqlstr &= " And Rechnungsausgang.Sachbearbeiter='" & srchSB & "' "
If cboFirma._value <> "" Then sqlstr &= " AND Rechnungsausgang.Firma_ID=" & cboFirma._value & " "
End If
' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
Return sqlstr
End Function
Private Sub MyComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedIndexChanged, MyComboBox2.SelectedIndexChanged, MyComboBox3.SelectedIndexChanged, MyComboBox1.SelectedIndexChanged
If cboFirma._value = "24" Then
cbxGutschriftenAnVerag.Visible = True
Else
cbxGutschriftenAnVerag.Visible = False
cbxGutschriftenAnVerag.Checked = False
End If
initDGV()
End Sub
Function checkSrchValues() As Boolean
'If MyComboBox2._value = "" Then Return False
If cboFirma._value = "" Then Return False
Return True
End Function
Private Sub MyDatagridview1_SelectionChanged(sender As Object, e As EventArgs) Handles dgvRechnungen.SelectionChanged
If Not selChangedAllowed Then Exit Sub
If sender.SelectedRows.Count > 0 Then
If UsrCntlFaktAbrechnung1.SAVED Then
UsrCntlFaktAbrechnung1.initRECHNUNG(sender.SelectedRows(0).Cells("RK_ID").Value)
Exit Sub
End If
End If
newRechnung()
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
newRechnung()
End Sub
Private Sub UsrCntlFaktAbrechnung1_EVENT_SAVED() Handles UsrCntlFaktAbrechnung1.EVENT_SAVED
selChangedAllowed = False
getDGV().RELOAD()
selChangedAllowed = True
End Sub
Private Sub UsrCntlFaktAbrechnung1_EVENT_DELETED() Handles UsrCntlFaktAbrechnung1.EVENT_DELETED
selChangedAllowed = False
getDGV().RELOAD()
selChangedAllowed = True
newRechnung()
End Sub
Private Sub UsrCntlFaktAbrechnung1_SOMETHING_CHANGED(rk_id) Handles UsrCntlFaktAbrechnung1.SOMETHING_CHANGED
selChangedAllowed = False
getDGV().RELOAD()
dgvRechnungen.ClearSelection()
selChangedAllowed = True
If rk_id > 0 Then
For Each r As DataGridViewRow In dgvRechnungen.Rows
If r.Cells("RK_ID").Value = rk_id Then
r.Selected = True
Exit Sub
End If
Next
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If checkSrchValues() Then
getDGV().RELOAD()
Dim orderBy = ""
Select Case cboSort._value
Case "EZ" : orderBy = " ORDER BY [ReErfZeitstempel] ASC"
Case Else : orderBy = " ORDER BY /*[BelegartenKz] DESC,*/ FilialenNr, AbfertigungsNr, [RK_ID]"
End Select
'MsgBox("SELECT RK_ID,Rechnungsdruck as Rechnungsdruck FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=RechnungsKundenNr WHERE Status=0 " & getRGWhere("ER") & orderBy)
'Exit Sub
Dim PARAM_printZollbeleg = VERAG_PROG_ALLGEMEIN.cAllgemein.PARAMS.GET_PARAMETER_VALUE_BOOL("FAKTURIERUNG_PRINT_Zollbeleg")
Dim dt = SQL.loadDgvBySql("SELECT RK_ID,Rechnungsdruck as Rechnungsdruck FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=RechnungsKundenNr WHERE Status=0 " & getRGWhere("ER") & orderBy, "FMZOLL")
If dt IsNot Nothing Then
If vbYes = MsgBox("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
Dim RechnungsDatum As Date = Now
If cFakturierung.getRgDatInput("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?" & vbNewLine, [RechnungsDatum]) Then 'Now.ToShortDateString
For Each r In dt.Rows
If r("Rechnungsdruck") = "2" Or r("Rechnungsdruck") = "5" Then
cFakturierung.doRechnungsDruck_MAIL(r("RK_ID"), RechnungsDatum,, r("Rechnungsdruck"),, cboPrinter.Text,, PARAM_printZollbeleg)
Else
cFakturierung.doRechnungsDruck(r("RK_ID"), RechnungsDatum,,,, cboPrinter.Text,, PARAM_printZollbeleg)
End If
Next
initDGV()
End If
End If
End If
End If
End Sub
Function print_Anlagen() As Boolean
Dim erg = True
Dim dt = SQL.loadDgvBySql("SELECT RK_ID FROM Rechnungsausgang WHERE Status=0 " & getRGWhere("SR") & " ORDER BY [BelegartenKz] DESC, FilialenNr, AbfertigungsNr, [RK_ID]", "FMZOLL")
If dt IsNot Nothing Then
If vbYes = MsgBox("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
For Each r In dt.Rows
If Not cFakturierung.doRechnungsDruck(r("RK_ID"),,,, cboPrinter.Text) Then erg = False
Next
End If
End If
Return erg
' strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#") & " And [Rechnungsdruck]=0"
'970 DoCmd.OpenReport "Rechnungen drucken", acNormal, , strLinkCriteria
'980 bytRechnungsdrucksteuerung = 0
'990 strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#") & " And [Rechnungsdruck]<>0"
'1000 DoCmd.OpenReport "Rechnungen drucken A4", acNormal, , strLinkCriteria
'1010 strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#")
'1020 DoCmd.OpenReport "Tages-Umsatz-Journal drucken (Einzelrechnungen)", acNormal, , strLinkCriteria
'1030 strLinkCriteria = "[Status]=2 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#")
'1040 DoCmd.OpenReport "Anlage zur Sammelrechnung drucken", acNormal, , strLinkCriteria
End Function
'Private Sub Button5_Click2(sender As Object, e As EventArgs)
' If checkSrchValues() Then
' If vbYes = MsgBox("Es werden " & MyDatagridview1.SelectedRows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
' For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
' cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value,,,, cboPrinter.Text)
' Next
' End If
' End If
'End Sub
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
'If checkSrchValues() Then
' print_Anlagen()
' initDGV()
'End If
If checkSrchValues() Then
Dim f As New frmFaktSammelRgDrucken(cboFirma._value)
f.ShowDialog(Me)
getDGV().RELOAD()
If dgvRechnungen.Rows.Count = 0 Then newRechnung()
End If
End Sub
Private Sub tbcntr_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tbcntr.SelectedIndexChanged
initDGV()
End Sub
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
If dgvRechnungen.SelectedRows.Count > 0 Then
' getDGV().RELOAD() -> hebt Selektierung auf
If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen in ein PDF gewandelt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
'Rechnungsdatum festlegen:
Dim RechnungsDatumTMP As Object = Nothing
If Not cbx.Checked Then 'GedruckteRechnugnen
RechnungsDatumTMP = Now
cFakturierung.getRgDatInput("", RechnungsDatumTMP)
End If
Dim list As New List(Of String) ' Sammlung PDFs
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
Dim path = ""
cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 4, path, cboPrinter.Text, cbxOriginalDrucken.Checked)
If path <> "" Then list.Add(path)
Next
If list.Count = 1 Then
Process.Start(list(0))
Else
Dim dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("VERAG_Formular.pdf", ".pdf", False, False)
If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
dest_path = "" : MsgBox("Fehler PDF")
Else
Process.Start(dest_path)
End If
End If
'merge PDFs path
initDGV()
End If
End If
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click, Button11.Click
' getDGV().RELOAD() -> hebt Selektierung auf
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
If r.Cells("Art").Value <> "0" Then
MsgBox("Nur bei Einzelrechnung")
Exit Sub
End If
Next
If dgvRechnungen.SelectedRows.Count = 1 Then
Try
Dim RECHNUNG As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(dgvRechnungen.SelectedRows(0).Cells("RK_ID").Value)
Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, RECHNUNG.SpeditionsbuchUnterNr)
If SPEDBUCH IsNot Nothing Then
'RG-Druck - Mail (+Kopie)
Dim RG_DRUCK = 2
If sender Is Button11 Then
RG_DRUCK = 5
End If
Dim f As New frmFaktEmail(RECHNUNG, SPEDBUCH, True, RG_DRUCK)
f.ShowDialog(Me)
End If
'merge PDFs path
initDGV()
Catch ex As Exception
MsgBox("Fehler beim Öffnen des Mail-Fensters!" & vbNewLine & vbNewLine & ex.StackTrace & ex.Message)
End Try
ElseIf dgvRechnungen.SelectedRows.Count > 1 Then
If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen ans Mail angefügt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
'Rechnungsdatum festlegen:
Dim RechnungsDatumTMP As Object = Nothing
If Not cbx.Checked Then 'GedruckteRechnugnen
RechnungsDatumTMP = Now
cFakturierung.getRgDatInput("", RechnungsDatumTMP)
End If
Dim list As New List(Of String) ' Sammlung PDFs
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
Dim path = ""
cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 4, path, cboPrinter.Text)
If path <> "" Then list.Add(path)
Next
Try
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Dim RechnungsLandKz = getSelection("RechnungsLandKz")
Select Case RechnungsLandKz
Case "TR"
Mail.Subject = "Rechnungen " & cboFirma.Text
Mail.HTMLBody = "Sayin Bayanlar ve Baylar,<br><br>ekte baslikta yazan faturayi bulabilirsinz."
Mail.HTMLBody &= "<br><br><br>Saygilarimizla<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
Case "A", "AT", "D", "DE", "CH"
Mail.Subject = "Rechnungen " & cboFirma.Text
Mail.HTMLBody = "Sehr geehrte Damen und Herren,<br><br>im Anhang senden wir Ihnen unsere Rechnungen."
Mail.HTMLBody &= "<br><br><br>Mit freundlichen Grüßen<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
Case Else
Mail.Subject = "Invoice " & cboFirma.Text
Mail.HTMLBody = "Sehr geehrte Damen und Herren,<br><br>attached we send you the invoices."
Mail.HTMLBody &= "<br><br><br>Best regards<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
End Select
Mail.HTMLBody = "<div style=""font-family:Calibri, Arial"">" & Mail.HTMLBody & "</div>"
Dim KdNrTmp = getSelectionKdNr()
Mail.To = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(If(IsNumeric(KdNrTmp), KdNrTmp, -1), "Rechnung an")
Mail.Display()
If list.Count > 0 Then
For Each l In list
Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Invoice.pdf")
Next
End If
Mail.Display()
Catch ex As Exception
MsgBox("Fehler beim Öffnen des Mail-Programmes. PDF wird geladen!" & vbNewLine & vbNewLine & ex.StackTrace & ex.Message)
If list.Count = 1 Then
Process.Start(list(0))
Else
Dim dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Invoice.pdf", ".pdf", False, False)
If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
dest_path = "" : MsgBox("Fehler PDF")
Else
Process.Start(dest_path)
End If
End If
End Try
'merge PDFs path
initDGV()
End If
End If
End Sub
Function getSelectionKdNr() As String
getSelectionKdNr = ""
If dgvRechnungen.SelectedRows.Count > 0 Then
If dgvRechnungen.SelectedRows.Count = dgvRechnungen.Rows.Count Then Return "" ' Alle ausgewählt
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
getSelectionKdNr &= r.Cells("RechnungsKundenNr").Value & ","
Next
getSelectionKdNr = getSelectionKdNr.Substring(0, getSelectionKdNr.Length - 1)
End If
End Function
Function getSelection(value) As String
getSelection = ""
If dgvRechnungen.SelectedRows.Count > 0 Then
getSelection = dgvRechnungen.SelectedRows(0).Cells(value).Value
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
If getSelection <> r.Cells(value).Value Then Return ""
Next
End If
End Function
Private Sub Button7_Click2(sender As Object, e As EventArgs) Handles Button7.Click
If dgvRechnungen.SelectedRows.Count > 0 Then
' getDGV().RELOAD() -> hebt Selektierung auf
If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
'Rechnungsdatum festlegen:
Dim RechnungsDatumTMP As Object = Nothing
If Not cbx.Checked Then 'GedruckteRechnugnen
RechnungsDatumTMP = Now
cFakturierung.getRgDatInput("", RechnungsDatumTMP)
End If
Dim PARAM_printZollbeleg = VERAG_PROG_ALLGEMEIN.cAllgemein.PARAMS.GET_PARAMETER_VALUE_BOOL("FAKTURIERUNG_PRINT_Zollbeleg")
For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 0, , cboPrinter.Text, cbxOriginalDrucken.Checked, , PARAM_printZollbeleg)
Next
'merge PDFs path
initDGV()
End If
End If
End Sub
Private Sub cbx_CheckedChanged(sender As Object, e As EventArgs) Handles cbx.CheckedChanged
cbxOriginalDrucken.Checked = False
If cbx.Checked Then
Panel1.Height = 170
cbxOriginalDrucken.Visible = True
Else
Panel1.Height = 80
cbxOriginalDrucken.Visible = False
End If
MyPanel1.Visible = cbx.Checked
initDGV()
End Sub
Dim MONAT As Date = CDate("01." & Now.Month & "." & Now.Year) '.AddMonths(-1)
Dim srcTAG As Date = CDate(Now.ToShortDateString)
Dim JAHR As Date = CDate("01.01." & Now.Year)
Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
txtAbfertDat._value = CDate(sender.value).ToShortDateString
End Sub
Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
txtAbfertDatBis._value = CDate(sender.value).ToShortDateString
End Sub
Sub initBtns(MonatJahr)
btnMonat.Text = MONAT.ToString("MMMM")
btnJahr.Text = JAHR.Year
Select Case MonatJahr
Case "Monat"
DateTimePicker1.Value = MONAT
DateTimePicker2.Value = MONAT.AddMonths(1).AddDays(-1)
Case "Jahr"
' If cbxGeschaftsjahr.Checked Then
'DateTimePicker1.Value = JAHR.AddMonths(1)
' DateTimePicker2.Value = JAHR.AddYears(1).AddMonths(1).AddDays(-1)
' Else
DateTimePicker1.Value = JAHR
DateTimePicker2.Value = JAHR.AddYears(1).AddDays(-1)
'End If
Case "Tag"
' If cbxGeschaftsjahr.Checked Then
'DateTimePicker1.Value = JAHR.AddMonths(1)
' DateTimePicker2.Value = JAHR.AddYears(1).AddMonths(1).AddDays(-1)
' Else
DateTimePicker1.Value = srcTAG
DateTimePicker2.Value = srcTAG
If srcTAG = Now.ToShortDateString Then
Button5.Text = "Heute"
ElseIf srcTAG = Now.AddDays(-1).ToShortDateString Then
Button5.Text = "Gestern"
ElseIf srcTAG = Now.AddDays(-2).ToShortDateString Then
Button5.Text = "Vorgestern"
Else
Button5.Text = srcTAG.ToString("dd.MM")
End If
'End If
Case ""
' DateTimePicker1.Value = ("01." & Now.Month & "." & Now.Year)
' DateTimePicker2.Value = Now
End Select
initDGV()
End Sub
Private Sub btnMonat_Click(sender As Object, e As EventArgs) Handles btnMonat.Click
initBtns("Monat")
End Sub
Private Sub btnJahr_Click(sender As Object, e As EventArgs) Handles btnJahr.Click
initBtns("Jahr")
End Sub
Private Sub btnBisMonat_Click(sender As Object, e As EventArgs) Handles btnBisMonat.Click
MONAT = MONAT.AddMonths(1)
initBtns("Monat")
End Sub
Private Sub btnVonMonat_Click(sender As Object, e As EventArgs) Handles btnVonMonat.Click
MONAT = MONAT.AddMonths(-1)
initBtns("Monat")
End Sub
Private Sub btnBisJahr_Click(sender As Object, e As EventArgs) Handles btnBisJahr.Click
JAHR = JAHR.AddYears(1)
initBtns("Jahr")
End Sub
Private Sub btnVonJahr_Click(sender As Object, e As EventArgs) Handles btnVonJahr.Click
JAHR = JAHR.AddYears(-1)
initBtns("Jahr")
End Sub
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
srcTAG = srcTAG.AddDays(-1)
initBtns("Tag")
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
initBtns("Tag")
End Sub
Private Sub txtAbfertDat_Leave(sender As Object, e As EventArgs) Handles txtAbfertDat.Leave, txtAbfertDatBis.Leave
initBtns("")
End Sub
Private Sub MyTextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles MyTextBox2.KeyDown, MyTextBox3.KeyDown
If e.KeyCode = Keys.Return Then
initBtns("")
End If
End Sub
Private Sub MyTextBox3_Leave(sender As Object, e As EventArgs) Handles MyTextBox2.Leave, MyTextBox3.Leave
initBtns("")
End Sub
Private Sub MyTextBox2_TextChanged(sender As Object, e As EventArgs) Handles MyTextBox2.TextChanged
MyTextBox3.Enabled = (MyTextBox2.Text <> "")
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnWiederholeRgDruck.Click
If Not ContextMenuStrip1.Items.ContainsKey("1") Then
Dim print = New ToolStripMenuItem() With {.Text = "Drucken", .Name = "1", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler print.Click, AddressOf mnuItem_Clicked
ContextMenuStrip1.Items.Add(print)
End If
If Not ContextMenuStrip1.Items.ContainsKey("2") Then
Dim mail = New ToolStripMenuItem() With {.Text = "E-Mail", .Name = "2", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
ContextMenuStrip1.Items.Add(mail)
AddHandler mail.Click, AddressOf mnuItem_Clicked
End If
If Not ContextMenuStrip1.Items.ContainsKey("3") Then
Dim pdf = New ToolStripMenuItem() With {.Text = "PDF", .Name = "3", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler pdf.Click, AddressOf mnuItem_Clicked
ContextMenuStrip1.Items.Add(pdf)
End If
ContextMenuStrip1.Show(Cursor.Position)
End Sub
Private Sub mnuItem_Clicked(sender As Object, e As EventArgs)
ContextMenuStrip1.Hide()
Dim id = 3 'default per PDF
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then id = item.Name
Dim SR_RechnungsNr = InputBox("SR-Nummer eingeben: ", "Rechnungsdruck - " & IIf(item.Text IsNot Nothing, item.Text, "PDF"))
If IsNumeric(SR_RechnungsNr) Then
Dim RK_ID = SQL.getValueTxtBySql("SELECT TOP 1 RK_ID FROM Rechnungsausgang WHERE RechnungsNr='" & SR_RechnungsNr & "' AND Firma_ID='" & cboFirma._value & "' ORDER BY DruckDatumZeit DESC", "FMZOLL")
If IsNumeric(RK_ID) Then
Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID)
If RG_TMP IsNot Nothing Then
'id mitübergeben (1_> drucken, 2 Email, 3 PDF)
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, , id,, True)
End If
End If
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim f As New frmFaktAufschubSuche(False)
f.Show(Me)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
srcTAG = srcTAG.AddDays(1)
initBtns("Tag")
End Sub
Private Sub cbxGutschriftenAnVerag_CheckedChanged(sender As Object, e As EventArgs) Handles cbxGutschriftenAnVerag.CheckedChanged
Panel1.Height = 80
cbxOriginalDrucken.Visible = False
MyPanel1.Visible = False
initDGV()
End Sub
End Class