Files
SDL/SDL/kunden/usrCntlOfferte.vb
2026-05-11 16:43:05 +02:00

1139 lines
51 KiB
VB.net
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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