Files
SDL/SDL/kunden/usrCntlOfferte.vb
2025-03-13 16:28:41 +01:00

941 lines
41 KiB
VB.net

Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
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 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()
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 " &
" 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 = False
' .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"
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
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],[LeistungsBez] 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
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 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 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
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)
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") 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
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
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 " &
" 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
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 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 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 Button2.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 sqlKostenkalk = " Select OffertenNr, isnull(LeistungsNr,'') as LeistungsNr,isnull(LeistungsBez,'' ) as LeistungsBez,isnull(Preis,'') as Preis,isnull([Geändert am],[Eingegeben am]) as Datum
FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440)
order by Preis desc"
Dim dtKostenkalk As DataTable = (New SQL).loadDgvBySql(sqlKostenkalk, "FMZOLL")
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"
Select Case FIRMA_TMP
Case "IMEX" : ExcelBez &= "_IMEX "
Case "VERAG" : ExcelBez &= "_AG "
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 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
Dim currentRow As Integer = 13
Dim DatumDerZollabf As String = SQL.getValueTxtBySql("select top(1) isnull([Geändert am],[Eingegeben am]) as Datum FROM [VERAG].[dbo].[Offertenpositionen] where KundenNr = " & kdNr & " and OffertenNr in (38, 1) and LeistungsNr in (340, 324, 348, 440) order by Preis desc", "FMZOLL")
For Each row In dtKostenkalk.Rows
Blatt.Range("A" & currentRow).Value = row("LeistungsBez")
Blatt.Range("B" & currentRow).Value = row("Preis")
If IsDate(DatumDerZollabf) Then
Select Case CDate(DatumDerZollabf).Year
'Berechnungssätze laut Johanna Luxbauer
Case 2018 : Blatt.Range("D" & currentRow).Value = 0.3387
Case 2019 : Blatt.Range("D" & currentRow).Value = 0.3048
Case 2020 : Blatt.Range("D" & currentRow).Value = 0.2792
Case 2021 : Blatt.Range("D" & currentRow).Value = 0.2597
Case 2022 : Blatt.Range("D" & currentRow).Value = 0.2207
Case 2023 : Blatt.Range("D" & currentRow).Value = 0.0997
Case 2024 : Blatt.Range("D" & currentRow).Value = 0.0394
Case 2025 : 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
.Visible = True
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
End Class