Files
SDL/SDL/Fakturierung/frmAbrechnungsMaske.vb

1362 lines
62 KiB
VB.net

Imports System.IO
Imports GrapeCity.ActiveReports.PageReportModel
Imports iText.IO.Util
Imports Microsoft.Office.Interop
Imports sun.net.www.protocol
Imports VERAG_PROG_ALLGEMEIN
Public Class frmAbrechnungsMaske
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim selChangedAllowed = True
Dim loaded = False
Dim FilialNrRestriction As Integer = -1
Dim setDefaultAutoMailversand As Boolean = VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AUTOMAILVERSAND", "SDL")
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.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AUTO-MAIL", "6"))
cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AUTO-MAIL + KOPIE", "7"))
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")
txtRechnungsdatumAutomail.Text = Today.ToShortDateString
'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
txtRechnungsdatumAutomail.Visible = setDefaultAutoMailversand
dtp_RD_automail.Visible = setDefaultAutoMailversand
lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand
'FirmaTmp = "AMBAR"
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
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG", "SDL") Then
whereFirma &= " OR Firma_ID=1 "
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 "ATILLA"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=7", False, "FMZOLL")
cboFirma.changeItem("7")
cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where isnull(mit_firmaFMZoll,0)=7 and mit_gekuendigt=0 AND (mit_FakturierungsGruppe IN ('ATL') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=199 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
FilialNrRestriction = 4813
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
cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))
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("DANIEL", "DANIEL"))
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 Rechnungsausgang.Rechnungsdatum, isnull(R1.RechnungsNr,'-') as ReNr, R1.FilialenNr, R1.AbfertigungsNr, cast(R1.FilialenNr as varchar) + ' ' + cast(R1.AbfertigungsNr as varchar) as PosNr, R1.UnterNr, Firma_ID,R1.Sammelrechnung as Art,RechnungsKundenNr, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz 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, FilialNrRestriction)
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 cast(isnull(Automailversand_sent, 0) as bit) as AUTO_sent,Rechnungsausgang.Rechnungsdatum, isnull(Rechnungsausgang.RechnungsNr,'-') as ReNr, FilialenNr, AbfertigungsNr, cast(FilialenNr as varchar) + ' ' + cast(AbfertigungsNr as varchar) as PosNr,UnterNr, Firma_ID,Rechnungsausgang.Sammelrechnung as Art,RechnungsKundenNr, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz, ReErfZeitstempel"
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, isnull(BelegartenKz, '') as BelegartenKz "
sqlstr &= " FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=Rechnungsausgang.RechnungsKundenNr"
sqlstr &= " WHERE 1=1 "
sqlstr &= getRGWhere(cboER_SR._value, FilialNrRestriction)
' 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("RechnungsKundenNr").Visible = True
.Columns("RechnungsKundenNr").Width = 75
.Columns("RechnungsKundenNr").HeaderText = "KdNr"
.Columns("Rechnungsdatum").Visible = False
.Columns("ReErfZeitstempel").Visible = False
.Columns("PosNr").HeaderText = "Pos-Nr."
If .Columns.Contains("BelegartenKz") Then
.Columns("BelegartenKz").Visible = False
End If
If .Columns.Contains("ReNr") Then
If cbx.Checked Then
.Columns("ReNr").Visible = True
Else
.Columns("ReNr").Visible = False
End If
End If
If .Columns.Contains("AUTO_sent") Then
.Columns("AUTO_sent").Width = 40
If (cboRechnungsdruck._value <> "6" AndAlso cboRechnungsdruck._value <> "7") Then
.Columns("AUTO_sent").Visible = False
Else
.Columns("AUTO_sent").Visible = True
End If
End If
.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
If cboFirma._value <> "" AndAlso cboFirma._value = "19" Then
.Columns("RechnungsLandKz").HeaderText = "Land"
.Columns("RechnungsLandKz").Width = 50
.Columns("RechnungsLandKz").Visible = True
For Each r In .Rows
If r.Cells("Betrag").Value IsNot DBNull.Value AndAlso IsNumeric(r.Cells("Betrag").Value) Then
Select Case r.Cells("BelegartenKz").Value.ToString
Case "AR" : If r.Cells("Betrag").Value < 0 Then
r.DefaultCellStyle.ForeColor = Color.Red
Else
r.DefaultCellStyle.ForeColor = Color.Black
End If
Case "AG" : If r.Cells("Betrag").Value < 0 Then
r.DefaultCellStyle.ForeColor = Color.Red
Else
r.DefaultCellStyle.ForeColor = Color.Black
End If
End Select
End If
Next
End If
End With
End Sub
Function getRGWhere(filterSR As String, Optional filialenNr As Integer = -1)
Dim sqlstr = ""
Dim srchSB = "" ' "NÖBAUER ANJA" 'VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
Dim enableAUTOMAIL As Boolean = True
Dim enableAUTOMAIL_BTN As Boolean = False
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) " : enableAUTOMAIL = False
Case "MSR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (6) " : enableAUTOMAIL = False
Case Else : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (6) " : enableAUTOMAIL = False
End Select
If filialenNr > 0 Then
sqlstr &= " AND Rechnungsausgang.FilialenNr = " & filialenNr
End If
If cbx.Checked Then
enableAUTOMAIL = False
'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
Select Case cboRechnungsdruck._value
Case 6 : sqlstr &= " And Rechnungsdruck='2' And isnull(Automailversand,0)=1 " : enableAUTOMAIL_BTN = True
Case 7 : sqlstr &= " And Rechnungsdruck='5' And isnull(Automailversand,0)=1 " : enableAUTOMAIL_BTN = True
Case 2 : sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0" : enableAUTOMAIL_BTN = False
Case 5 : sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0" : enableAUTOMAIL_BTN = False
Case Else
sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0 " : enableAUTOMAIL = False
End Select
Else
enableAUTOMAIL = False
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 & " "
'UsrCntlFaktAbrechnung1.cbxAUTOMailversand.Enabled = enableAUTOMAIL
btn_doMailAutoversand.Visible = enableAUTOMAIL_BTN AndAlso enableAUTOMAIL
txtMailanzeigen.Visible = enableAUTOMAIL_BTN AndAlso enableAUTOMAIL
cbxMailoeffnen.Visible = enableAUTOMAIL_BTN AndAlso enableAUTOMAIL
Button11.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
Button7.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
Button8.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
Button9.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
' 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 = True 'cboER_SR._value = "MSR"
KdSearchBox1.Visible = True 'cboER_SR._value = "MSR"
'If KdSearchBox1.KdNr_value > 0 AndAlso cboER_SR._value <> "MSR" Then 'KdSearchBox1.KdNr_value > 0 AndAlso cboER_SR._value <> "MSR"
' KdSearchBox1.KdNr_value = -1
'End If
If KdSearchBox1.KdNr_value > 0 Then
KdSearchBox1.KdNr_value = -1
End If
End If
If cboRechnungsdruck._value <> "" Then
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
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", FilialNrRestriction) & 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)
ElseIf r("Rechnungsdruck") = "6" OrElse r("Rechnungsdruck") = "7" Then
'AUTO-MAIL- diese überspringen!
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", FilialNrRestriction) & " 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, RECHNUNG.Firma_ID)
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
If Not ContextMenuStrip1.Items.ContainsKey("4") Then
Dim mail = New ToolStripMenuItem() With {.Text = "E-Mail mit Anlagen", .Name = "4", .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("5") Then
Dim pdf = New ToolStripMenuItem() With {.Text = "PDF mit Anlagen", .Name = "5", .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 sammelrechnungmitAnhang As Boolean = False
If id > 3 Then
sammelrechnungmitAnhang = True
id = id - 2
End If
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
If RG_TMP IsNot Nothing Then
Dim tempPDF As String = ""
Dim listOfCSV As New List(Of String)
If RG_TMP.Sammelrechnung = 6 Then
If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungmitAnhang, 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
' sammelrechnungmitAnhang = MsgBox("Soll die Sammelrechnung mit Anhang angezeigt werden?", vbYesNo)
Select Case id
Case 1
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 3, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
Case 2
Try
Dim dt_temp As New DataTable
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,, listOfCSV,,,, dt_temp)
Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(RG_TMP.RechnungsKundenNr)
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Dim auto As New cAutomailversand
Dim oAccount As Outlook.Account
Dim accountToSent = ""
accountToSent = auto.setAccountToSend(RG_TMP.Firma_ID)
If accountToSent <> "" Then
If outl.Session.Accounts.Count > 0 Then
For Each oAccount In outl.Session.Accounts
If oAccount.SmtpAddress.ToLower = accountToSent.ToLower Then
Mail.SendUsingAccount = oAccount
Exit For
End If
Next
End If
End If
setEmailText(RG_TMP.RechnungsLandKz, RG_TMP.Firma_ID, RG_TMP.RechnungsNr, Mail.Subject, Mail.HTMLBody, RG_TMP.Sammelrechnung, RG_TMP.BelegartenNr)
setandcheckEmpfaengerMail_SR(dt_temp, AD, Mail.To, Mail.CC, Mail.BCC, RG_TMP.Firma_ID, RG_TMP.Sammelrechnung)
Dim anhangbezeichnung = getAnhangbezeichnung(AD.LandKz, RG_TMP, RG_TMP.BelegartenNr)
Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , RG_TMP.RechnungsNr & "_" & anhangbezeichnung)
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
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
Process.Start(tempPDF)
End Select
End If
End If
Else
MsgBox("Bei " & cboFirma.SelectedItem.Text & " existiert keine Sammelrechnung mit der Nr: " & SR_RechnungsNr & "")
End If
End If
End Sub
Private Sub setEmailText(RechnungsLandKz As String, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String, ByRef SammelrechungArt As Integer, ByRef BelegartenNr As Integer)
Dim txtRgNr As String = IIf(RechnungsNr < 0, -1, RechnungsNr)
Dim Mailtext As String
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID)
Dim spracheRechnung As String = "EN" 'Defaultsprache
Dim belegtyp As String = If(BelegartenNr = 71, "credit note", "invoice")
Select Case RechnungsLandKz
Case "TR" : spracheRechnung = "TR" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "Kredi", "Fatura")
Case "RO"
If Firma_ID = 19 Then
spracheRechnung = "RO" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "nota de credit", "factura")
End If
Case "DE", "A", "AT", "D", "CH" : spracheRechnung = "DE" : belegtyp = If(BelegartenNr = 71, "Gutschrift", "Rechnung")
Case "SRB", "HR", "SLO", "BIH", "MNE", "MK", "MO"
If Firma_ID = 19 Then
spracheRechnung = "SRB" : belegtyp = If(BelegartenNr = 71, "credit note", "invoice") 'Belegarten auf Englisch!
End If
End Select
If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then
Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung)
If r IsNot Nothing Then
Subject = r.txt_betreff
Subject = Subject.Replace("%BelegNr%", txtRgNr)
Subject = Subject.Replace("%Belegtyp%", belegtyp)
TextHTML &= r.txt_text
If Mailtext <> "" Then TextHTML &= Mailtext
TextHTML &= vbNewLine & vbNewLine
TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp)
End If
End If
TextHTML &= "<br>"
TextHTML &= "<br>"
Select Case RechnungsLandKz
Case "TR"
TextHTML &= "Saygilarimizla<br>"
Case "A", "AT", "D", "DE", "CH"
TextHTML &= "Mit freundlichen Grüßen<br>"
Case Else
TextHTML &= "Best regards<br>"
End Select
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br><br>"
TextHTML &= cFakturierung.getSignature(RechnungsLandKz, Firma_ID, True, True,,,,,, True)
End Sub
Private Function getAnhangbezeichnung(sprache As String, RECHNUNG As cRechnungsausgang, BelegartenNr As Integer, Optional onlyBelegsuebersetzung As Boolean = False)
Dim Anhangsbez = ""
If RECHNUNG IsNot Nothing Then
Select Case sprache
Case "A", "AT", "D", "DE", "CH"
If BelegartenNr = 71 Then
If onlyBelegsuebersetzung Then
Anhangsbez = "Gutschrift.pdf"
Else
Anhangsbez = "Gutschriftsanhaenge.pdf"
End If
Else
If onlyBelegsuebersetzung Then
Anhangsbez = "Rechnung.pdf"
Else
Anhangsbez = "Rechnungsanhaenge.pdf"
End If
End If
Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Kredi.pdf" Else Anhangsbez = "Fatura.pdf"
Case Else : If BelegartenNr = 71 Then Anhangsbez = "Creditnote.pdf" Else Anhangsbez = "Invoice.pdf"
End Select
Else
Select Case sprache
Case "A", "AT", "D", "DE", "CH" : If BelegartenNr = 71 Then Anhangsbez = "Sammelgutschrift.pdf" Else Anhangsbez = "Sammelrechnung.pdf"
Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Toplukredi.pdf" Else Anhangsbez = "Toplufatura.pdf"
Case Else : If BelegartenNr = 71 Then Anhangsbez = "Collectivecreditnote.pdf" Else Anhangsbez = "Collectiveinvoice.pdf"
End Select
End If
Return Anhangsbez
End Function
Public Shared Function setandcheckEmpfaengerMail_SR(ByRef SR_DT As DataTable, ByRef AD As cAdressen, ByRef EMAILTMP As String, ByRef EMAILTMPCC As String, ByRef EMAILTMPBCC As String, ByRef FirmaID As Integer, ByRef SammelrechungArt As String) As String
If SammelrechungArt <> 6 Then
Dim email_receipt As String = ""
Dim allAtilla = IIf(FirmaID = 7, True, False)
If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then
For Each r In SR_DT.Rows
If "4801" <> r("FilialenNr") And "4802" <> r("FilialenNr") Then
allAtilla = False
Exit For
End If
Next
End If
email_receipt = IIf(allAtilla, VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)"), "")
EMAILTMP = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an"), email_receipt) 'VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an")
EMAILTMPCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
EMAILTMPBCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
Else
If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
End If
If EMAILTMP = "" And EMAILTMPCC = "" And EMAILTMPBCC = "" Then
If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
End If
Return EMAILTMP & EMAILTMPCC
End Function
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
Private Sub btn_doMailAutoversand_Click(sender As Object, e As EventArgs) Handles btn_doMailAutoversand.Click
Dim printAfterSent As Boolean = False
If cboRechnungsdruck._value = "7" Then printAfterSent = True
If dgvRechnungen.SelectedRows.Count > 0 Then
If Not cAutomailversand.automRechnungsversand_durchführen(printAfterSent) Then Exit Sub
Dim ListOfRK_ID As New List(Of Integer)
Dim noRE_NR = dgvRechnungen.SelectedRows.Cast(Of DataGridViewRow)().Any(Function(r) r.Cells("RENR").Value Is Nothing OrElse IsDBNull(r.Cells("RENR").Value) OrElse Not IsNumeric(r.Cells("RENR").Value))
Dim noRE_date = dgvRechnungen.SelectedRows.Cast(Of DataGridViewRow)().Any(Function(r) r.Cells("Rechnungsdatum").Value Is Nothing OrElse IsDBNull(r.Cells("Rechnungsdatum").Value))
If noRE_NR Then MsgBox("ACHTUNG, RechnungsNr wurde nicht gesetzt." & vbNewLine & "Vorgang wird abgebrochen!") : Exit Sub
If noRE_date Then MsgBox("ACHTUNG, Rechnungsdatum wurde nicht gesetzt." & vbNewLine & "Vorgang wird abgebrochen!") : Exit Sub
Dim selectedRows = dgvRechnungen.SelectedRows.Cast(Of DataGridViewRow)
Select Case cboSort._value
Case "EZ"
selectedRows = selectedRows.OrderBy(
Function(r)
Dim value = r.Cells("ReErfZeitstempel").Value
Return If(value Is Nothing OrElse IsDBNull(value),
DateTime.MinValue,
Convert.ToDateTime(value))
End Function
)
Case Else
selectedRows = selectedRows _
.OrderBy(Function(r) r.Cells("FilialenNr").Value) _
.ThenBy(Function(r) r.Cells("AbfertigungsNr").Value) _
.ThenBy(Function(r) r.Cells("RK_ID").Value)
End Select
For Each row As DataGridViewRow In selectedRows
If row.Cells("RK_ID").Value IsNot DBNull.Value AndAlso IsNumeric(row.Cells("RK_ID").Value) Then
ListOfRK_ID.Add(CInt(row.Cells("RK_ID").Value))
End If
Next
Dim fun As New cAutomailversand
Dim ShowInfo As String = ""
fun.sendMailEinzelrechnungen(cboFirma._value, Today(), cbxMailoeffnen.Checked, cboSachbearbeiter._value, ListOfRK_ID, cbxMailoeffnen.Checked, ShowInfo)
If ShowInfo.Contains("Empfänger") Then
MsgBox(ShowInfo)
End If
initDGV()
If printAfterSent Then
For Each row In ListOfRK_ID
cFakturierung.doRechnungsDruck(row,,, 1,, cboPrinter.Text)
Next
End If
If cbxMailoeffnen.Checked Then
ShowInfo = ""
End If
If ShowInfo <> "" Then
MsgBox(ShowInfo)
End If
End If
End Sub
Private Sub txtRechnungsdatumAutomail_TextChanged(sender As Object, e As EventArgs) Handles txtRechnungsdatumAutomail.TextChanged
If txtRechnungsdatumAutomail._value <> "" AndAlso IsDate(txtRechnungsdatumAutomail._value) Then
UsrCntlFaktAbrechnung1.automail_rechnungsdatum = CDate(txtRechnungsdatumAutomail._value)
End If
End Sub
Private Sub dtp_RD_automail_ValueChanged(sender As Object, e As EventArgs) Handles dtp_RD_automail.ValueChanged
If CDate(sender.value).AddDays(-4) > Today() Then
MsgBox("Rechnungen können max. 4 Tage vordatiert werden!")
txtRechnungsdatumAutomail._value = Today
Else
txtRechnungsdatumAutomail._value = CDate(sender.value).ToShortDateString
End If
End Sub
End Class