1139 lines
51 KiB
VB.net
1139 lines
51 KiB
VB.net
|
||
Imports Microsoft.Office.Interop
|
||
Imports Microsoft.Office.Interop.Excel
|
||
Public Class usrCntlOfferte
|
||
|
||
Dim FUNC As New cProgramFunctions
|
||
Public kdNr As Integer = -1
|
||
Dim SQL As New SQL
|
||
Public KD_ERW As VERAG_PROG_ALLGEMEIN.cKundenErweitert
|
||
Public Event OfferteChanged()
|
||
|
||
|
||
Dim OFFERTEBind As cEasyBinding
|
||
Dim table
|
||
Public BIND_DB = "FMZOLL"
|
||
Dim tmpDataTable As New System.Data.DataTable
|
||
Dim currentOffert As VERAG_PROG_ALLGEMEIN.cOfferte
|
||
Dim currentOffertArchiv As VERAG_PROG_ALLGEMEIN.cOfferteArchiv
|
||
Dim edit As Boolean
|
||
Dim DGVHasChaged = False
|
||
Dim isStandard
|
||
Dim loaded = False
|
||
Dim isNew = False
|
||
Dim addLeistung = False
|
||
Dim ofID As Integer
|
||
Dim isVerag360 As Boolean = False
|
||
|
||
Sub New()
|
||
InitializeComponent()
|
||
End Sub
|
||
|
||
Sub New(kdNr)
|
||
InitializeComponent()
|
||
Me.kdNr = kdNr
|
||
End Sub
|
||
|
||
|
||
Public Sub init(kdNr As Integer, Optional _isVerag360 As Boolean = False)
|
||
Me.kdNr = kdNr
|
||
initDGVOfferte()
|
||
edit = False
|
||
handleEditMode(edit)
|
||
KD_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(kdNr)
|
||
cbxAutoFakturierung.Checked = KD_ERW.AutoFakturierung
|
||
isVerag360 = _isVerag360
|
||
|
||
End Sub
|
||
Sub initDGVOfferte()
|
||
dgvOfferteDetails.Columns.Clear()
|
||
|
||
Dim where As String = ""
|
||
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("VERIMEX", "AVISO") Then
|
||
where = " AND Offerten.OffertenNr IN (5,6,18,24,32,33,34,37,40,7,8,9,12,13) "
|
||
End If
|
||
|
||
|
||
With dgvOfferteNew
|
||
.DataSource = SQL.loadDgvBySql("SELECT Offerten.OffertenNr, cast(Offerten.OffertenNr as varchar(3)) + ' - ' + Offertenstamm.OffertenBez as OffertenBez ,Offerten.Besonderheiten FROM Offerten inner join Offertenstamm on [Offerten].OffertenNr=Offertenstamm.OffertenNr WHERE Offerten.KundenNr='" & kdNr & "' " & where & " ORDER BY Offerten.OffertenNr ", "FMZOLL")
|
||
.Columns("OffertenNr").Visible = False
|
||
.Columns("Besonderheiten").Visible = False
|
||
' .Columns("OffertenNr").HeaderText = "Nr"
|
||
.Columns("OffertenBez").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
||
.Columns("OffertenBez").HeaderText = "Bezeichnung"
|
||
End With
|
||
|
||
End Sub
|
||
|
||
|
||
Sub initDGVOfferteDetails(OffertenNr)
|
||
loaded = False
|
||
Try
|
||
|
||
With dgvOfferteDetails
|
||
'.Columns.Clear()
|
||
Dim SQLAddFields As String = ""
|
||
Dim addedFields As Boolean = addFieldsOffert(OffertenNr, SQLAddFields)
|
||
|
||
Try
|
||
OFFERTEBind = New cEasyBinding(BIND_DB)
|
||
OFFERTEBind.initBinding(" SELECT [LeistungsNr],[LeistungsBez],[BerechnungsartNr],[Preis],[Anzahl],[BGebLeistungsNr],[BGebProzent],[BGebMinBetrag],BerechnungsartPosInkludiert,[Eingegeben am],[Geändert am],[Sachbearbeiter],[PreisänderungProzent],[PreisAlt],[Preisänderung],KundenNr,OffertenNr" & SQLAddFields &
|
||
" FROM [Offertenpositionen] " &
|
||
" WHERE KundenNr='" & kdNr & "' and OffertenNr='" & OffertenNr & "' ORDER BY LeistungsNr, Preis DESC", "Offertenpositionen")
|
||
For Each c As DataColumn In OFFERTEBind.bindingdataTable.Columns
|
||
If c.ColumnName = "SSMA_TimeStamp" Then
|
||
OFFERTEBind.bindingdataTable.Columns.Remove(c)
|
||
Exit For
|
||
End If
|
||
Next
|
||
' KASSENBind.initBinding("SELECT * FROM " & table & "", table)
|
||
|
||
.DataSource = OFFERTEBind.bindingdataTable
|
||
' DataGridView.AutoSize = True
|
||
' OFFERTEBind.bindingdataTable.PrimaryKey = {OFFERTEBind.bindingdataTable.Columns("KundenNr"), OFFERTEBind.bindingdataTable.Columns("LeistungsNr"), OFFERTEBind.bindingdataTable.Columns("LeistungsNr"), OFFERTEBind.bindingdataTable.Columns("LeistungsBez")}
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
|
||
'.DataSource = SQL.loadDgvBySql(" SELECT [LeistungsNr],[LeistungsBez],[BerechnungsartNr],[Preis],[Anzahl],[BGebLeistungsNr],[BGebProzent],[BGebMinBetrag],[Eingegeben am],[Geändert am],[Sachbearbeiter],[PreisänderungProzent],[PreisAlt],[Preisänderung] " &
|
||
' " FROM [Offertenpositionen] " &
|
||
' " WHERE KundenNr='" & kdNr & "' and OffertenNr='" & OffertenNr & "' ORDER BY LeistungsNr ", "FMZOLL")
|
||
|
||
FUNC.dgvCellToCbo(dgvOfferteDetails, 2, "Berechnungsart", "BerechnungsartNr", " SELECT [BerechnungsartNr], CAST(BerechnungsartNr as varchar(3)) + ' - ' + [BerechnungsartBez] as [BerechnungsartBez] FROM [Berechnungsart] ORDER BY BerechnungsartNr ", "FMZOLL", 150)
|
||
FUNC.dgvCellToCbo(dgvOfferteDetails, 5, "BGebLeist.", "BGebLeistungsNr", " SELECT [LeistungsNr], CAST(LeistungsNr as varchar(3)) + ' - ' + [LeistungsBez] as LeistungsBez FROM [Leistungen] ORDER BY [LeistungsNr] ", "FMZOLL", 250)
|
||
|
||
checkPerimissionsDGVDetails()
|
||
|
||
.Columns("OffertenNr").Visible = False
|
||
.Columns("KundenNr").Visible = False
|
||
.Columns("LeistungsNr").Width = 30
|
||
.Columns("LeistungsNr").HeaderText = "Nr"
|
||
.Columns("LeistungsBez").MinimumWidth = 200
|
||
.Columns("LeistungsBez").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
||
.Columns("LeistungsBez").HeaderText = "Leistung"
|
||
.Columns("BerechnungsartNr").MinimumWidth = 150
|
||
.Columns("Preis").Width = 60
|
||
.Columns("Preis").DefaultCellStyle.Format = "N2"
|
||
.Columns("Preis").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Anzahl").Width = 50
|
||
.Columns("Anzahl").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
|
||
.Columns("BerechnungsartPosInkludiert").HeaderText = "Pos.inkl."
|
||
.Columns("BerechnungsartPosInkludiert").Width = 45
|
||
|
||
.Columns("BGebLeistungsNr").Width = 60
|
||
.Columns("BGebProzent").Width = 55
|
||
.Columns("BGebProzent").HeaderText = "BGeb %"
|
||
.Columns("BGebProzent").DefaultCellStyle.Format = "P"
|
||
.Columns("BGebProzent").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("BGebMinBetrag").Width = 60
|
||
.Columns("BGebMinBetrag").HeaderText = "BGebMinBetr."
|
||
.Columns("BGebMinBetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Eingegeben am").Visible = VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_DATIEREN", "SDL")
|
||
' .Columns("Sachbearbeiter").Visible = False
|
||
' .Columns("Geändert am").Visible = False
|
||
.Columns("PreisänderungProzent").Width = 70
|
||
.Columns("PreisänderungProzent").HeaderText = "Preisänd. %"
|
||
.Columns("PreisänderungProzent").DefaultCellStyle.Format = "p"
|
||
.Columns("PreisänderungProzent").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("PreisAlt").Width = 60
|
||
.Columns("PreisAlt").DefaultCellStyle.Format = "N2"
|
||
.Columns("PreisAlt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Preisänderung").Width = 60
|
||
.Columns("Preisänderung").HeaderText = "PreisNeu"
|
||
.Columns("Preisänderung").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
' .Columns("OffertenBez").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
||
' .Columns("OffertenBez").HeaderText = "Bezeichnung"
|
||
|
||
.Columns("PreisänderungProzent").Visible = False
|
||
.Columns("PreisAlt").Visible = False
|
||
.Columns("Preisänderung").Visible = False
|
||
|
||
|
||
If addedFields AndAlso .Columns.Contains("Land") Then
|
||
.Columns("Land").Width = 70
|
||
.Columns("Land").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("VZ").Width = 40
|
||
.Columns("VZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("RMC").Width = 40
|
||
.Columns("RMC").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("Fremd").Width = 40
|
||
.Columns("Fremd").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("Staffelpreis").Width = 80
|
||
.Columns("Staffelpreis").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
End If
|
||
|
||
loaded = True
|
||
End With
|
||
|
||
DGVHasChaged = False
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
Private Sub dgvOfferteDetails_SelectionChanged(sender As Object, e As EventArgs) Handles dgvOfferteNew.SelectionChanged
|
||
Try
|
||
|
||
|
||
cbxArchivierteOffertenAnzeigen.Checked = False
|
||
cbxArchivierteOfferten.Items.Clear()
|
||
checkPermissions()
|
||
If dgvOfferteNew.RowCount > 0 Then
|
||
If dgvOfferteNew.SelectedRows.Count > 0 Then
|
||
rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.SelectedRows(0).Cells("Besonderheiten").Value)
|
||
Else
|
||
rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferteNew.Rows(0).Cells("Besonderheiten").Value)
|
||
End If
|
||
Else
|
||
btnStandardLaden.Visible = False
|
||
cbxArchivierteOfferten.Enabled = False
|
||
rtbBesonderheiten.Text = ""
|
||
End If
|
||
|
||
btnSaveBes.Visible = False
|
||
|
||
If dgvOfferteNew.SelectedRows.Count > 0 Then
|
||
initDGVOfferteDetails(dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value)
|
||
End If
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
Private Sub usrCntlOfferte_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||
init(kdNr, isVerag360)
|
||
|
||
' sbLeistungAdd.initSearchBox(Me.FindForm, " [Code] ,[LeistungsNr],[LeistungsBez] FROM [Leistungen]", {"LeistungsNr", "LeistungsBez"}, " ", "LeistungsNr", "LeistungsNr", , "FMZOLL", , 400, 200)
|
||
cboLeistungenAdd.fillWithSQL("SELECT [LeistungsNr],Replace([LeistungsBez],'P.P./', '') FROM [Leistungen] ORDER BY LeistungsNr", , "FMZOLL", True)
|
||
|
||
checkPermissions()
|
||
|
||
|
||
'AddHandler OFFERTEBind.bindingdataTable.ColumnChanged, Sub(ev As EventArgs, change As DataColumnChangeEventArgs)
|
||
' ' If change.Column.ColumnName=""
|
||
' 'Dim r_index = dgvOfferteDetails.Rows.IndexOf(change.Row)
|
||
' 'Dim c_index = dgvOfferteDetails.Columns.IndexOf(change.Column.ColumnName)
|
||
' 'dgvOfferteDetails.Rows(change.Row)
|
||
|
||
' End Sub
|
||
|
||
End Sub
|
||
|
||
Private Sub btnCreateOffert_Click(sender As Object, e As EventArgs) Handles btnCreateOffert.Click
|
||
Dim f As New frmOffertenBearbeiten(kdNr)
|
||
If f.ShowDialog() = DialogResult.OK Then
|
||
init(kdNr, isVerag360) ' initDGVOfferte()
|
||
RaiseEvent OfferteChanged()
|
||
dgvOfferteNew.Enabled = True
|
||
isNew = True
|
||
isStandard = False
|
||
DGVHasChaged = True
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub btnAddLeistung_Click(sender As Object, e As EventArgs) Handles btnAddLeistung.Click
|
||
|
||
Try
|
||
|
||
Dim SQLsrt = " SELECT (select case when COUNT(*)>0 then 1 else 0 end FROM Offertenpositionen where KundenNr=" & kdNr & " and [Offertenpositionen].[OffertenNr]=[Offertenstamm].[OffertenNr]) as vorhanden," &
|
||
" [Offertenstamm].[OffertenNr],[OffertenBez] FROM Offertenstamm "
|
||
|
||
For Each r As DataRow In SQL.loadDgvBySql(SQLsrt, "FMZOLL").Rows
|
||
If Not CBool(r("vorhanden")) Then
|
||
Dim i As New ToolStripMenuItem
|
||
i.Text = r("OffertenNr") & " - " & r("OffertenBez")
|
||
i.Name = "tsmiOffertNr_" & r("OffertenNr")
|
||
i.Tag = r("OffertenNr")
|
||
cntxtAddSdl.Items.Add(i)
|
||
' If s.Sperre <> 0 Then i.Enabled = False : i.Text = i.Text & " (gesperrt)"
|
||
AddHandler i.Click, AddressOf AddOffert_Click
|
||
End If
|
||
Next
|
||
|
||
|
||
|
||
btnAddLeistung.ContextMenuStrip = cntxtAddSdl
|
||
' cntxtAddSdl
|
||
Dim ptLowerLeft As New System.Drawing.Point(sender.width, sender.Height)
|
||
ptLowerLeft = sender.PointToScreen(ptLowerLeft)
|
||
ptLowerLeft.X -= sender.width
|
||
cntxtAddSdl.Show(ptLowerLeft)
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub AddOffert_Click(sender As Object, e As EventArgs) Handles DToolStripMenuItem.Click
|
||
If sender.name.contains("tsmiOffertNr_") Then
|
||
' MsgBox(sender.name.ToString.Replace("tsmiSDLNr_", ""))
|
||
Dim OffertenNr As String = sender.tag
|
||
|
||
|
||
End If
|
||
|
||
End Sub
|
||
|
||
|
||
Private Sub btnHinzufuegen_Click_1(sender As Object, e As EventArgs) Handles btnHinzufuegen.Click
|
||
|
||
Try
|
||
|
||
|
||
If edit = False Then
|
||
MsgBox("Bitte vorher in den Editiermodus wechseln")
|
||
Exit Sub
|
||
End If
|
||
lblLeistunAddErr.Visible = False
|
||
lblLeistunAddErr2.Visible = False
|
||
Label3.Visible = False
|
||
|
||
If dgvOfferteNew.SelectedRows.Count <> 1 Then
|
||
Label3.Visible = True
|
||
End If
|
||
'Fehlerprüfung:
|
||
'-------
|
||
If cboLeistungenAdd._value = "" Then lblLeistunAddErr.Visible = True : Exit Sub
|
||
If LeistungsBezexists(cboLeistungenAdd._value, MyTextBox1.Text, dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value) Then lblLeistunAddErr2.Visible = True : Exit Sub
|
||
'-------
|
||
|
||
Dim l As New VERAG_PROG_ALLGEMEIN.cLeistungen(cboLeistungenAdd._value)
|
||
Dim o As New VERAG_PROG_ALLGEMEIN.cOffertPosition
|
||
o.KundenNr = kdNr
|
||
o.LeistungsNr = l.LeistungsNr
|
||
o.LeistungsBez = MyTextBox1.Text
|
||
o.OffertenNr = dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value
|
||
'o.Preis=l.preis
|
||
o.BerechnungsartNr = l.BerechnungsartNr
|
||
'o.Anzahl = l.m
|
||
'o.BGebLeistungsNr = l.BGebUStV
|
||
'o.BGebProzent = l.XXXXXXXXXX
|
||
'o.BGebMinBetrag = l.XXXXXXXXXX
|
||
o.Eingegeben_am = Now
|
||
'o.Geändert_am = l.XXXXXXXXXX
|
||
o.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
||
'o.Preisänderung = l.Preissperre
|
||
'o.PreisänderungProzent = l.XXXXXXXXXX
|
||
'o.PreisAlt = l.XXXXXXXXXX
|
||
If o.INSERT() Then
|
||
cboLeistungenAdd.changeItem("")
|
||
initDGVOfferteDetails(o.OffertenNr)
|
||
addLeistung = True
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Function LeistungsBezexists(LeistungsNr, LeistungsBez, OffertenNr)
|
||
Return (SQL.getValueTxtBySql("SELECT COUNT(*) From Offertenpositionen WHERE LeistungsNr='" & LeistungsNr & "' AND LeistungsBez='" & LeistungsBez & "' AND OffertenNr='" & OffertenNr & "' AND KundenNr='" & kdNr & "'", "FMZOLL") > 0)
|
||
End Function
|
||
|
||
Private Sub cboLeistungenAdd_KeyDown(sender As Object, e As KeyEventArgs) Handles cboLeistungenAdd.KeyDown, MyTextBox1.KeyDown
|
||
If e.KeyCode = Keys.Return Then
|
||
btnHinzufuegen.PerformClick()
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub cboLeistungenAdd_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboLeistungenAdd.SelectedIndexChanged
|
||
If cboLeistungenAdd._value <> "" Then
|
||
MyTextBox1.Text = cboLeistungenAdd.Text.ToString.Replace(cboLeistungenAdd._value & " - ", "").Trim()
|
||
Else
|
||
MyTextBox1.Text = ""
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Private Sub dgvOfferteDetails_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgvOfferteDetails.CellValueChanged
|
||
Try
|
||
|
||
If loaded = True Then
|
||
dgvOfferteDetails.Rows(e.RowIndex).Cells("Sachbearbeiter").Value = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
||
dgvOfferteDetails.Rows(e.RowIndex).Cells("Geändert am").Value = Now
|
||
DGVHasChaged = True
|
||
'saveCurrentOffert()
|
||
If isNew Then
|
||
currentOffert.Art = "Neuanlage"
|
||
Else
|
||
currentOffert.Art = "Geändert"
|
||
End If
|
||
currentOffert.SAVE()
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
Private Sub btnDeleteOfferte_Click(sender As Object, e As EventArgs) Handles btnDeleteOfferte.Click
|
||
Try
|
||
|
||
If dgvOfferteNew.SelectedRows.Count = 1 Then
|
||
If vbYes = MsgBox("Möchten Sie das Offert '" & dgvOfferteNew.SelectedRows(0).Cells("OffertenBez").Value & "' wirklich löschen", vbYesNoCancel) Then
|
||
saveCurrentOffert()
|
||
currentOffert.Art = "Offert gelöscht"
|
||
currentOffert.SAVE()
|
||
OfferteArchivieren()
|
||
If SQL.doSQL("DELETE FROM Offerten where [KundenNr]='" & kdNr & "' AND [OffertenNr]='" & dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value & "' ", "FMZOLL") Then
|
||
initDGVOfferte()
|
||
RaiseEvent OfferteChanged()
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub btnOfferteSpeichern_Click(sender As Object, e As EventArgs) Handles btnOfferteSpeichern.Click
|
||
Try
|
||
|
||
KD_ERW.AutoFakturierung = cbxAutoFakturierung.Checked
|
||
KD_ERW.SAVE()
|
||
|
||
checkPerimissionsDGVDetails()
|
||
edit = False
|
||
handleEditMode(edit)
|
||
saveToArchive()
|
||
|
||
OFFERTEBind.updateBinding()
|
||
RaiseEvent OfferteChanged()
|
||
DGVHasChaged = False
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
Private Sub btnOffertbearbeiten_Click(sender As Object, e As EventArgs) Handles btnOffertbearbeiten.Click
|
||
|
||
edit = True
|
||
handleEditMode(edit)
|
||
checkPerimissionsDGVDetails()
|
||
saveCurrentOffert()
|
||
|
||
End Sub
|
||
|
||
Private Sub OfferteArchivieren(Optional Art As String = "")
|
||
|
||
Try
|
||
|
||
currentOffertArchiv = New VERAG_PROG_ALLGEMEIN.cOfferteArchiv()
|
||
currentOffertArchiv.KundenNr = currentOffert.KundenNr
|
||
currentOffertArchiv.FilialenNr = currentOffert.FilialenNr
|
||
currentOffertArchiv.OffertenNr = currentOffert.OffertenNr
|
||
currentOffertArchiv.Standardofferte = currentOffert.Standardofferte
|
||
currentOffertArchiv.Besonderheiten = currentOffert.Besonderheiten
|
||
currentOffertArchiv.Eingegeben_am = currentOffert.Eingegeben_am
|
||
currentOffertArchiv.Geändert_am = currentOffert.Geändert_am
|
||
currentOffertArchiv.Sachbearbeiter = currentOffert.Sachbearbeiter
|
||
currentOffertArchiv.SSMA_TimeStamp = currentOffert.SSMA_TimeStamp
|
||
currentOffertArchiv.Gesperrt = currentOffert.Gesperrt
|
||
currentOffertArchiv.Gesperrt_Datum = currentOffert.Gesperrt_Datum
|
||
currentOffertArchiv.Gesperrt_Grund = currentOffert.Gesperrt_Grund
|
||
currentOffertArchiv.Art = currentOffert.Art
|
||
ofID = currentOffertArchiv.SAVERETURNID()
|
||
|
||
If ofID > 0 Then
|
||
For Each row As DataRow In tmpDataTable.Rows
|
||
If tmpDataTable.Rows.Count = 0 Then Exit Sub
|
||
Dim oP As New VERAG_PROG_ALLGEMEIN.cOffertPositionArchiv
|
||
oP.OfID = ofID
|
||
oP.KundenNr = currentOffertArchiv.KundenNr
|
||
oP.LeistungsNr = row("LeistungsNr")
|
||
oP.LeistungsBez = row("LeistungsBez")
|
||
oP.OffertenNr = currentOffertArchiv.OffertenNr
|
||
oP.BerechnungsartNr = row("BerechnungsartNr")
|
||
oP.Preis = row("Preis")
|
||
oP.Anzahl = row("Anzahl")
|
||
oP.BGebLeistungsNr = row("BGebLeistungsNr")
|
||
oP.BGebProzent = row("BGebProzent")
|
||
oP.BGebMinBetrag = row("BGebMinBetrag")
|
||
oP.Eingegeben_am = row("Eingegeben am")
|
||
oP.Geändert_am = row("Geändert am")
|
||
oP.Sachbearbeiter = row("Sachbearbeiter")
|
||
oP.Preisänderung = row("Preisänderung")
|
||
oP.PreisänderungProzent = row("PreisänderungProzent")
|
||
oP.PreisAlt = row("PreisAlt")
|
||
oP.BerechnungsartPosInkludiert = row("BerechnungsartPosInkludiert")
|
||
oP.INSERT()
|
||
Next
|
||
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub btnStandardLaden_Click(sender As Object, e As EventArgs) Handles btnStandardLaden.Click
|
||
|
||
Try
|
||
|
||
|
||
Dim KUNDE As New VERAG_PROG_ALLGEMEIN.cKunde(kdNr)
|
||
Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(kdNr)
|
||
Dim FIRMA_TMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KUNDE.FilialenNr)
|
||
|
||
If Not vbYes = MsgBox("Möchten Sie die Standardofferte für den Kunden " & KUNDE.KundenNr & " laden?" & vbNewLine & "Aktuelle Offerteneinstellungen werden gelöscht.", vbYesNo) Then Exit Sub
|
||
|
||
Dim SPRACHE As String = "DE"
|
||
|
||
If FIRMA_TMP = "VERAG" Then
|
||
If KUNDE_ERW IsNot Nothing AndAlso KUNDE_ERW.kde_Fakturierung_Sprache IsNot Nothing AndAlso KUNDE_ERW.kde_Fakturierung_Sprache <> "" AndAlso KUNDE.FilialenNr = 8001 AndAlso (KUNDE.KundenNrZentrale <> 140000 And KUNDE.KundenNrZentrale <> 150000 And KUNDE.KundenNrZentrale <> 180000) Then
|
||
If vbYes = MsgBox("Möchten Sie die Standardofferte in der Fakturierungssprache des Kunden (" & KUNDE_ERW.kde_Fakturierung_Sprache & ") einfügen ", vbYesNo) Then
|
||
SPRACHE = KUNDE_ERW.kde_Fakturierung_Sprache
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
|
||
edit = True
|
||
handleEditMode(edit)
|
||
saveCurrentOffert()
|
||
|
||
If SQL.doSQL("DELETE FROM Offerten where [KundenNr]='" & kdNr & "' AND [OffertenNr]='" & dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value & "' ", "FMZOLL") Then
|
||
isStandard = True
|
||
isNew = True
|
||
currentOffert.Art = "Neuer Standard erstellt"
|
||
currentOffert.SAVE()
|
||
currentOffert.LOAD_POSITIONEN()
|
||
If currentOffert.POSITIONEN.Count = 0 Then '
|
||
currentOffert.RESET_STANDARTOFFERTEN_FIRMA(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME, FIRMA_TMP, SPRACHE)
|
||
End If
|
||
|
||
dgvOfferteNew.GetOrder()
|
||
initDGVOfferte()
|
||
dgvOfferteNew.SetOrder()
|
||
RaiseEvent OfferteChanged()
|
||
isStandard = True
|
||
isNew = True
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
Private Sub cbxArchivierteOfferten_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxArchivierteOfferten.SelectedIndexChanged
|
||
If cbxArchivierteOffertenAnzeigen.Checked = False Then Exit Sub
|
||
If cbxArchivierteOfferten._value = "" Then Exit Sub
|
||
|
||
If cbxArchivierteOffertenAnzeigen.Checked = True Then
|
||
edit = False
|
||
handleEditMode(edit)
|
||
lblArchivierteOfferten.Visible = True
|
||
|
||
Dim ofId As Integer
|
||
|
||
ofId = CInt(cbxArchivierteOfferten._value)
|
||
|
||
initDGVOfferteDetailsArchived(ofId)
|
||
|
||
End If
|
||
checkPerimissionsDGVDetails()
|
||
|
||
|
||
End Sub
|
||
|
||
Private Sub cbxArchivierteOffertenAnzeigen_CheckedChanged(sender As Object, e As EventArgs) Handles cbxArchivierteOffertenAnzeigen.CheckedChanged
|
||
|
||
If dgvOfferteNew.SelectedRows.Count = 0 Then Exit Sub
|
||
|
||
If cbxArchivierteOffertenAnzeigen.Checked Then
|
||
cbxArchivierteOfferten.SelectedIndex = -1
|
||
cbxArchivierteOfferten.Items.Clear()
|
||
cbxArchivierteOfferten.Visible = True
|
||
cbxArchivierteOfferten.fillWithSQL("SELECT OfID, CONVERT(VARCHAR(24),[Archiviert am],20) +' - '+ Art as Archivierungsoffert FROM [tblOffertenArchiv] WHERE KundenNr='" & kdNr & "' and OffertenNr='" & dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value & "'", False, "FMZOLL", True)
|
||
btnOffertbearbeiten.Visible = False
|
||
|
||
Else
|
||
lblArchivierteOfferten.Visible = False
|
||
cbxArchivierteOfferten.Visible = False
|
||
initDGVOfferteDetails(dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value)
|
||
btnOffertbearbeiten.Visible = True
|
||
End If
|
||
End Sub
|
||
|
||
|
||
Private Sub checkPerimissionsDGVDetails()
|
||
|
||
Try
|
||
With dgvOfferteDetails
|
||
|
||
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_BEARBEITEN", "SDL") Then
|
||
For Each c As DataGridViewColumn In .Columns
|
||
c.ReadOnly = True
|
||
handleEditMode(False)
|
||
Next
|
||
dgvOfferteDetails.AllowUserToDeleteRows = False
|
||
Else
|
||
|
||
For Each c As DataGridViewColumn In .Columns
|
||
|
||
If isVerag360 Then
|
||
If (c.Name = "Preis" Or c.Name = "LeistungsBez" Or c.Name = "Anzahl" Or c.Name = "BerechnungsartNr" Or c.Name = "BerechnungsartPosInkludiert" Or c.Name = "BGebLeistungsNr" Or c.Name = "BGebProzent" Or c.Name = "BGebMinBetrag" Or c.Name = "Land" Or c.Name = "VZ" Or c.Name = "RMC" Or c.Name = "Fremd" Or c.Name = "Staffelpreis") Then
|
||
If edit Then
|
||
c.ReadOnly = False
|
||
handleEditMode(edit)
|
||
Else
|
||
c.ReadOnly = True
|
||
handleEditMode(edit)
|
||
End If
|
||
Else
|
||
c.ReadOnly = True
|
||
|
||
End If
|
||
Else
|
||
If (c.Name = "Preis" Or c.Name = "LeistungsBez" Or c.Name = "Anzahl" Or c.Name = "BerechnungsartNr" Or c.Name = "BerechnungsartPosInkludiert") Then
|
||
If edit Then
|
||
c.ReadOnly = False
|
||
handleEditMode(edit)
|
||
Else
|
||
c.ReadOnly = True
|
||
handleEditMode(edit)
|
||
End If
|
||
Else
|
||
c.ReadOnly = True
|
||
|
||
End If
|
||
|
||
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_DATIEREN", "SDL") Then
|
||
|
||
If (c.Name = "Eingegeben am") Then
|
||
If edit Then
|
||
c.ReadOnly = False
|
||
handleEditMode(edit)
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
|
||
|
||
Next
|
||
dgvOfferteDetails.AllowUserToDeleteRows = edit
|
||
End If
|
||
|
||
End With
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
End Sub
|
||
|
||
Private Sub initDGVOfferteDetailsArchived(OffertenId)
|
||
Try
|
||
|
||
|
||
|
||
loaded = False
|
||
DGVHasChaged = False
|
||
|
||
Dim addFields As String = ""
|
||
|
||
Dim OffNR As Integer = -1
|
||
|
||
OffNR = CInt(SQL.getValueTxtBySql("SELECT TOP(1) OffertenNr from tblOffertenArchiv where OfID = " & OffertenId, "FMZOLL"))
|
||
|
||
Dim addedFields As Boolean = addFieldsOffert(OffNR, addFields)
|
||
|
||
With dgvOfferteDetails
|
||
.Columns.Clear()
|
||
|
||
OFFERTEBind = New cEasyBinding(BIND_DB)
|
||
OFFERTEBind.initBinding(" SELECT [LeistungsNr],[LeistungsBez],[BerechnungsartNr],[Preis],[Anzahl],[BGebLeistungsNr],[BGebProzent],[BGebMinBetrag],BerechnungsartPosInkludiert,[Eingegeben am],[Geändert am],[Sachbearbeiter],[PreisänderungProzent],[PreisAlt],[Preisänderung],KundenNr,OffertenNr " & addFields &
|
||
" FROM [tblOffertenpositionenArchiv] " &
|
||
" WHERE OfId='" & OffertenId & "' ORDER BY LeistungsNr, Preis DESC", "tblOffertenpositionenArchiv")
|
||
|
||
.DataSource = OFFERTEBind.bindingdataTable
|
||
|
||
|
||
|
||
|
||
FUNC.dgvCellToCbo(dgvOfferteDetails, 2, "Berechnungsart", "BerechnungsartNr", " SELECT [BerechnungsartNr], CAST(BerechnungsartNr as varchar(3)) + ' - ' + [BerechnungsartBez] as [BerechnungsartBez] FROM [Berechnungsart] ORDER BY BerechnungsartNr ", "FMZOLL", 150)
|
||
FUNC.dgvCellToCbo(dgvOfferteDetails, 5, "BGebLeist.", "BGebLeistungsNr", " SELECT [LeistungsNr], CAST(LeistungsNr as varchar(3)) + ' - ' + [LeistungsBez] as LeistungsBez FROM [Leistungen] ORDER BY [LeistungsNr] ", "FMZOLL", 250)
|
||
|
||
|
||
checkPerimissionsDGVDetails()
|
||
|
||
.Columns("OffertenNr").Visible = False
|
||
.Columns("KundenNr").Visible = False
|
||
.Columns("LeistungsNr").Width = 30
|
||
.Columns("LeistungsNr").HeaderText = "Nr"
|
||
.Columns("LeistungsBez").MinimumWidth = 200
|
||
.Columns("LeistungsBez").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
||
.Columns("LeistungsBez").HeaderText = "Leistung"
|
||
.Columns("BerechnungsartNr").MinimumWidth = 150
|
||
.Columns("Preis").Width = 60
|
||
.Columns("Preis").DefaultCellStyle.Format = "N2"
|
||
.Columns("Preis").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Anzahl").Width = 50
|
||
.Columns("Anzahl").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("BerechnungsartPosInkludiert").HeaderText = "Pos.inkl."
|
||
.Columns("BerechnungsartPosInkludiert").Width = 45
|
||
.Columns("BGebLeistungsNr").Width = 60
|
||
.Columns("BGebProzent").Width = 55
|
||
.Columns("BGebProzent").HeaderText = "BGeb %"
|
||
.Columns("BGebProzent").DefaultCellStyle.Format = "P"
|
||
.Columns("BGebProzent").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("BGebMinBetrag").Width = 60
|
||
.Columns("BGebMinBetrag").HeaderText = "BGebMinBetr."
|
||
.Columns("BGebMinBetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Eingegeben am").Visible = False
|
||
.Columns("PreisänderungProzent").Width = 70
|
||
.Columns("PreisänderungProzent").HeaderText = "Preisänd. %"
|
||
.Columns("PreisänderungProzent").DefaultCellStyle.Format = "P"
|
||
.Columns("PreisänderungProzent").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("PreisAlt").Width = 60
|
||
.Columns("PreisAlt").DefaultCellStyle.Format = "N2"
|
||
.Columns("PreisAlt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
.Columns("Preisänderung").Width = 60
|
||
.Columns("Preisänderung").HeaderText = "PreisNeu"
|
||
.Columns("Preisänderung").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
|
||
|
||
If addedFields Then
|
||
.Columns("Land").Width = 70
|
||
.Columns("VZ").Width = 40
|
||
.Columns("VZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("RMC").Width = 40
|
||
.Columns("RMC").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
.Columns("Fremd").Width = 70
|
||
.Columns("Fremd").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
|
||
End If
|
||
|
||
|
||
loaded = True
|
||
End With
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub saveCurrentOffert()
|
||
Try
|
||
|
||
|
||
dgvOfferteNew.Enabled = False
|
||
currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value, False)
|
||
Dim orgDataTable As System.Data.DataTable = dgvOfferteDetails.DataSource
|
||
tmpDataTable = orgDataTable.Copy
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
End Sub
|
||
|
||
Private Sub checkPermissions()
|
||
|
||
|
||
|
||
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_BEARBEITEN", "SDL") Then
|
||
pnlEdit.Visible = False
|
||
pnlSperre.Visible = False
|
||
btnCreateOffert.Visible = False
|
||
dgvOfferteNew.ReadOnly = True
|
||
btnOffertbearbeiten.Visible = False
|
||
btnStandardLaden.Visible = False
|
||
cbxArchivierteOfferten.Enabled = False
|
||
Else
|
||
dgvOfferteDetails.AllowUserToAddRows = True
|
||
dgvOfferteDetails.AllowUserToDeleteRows = True
|
||
dgvOfferteDetails.RowHeadersVisible = True
|
||
btnOffertbearbeiten.Visible = True
|
||
btnStandardLaden.Visible = True
|
||
cbxArchivierteOfferten.Enabled = True
|
||
cbxArchivierteOffertenAnzeigen.Visible = True
|
||
|
||
|
||
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_LOESCHEN", "SDL") Then
|
||
btnDeleteOfferte.Visible = True
|
||
End If
|
||
End If
|
||
|
||
|
||
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KOSTENKALKULATION_OFFERTE", "SDL") Then
|
||
pnlKostenkalkulation.Visible = False
|
||
Else
|
||
pnlKostenkalkulation.Visible = True
|
||
End If
|
||
|
||
If dgvOfferteNew.SelectedRows.Count = 0 Then
|
||
|
||
btnOffertbearbeiten.Visible = False
|
||
btnStandardLaden.Visible = False
|
||
cbxArchivierteOffertenAnzeigen.Visible = False
|
||
|
||
End If
|
||
|
||
End Sub
|
||
|
||
Private Sub handleEditMode(isInEditMode As Boolean)
|
||
|
||
If isInEditMode Then
|
||
lblEditMode.Visible = True
|
||
cbxArchivierteOffertenAnzeigen.Enabled = False
|
||
cbxArchivierteOffertenAnzeigen.Checked = False
|
||
dgvOfferteNew.Enabled = False
|
||
dgvOfferteDetails.ReadOnly = False
|
||
btnOfferteSpeichern.Enabled = True
|
||
Else
|
||
lblEditMode.Visible = False
|
||
cbxArchivierteOffertenAnzeigen.Enabled = True
|
||
dgvOfferteNew.Enabled = True
|
||
dgvOfferteDetails.ReadOnly = True
|
||
btnOfferteSpeichern.Enabled = False
|
||
End If
|
||
End Sub
|
||
|
||
|
||
Private Sub saveToArchive()
|
||
Try
|
||
|
||
|
||
|
||
If isNew = False AndAlso isStandard = False Or isNew AndAlso isStandard = False Then 'Neuanlage oder Anlage über "Standardoffert laden" speichern,
|
||
If DGVHasChaged = False Then Exit Sub
|
||
End If
|
||
|
||
If isStandard Then
|
||
If isNew Then
|
||
OfferteArchivieren()
|
||
isNew = False
|
||
|
||
End If
|
||
isStandard = False
|
||
Else
|
||
|
||
If DGVHasChaged Then
|
||
If isNew = False Then
|
||
OfferteArchivieren()
|
||
Exit Sub
|
||
|
||
Else
|
||
If isNew Then
|
||
OfferteArchivieren()
|
||
isNew = False
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
|
||
|
||
End Sub
|
||
|
||
Private Sub dgvOfferteDetails_UserDeletingRow(sender As Object, e As DataGridViewRowCancelEventArgs) Handles dgvOfferteDetails.UserDeletingRow
|
||
DGVHasChaged = True
|
||
End Sub
|
||
|
||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||
cProgramFunctions.genExcelFromDGV_NEW(dgvOfferteDetails, True)
|
||
End Sub
|
||
|
||
Private Sub dgvOfferteDetails_KeyUp(sender As Object, e As KeyEventArgs) Handles dgvOfferteDetails.KeyUp
|
||
If e.KeyCode = Keys.Tab Then
|
||
|
||
|
||
dgvOfferteDetails.CurrentCell = GetNextCell(dgvOfferteDetails.CurrentCell)
|
||
e.Handled = True
|
||
|
||
End If
|
||
|
||
|
||
End Sub
|
||
|
||
Private Function GetNextCell(currentCell As DataGridViewCell) As DataGridViewCell
|
||
|
||
Dim i As Integer = 0
|
||
Dim nextCell As DataGridViewCell = currentCell
|
||
Dim j = 0
|
||
Do
|
||
Dim nextCellIndex As Integer = (nextCell.ColumnIndex + j) Mod dgvOfferteDetails.ColumnCount
|
||
Dim nextRowIndex As Integer = If(nextCellIndex = 0, (nextCell.RowIndex + 1) Mod dgvOfferteDetails.RowCount, nextCell.RowIndex)
|
||
lblOffert.Text = "C" & nextCellIndex & "R" & nextRowIndex & "RO" & IIf(nextCell.[ReadOnly], "1", "0") & "H" & IIf(Not nextCell.Visible, "1", "0")
|
||
nextCell = dgvOfferteDetails.Rows(nextRowIndex).Cells(nextCellIndex)
|
||
i += 1
|
||
j = 1
|
||
Loop While (i < (dgvOfferteDetails.RowCount * dgvOfferteDetails.ColumnCount) AndAlso (nextCell.[ReadOnly]) Or i < (dgvOfferteDetails.RowCount * dgvOfferteDetails.ColumnCount) AndAlso Not nextCell.Visible)
|
||
|
||
Return nextCell
|
||
|
||
End Function
|
||
|
||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnKK.Click, btnKK_Mail.Click
|
||
|
||
Me.Cursor = Cursors.WaitCursor
|
||
Try
|
||
Dim Path = ""
|
||
If True Then
|
||
|
||
|
||
Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(kdNr)
|
||
Dim ADR As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNr)
|
||
Dim FIRMA_TMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KD.FilialenNr)
|
||
Dim FirmaID As Integer = -1
|
||
|
||
If dgvOfferteDetails.Rows.Count = 0 Then Exit Sub
|
||
|
||
Dim dtKostenkalk As System.Data.DataTable = cProgramFunctions.dgridViewTods(dgvOfferteDetails)
|
||
|
||
If dtKostenkalk.Rows.Count < 1 Then
|
||
MsgBox("keine Daten!")
|
||
Me.Cursor = Cursors.Default
|
||
Exit Sub
|
||
End If
|
||
|
||
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\"
|
||
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
|
||
My.Computer.FileSystem.CreateDirectory(sPath)
|
||
End If
|
||
|
||
|
||
Dim exclApp As Object 'as Application
|
||
Dim Datei As Object 'as WorkBook
|
||
Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet
|
||
exclApp = CreateObject("Excel.Application")
|
||
|
||
Dim ExcelBez = "Kostenkalkulation"
|
||
|
||
Dim offertenNr As Integer = dtKostenkalk.Rows(0).Item("OffertenNr")
|
||
If (offertenNr = 26 Or offertenNr = 38) AndAlso FIRMA_TMP <> "UNISPED" Then FIRMA_TMP = "CS"
|
||
|
||
Select Case FIRMA_TMP
|
||
Case "IMEX" : ExcelBez &= "_IMEX_" : FirmaID = 20
|
||
Case "VERAG" : ExcelBez &= "_AG_" : FirmaID = 1
|
||
Case "UNISPED" : ExcelBez &= "_UNISPED_" : FirmaID = 21
|
||
Case "CS" : ExcelBez &= "_CS " : FirmaID = 11
|
||
Case Else : ExcelBez &= " "
|
||
End Select
|
||
|
||
With exclApp
|
||
.Visible = False
|
||
|
||
Try
|
||
Path = sPath & ExcelBez & kdNr & " .xlsx"
|
||
While System.IO.File.Exists(Path)
|
||
Path = sPath & ExcelBez & kdNr & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
|
||
End While
|
||
|
||
|
||
|
||
Select Case FIRMA_TMP
|
||
Case "IMEX" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_IMEX, False)
|
||
Case "VERAG" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_AG, False)
|
||
Case "UNISPED" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_UNI, False)
|
||
Case "CS" : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation_CS, False)
|
||
Case Else : My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Kostenkalkulation, False)
|
||
End Select
|
||
|
||
|
||
|
||
Catch ex As System.Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
Me.Cursor = Cursors.Default
|
||
|
||
Exit Sub
|
||
End Try
|
||
|
||
Datei = .Workbooks.Open(Path) 'Anpassen
|
||
Blatt = Datei.Worksheets(1) 'Anpassen
|
||
|
||
|
||
Blatt.Range("B8").Value = ADR.Name_1
|
||
Blatt.Range("B9").Value = ADR.AdressenNr
|
||
|
||
|
||
Blatt.Range("H11").Value = "Tarif für " & Today().Year
|
||
|
||
Blatt.Range("D11").Value = Blatt.Range("D11").Value.ToString.Replace("2025", Today().Year)
|
||
|
||
Dim currentRow As Integer = 13
|
||
|
||
Dim dtkeineMdtKostenkalk_mitPreise As System.Data.DataTable = dtKostenkalk.Select("Preis <> ''").CopyToDataTable
|
||
dtkeineMdtKostenkalk_mitPreise.Columns.Add("price_new", System.Type.GetType("System.Int32"))
|
||
|
||
Dim DatumDerZollabf As String = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Geändert am")
|
||
|
||
If DatumDerZollabf = "" Then DatumDerZollabf = dtkeineMdtKostenkalk_mitPreise.Rows(0).Item("Eingegeben am")
|
||
|
||
If IsDate(DatumDerZollabf) Then Blatt.Range("B11").Value = "aktueller Tarif " & CDate(DatumDerZollabf).Year
|
||
|
||
For Each row In dtkeineMdtKostenkalk_mitPreise.Rows
|
||
row("price_new") = CDbl(row("Preis"))
|
||
Next
|
||
|
||
dtkeineMdtKostenkalk_mitPreise.DefaultView.Sort = "price_new desc"
|
||
dtkeineMdtKostenkalk_mitPreise = dtkeineMdtKostenkalk_mitPreise.DefaultView.ToTable
|
||
|
||
For Each row In dtkeineMdtKostenkalk_mitPreise.Rows
|
||
|
||
Blatt.Range("A" & currentRow).Value = row("LeistungsBez")
|
||
Blatt.Range("B" & currentRow).Value = CDbl(row("Preis"))
|
||
|
||
|
||
If IsDate(DatumDerZollabf) Then
|
||
|
||
Select Case CDate(DatumDerZollabf).Year
|
||
'Berechnungssätze laut Johanna Luxbauer
|
||
Case 2018 : Blatt.Range("D" & currentRow).Value = 0.3782
|
||
Case 2019 : Blatt.Range("D" & currentRow).Value = 0.3433
|
||
Case 2020 : Blatt.Range("D" & currentRow).Value = 0.317
|
||
Case 2021 : Blatt.Range("D" & currentRow).Value = 0.2969
|
||
Case 2022 : Blatt.Range("D" & currentRow).Value = 0.2567
|
||
Case 2023 : Blatt.Range("D" & currentRow).Value = 0.1321
|
||
Case 2024 : Blatt.Range("D" & currentRow).Value = 0.0701
|
||
Case 2025 : Blatt.Range("D" & currentRow).Value = 0.0295
|
||
Case 2026 : Blatt.Range("D" & currentRow).Value = 0
|
||
Case Else
|
||
Blatt.Range("D" & currentRow).Value = ""
|
||
End Select
|
||
|
||
Else
|
||
Blatt.Range("D" & currentRow).Value = ""
|
||
End If
|
||
currentRow = currentRow + 1
|
||
Next
|
||
|
||
Datei.Save
|
||
|
||
Select Case sender.name
|
||
Case "btnKK_Mail"
|
||
|
||
|
||
exclApp.Visible = False
|
||
|
||
' Datei öffnen
|
||
|
||
|
||
' Als PDF exportieren
|
||
Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(ExcelBez & kdNr & ".pdf", ".pdf", , False)
|
||
|
||
Datei.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, tmpPath_Report, XlFixedFormatQuality.xlQualityStandard, True, False)
|
||
|
||
|
||
|
||
Dim outl As New Outlook.Application
|
||
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
|
||
Mail = outl.CreateItem(0)
|
||
|
||
Mail.To = ADR.E_Mail
|
||
|
||
|
||
Dim TextHTML = ""
|
||
TextHTML &= "Sehr geehrte Damen und Herren,<br>
|
||
<br>wir möchten uns für die gute Zusammenarbeit mit Ihrem Unternehmen herzlich bedanken.<br>
|
||
<br>Unsere Aufwendungen für Mitarbeitende, IT-Systeme und Betriebskosten sind Jahr für Jahr gestiegen, so dass wir nicht umhin kommen, unsere Verzollungssätze entsprechend anzupassen.<br>
|
||
<br>Ihr Verständnis ist uns wichtig und deshalb möchten wir Ihnen die Einflussfaktoren erläutern:<br><br>
|
||
<ul>
|
||
<li>Personalkostenerhöhungen in der Branche</li>
|
||
<li>Verlagerung der Aufgaben von der Zollverwaltung zu den Spediteuren</li>
|
||
<li>Verschärfte gesetzliche Bestimmungen (CBAM, NCTS5,..)</li>
|
||
<li>Permanente Updates der elektronischen Zollsysteme</li>
|
||
<li>Fortlaufende Weiterbildung unserer Zollsachbearbeitenden</li>
|
||
<li>Verlängerte Öffnungszeiten</li>
|
||
<li>Inflation, Wirtschaftskrise</li>
|
||
<li>Gestiegene Energiekosten, Versorgungskosten</li>
|
||
</ul>
|
||
<br>
|
||
Beiliegend erhalten Sie eine Aufstellung mit den angepassten Abfertigungssätzen, gültig ab <b> 01. Juni 2026.</b><br>
|
||
Wir haben nur die tatsächlichen Personalkostenerhöhungen zum Ansatz genommen. <br>
|
||
Dass durch die gesetzlich verschärften Bestimmungen der Zeitaufwand beträchtlich gestiegen ist und damit die Abfertigungszahlen pro Person entsprechend gesunken sind, haben wir bei der Preiskalkulation nicht berücksichtigt. <br>
|
||
Diesen Mehraufwand versuchen wir durch Einsparungsmaßnahmen mit modernster Software und Produktionsverbesserungen wett zu machen.<br><br>
|
||
Wir bedanken uns für Ihr Verständnis und werden uns auch weiterhin bemühen Ihnen ein zuverlässiger Partner zu sein."
|
||
TextHTML &= "<br>"
|
||
TextHTML &= "<br>"
|
||
TextHTML &= "Mit freundlichen Grüßen<br>"
|
||
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
|
||
TextHTML &= "<br>"
|
||
TextHTML &= cFakturierung.getSignature("DE", FirmaID, True, True)
|
||
|
||
Mail.HTMLBody = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>"
|
||
Mail.Subject = "Preiserhöhung " & Today().Year
|
||
Mail.Attachments.Add(tmpPath_Report)
|
||
Mail.Display()
|
||
|
||
|
||
|
||
Case Else
|
||
|
||
.Visible = True
|
||
|
||
End Select
|
||
|
||
|
||
|
||
End With
|
||
|
||
End If
|
||
Catch ex As Exception
|
||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||
End Try
|
||
Me.Cursor = Cursors.Default
|
||
End Sub
|
||
|
||
Private Function addFieldsOffert(ByRef OffertenNr As Integer, ByRef fields As String)
|
||
|
||
If OffertenNr = 14 Or OffertenNr = 15 Or OffertenNr = 31 Then
|
||
fields = ", MDM_Land as Land, MDM_VZ as VZ, MDM_RMC as RMC, MDM_Fremd as Fremd, MDM_Preisstaffel as Staffelpreis "
|
||
Return True
|
||
End If
|
||
Return False
|
||
|
||
End Function
|
||
|
||
Private Sub rtbBesonderheiten_TextChanged(sender As Object, e As EventArgs) Handles rtbBesonderheiten.TextChanged
|
||
btnSaveBes.Visible = True
|
||
End Sub
|
||
|
||
Private Sub btnSaveBes_Click(sender As Object, e As EventArgs) Handles btnSaveBes.Click
|
||
|
||
Dim OfferenNr = -1
|
||
If dgvOfferteNew.RowCount > 0 Then
|
||
If dgvOfferteNew.SelectedRows.Count > 0 Then
|
||
|
||
OfferenNr = cSqlDb.checkNullStr(dgvOfferteNew.SelectedRows(0).Cells("OffertenNr").Value)
|
||
|
||
Else
|
||
OfferenNr = cSqlDb.checkNullStr(dgvOfferteNew.Rows(0).Cells("OffertenNr").Value)
|
||
End If
|
||
|
||
If OfferenNr > 0 AndAlso kdNr > 0 Then
|
||
If SQL.doSQL("update [Offerten] set [Besonderheiten] = '" & rtbBesonderheiten.Text & "' where KundenNr = " & kdNr & " and OffertenNr = " & OfferenNr, "FMZOLL") Then
|
||
initDGVOfferte()
|
||
End If
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
|
||
End Sub
|
||
|
||
Private Sub btnOffertPreisliste_Click(sender As Object, e As EventArgs) Handles btnOffertPreisliste.Click
|
||
|
||
MsgBox("Noch nicht implementiert!")
|
||
|
||
End Sub
|
||
|
||
End Class
|