Files
SDL/SDL/Fakturierung/frmAbrechnungsMaske.vb

895 lines
42 KiB
VB.net

Imports System.IO
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
cboER_SR.Items.Clear()
cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Alle", ""))
cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ER", "ER"))
cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("SR", "SR"))
cboER_SR.changeItem("")
cboRechnungsdruck.Items.Clear()
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("POST", "0"))
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FAX", "1"))
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("E-MAIL", "2"))
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MAIL+KOPIE", "5"))
cboRechnungsdruck.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
'If Not IsDBNull(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) AndAlso CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) = 19 Then
' FirmaTmp = "VERAG360"
'End If
'If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
'FirmaTmp = "AMBAR"
'End If
cboSachbearbeiter.Items.Clear()
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
cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MSR", "MSR"))
cboFirma.fillWithSQL("Select [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
cboFirma.changeItem("1")
cboSachbearbeiter.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)
cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("*BAUBÖCK", "BAUBOECK"))
cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))
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")
cboSachbearbeiter.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")
cboSachbearbeiter.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")
cboSachbearbeiter.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")
cboSachbearbeiter.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) order by mit_username", False, "ADMIN", True)
'Case "VERAG360"
' cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=19", False, "FMZOLL")
' cboFirma.changeItem("19")
' MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where isnull(mit_firmaFMZoll,0)=19 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 "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
cboSachbearbeiter.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)
cboSachbearbeiter.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
cboSachbearbeiter.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
If cboSachbearbeiter._value = "" Then MsgBox("Keine Benutzerberechtigung gefunden!") : Exit Sub
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_AlleBenutzer", Me) Then
cboSachbearbeiter.Enabled = False
End If
KdSearchBox1.initKdBox(Me)
AddHandler KdSearchBox1.PropertyChanged, Sub()
Try
initDGV()
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
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 = ""
If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" AndAlso cboFirma._value = "24" Then
sqlstr &= " SELECT R1.FilialenNr, R1.AbfertigungsNr, cast(R1.FilialenNr as varchar) + ' ' + cast(R1.AbfertigungsNr as varchar) as PosNr, R1.UnterNr, Firma_ID,R1.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr FROM Rechnungsausgang as R1 INNER JOIN Adressen ON AdressenNr=R1.RechnungsKundenNr inner Join Speditionsbuch on Speditionsbuch.FilialenNr = R1.FilialenNr And Speditionsbuch.AbfertigungsNr = R1.AbfertigungsNr and Speditionsbuch.UnterNr = R1.SpeditionsbuchUnterNr "
sqlstr &= " WHERE 1=1 AND R1.Firma_ID=24 "
sqlstr &= getRGWhere(cboER_SR._value)
sqlstr &= " and (SELECT COUNT(*) FROM Rechnungsausgang as R2 where"
sqlstr &= " R1.FilialenNr=R2.FilialenNr and R1.AbfertigungsNr=R2.AbfertigungsNr and R1.SpeditionsbuchUnterNr=R2.SpeditionsbuchUnterNr AND (RechnungsKundenNr=3013401 OR RechnungsKundenNr = 3017683) and R2.[BelegartenNr]=71)=0"
sqlstr &= " and Speditionsbuch.Abfertigungsart IN (1)"
sqlstr &= " ORDER BY FilialenNr, AbfertigungsNr, UnterNr"
Else
' 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(cboER_SR._value)
' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
sqlstr &= " ORDER BY FilialenNr, AbfertigungsNr, UnterNr "
End If
.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
If Not cbxGutschriftenAnVerag.Checked Then
.Columns("Rechnungsdruck").Width = 60
.Columns("Rechnungsdruck").HeaderText = "Rg.Art"
.Columns("Rechnungsdruck").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
End If
.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 = cboSachbearbeiter._value
If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" AndAlso cboFirma._value = 24 Then Return sqlstr
Select Case filterSR
Case "ER" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (0) "
Case "SR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (0,6) "
Case "MSR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (6) "
Case Else : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (6) "
End Select
If cbx.Checked Then
'sqlstr &= " AND Status = 0 "
sqlstr &= " AND DruckDatumZeit BETWEEN '" & txtAbfertDat._value & " 00:00:00' AND '" & txtAbfertDatBis._value & " 23:59:59'"
sqlstr &= IIf(filterSR = "MSR", " And (Status = 4)", "")
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 &= IIf(filterSR = "MSR", " And ((Status = 0 or Status = 2) or DruckDatumZeit is null)", " And (Status = 0 or DruckDatumZeit is null) ")
End If
If cboRechnungsdruck._value <> "" Then
sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' "
End If
If srchSB <> "" Then sqlstr &= " And Rechnungsausgang.Sachbearbeiter='" & srchSB & "' "
If cboFirma._value <> "" Then sqlstr &= " AND Rechnungsausgang.Firma_ID=" & cboFirma._value & " "
If KdSearchBox1.KdNr_value > 0 Then sqlstr &= " AND Rechnungsausgang.RechnungsKundenNr=" & KdSearchBox1.KdNr_value & " "
' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
Return sqlstr
End Function
Private Sub MyComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedIndexChanged, cboSachbearbeiter.SelectedIndexChanged, cboER_SR.SelectedIndexChanged, cboRechnungsdruck.SelectedIndexChanged
If cboFirma._value = "24" Then
cbxGutschriftenAnVerag.Visible = True
Else
cbxGutschriftenAnVerag.Visible = False
cbxGutschriftenAnVerag.Checked = False
End If
If sender Is cboER_SR Then
lblKunde.Visible = cboER_SR._value = "MSR"
KdSearchBox1.Visible = cboER_SR._value = "MSR"
If KdSearchBox1.KdNr_value > 0 AndAlso cboER_SR._value <> "MSR" Then
KdSearchBox1.KdNr_value = -1
End If
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()
Dim emai_receipt As String = ""
If getSelection("FilialenNr") = "4801" Or getSelection("FilialenNr") = "4802" Then emai_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(If(IsNumeric(KdNrTmp), KdNrTmp, -1), "Rechnung an (ATILLA)")
Mail.To = IIf(emai_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(If(IsNumeric(KdNrTmp), KdNrTmp, -1), "Rechnung an"), emai_receipt)
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
ContextMenuStrip1.Items.Clear()
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
If cboFirma._value <> 19 Then 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)
Dim sammelrechnungskopieMDM As Boolean = False
Dim sammelrechnungMDMmitAnhang As Boolean = False
If RG_TMP IsNot Nothing Then
'id mitübergeben (1_> drucken, 2 Email, 3 PDF)
If RG_TMP.Sammelrechnung = 6 Then
If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True
Dim tempPDF As String = ""
Dim listOfCSV As New List(Of String)
sammelrechnungMDMmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNoCancel)
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungMDMmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)
Select Case id
Case 1
'aktuell keine Funktion PDF direkt zu drucken!
Case 2
Try
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Rechnung _" & RG_TMP.RechnungsNr & ".pdf")
If listOfCSV.Count > 0 Then
For Each r In listOfCSV
Dim file As New FileInfo(r)
Mail.Attachments.Add(r, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , file.Name)
Next
End If
Mail.Display()
Catch ex As Exception
MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
Process.Start(tempPDF)
End Try
Case 3 'PDF + öffnen
Process.Start(tempPDF)
End Select
Else
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, id,, True,,,,,,,,,)
End If
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
Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
Dim webAddress As String = "https://wiki.verag.ag/de/abteilungen/verrechnung/xxxx"
Process.Start(webAddress)
End Sub
End Class