Feature: Offertenlogik
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
Imports System.Web.UI.WebControls.Expressions
|
||||
Imports DocumentFormat.OpenXml.Presentation
|
||||
|
||||
|
||||
Imports TAlex.WPF.Helpers
|
||||
|
||||
Public Class usrCntlOfferte
|
||||
|
||||
@@ -15,8 +16,10 @@ Public Class usrCntlOfferte
|
||||
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 = False
|
||||
Dim loaded = False
|
||||
|
||||
Sub New()
|
||||
@@ -33,6 +36,7 @@ Public Class usrCntlOfferte
|
||||
Me.kdNr = kdNr
|
||||
initDGVOfferte()
|
||||
edit = False
|
||||
handleEditMode(edit)
|
||||
KD_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(kdNr)
|
||||
cbxAutoFakturierung.Checked = KD_ERW.AutoFakturierung
|
||||
|
||||
@@ -60,6 +64,7 @@ Public Class usrCntlOfferte
|
||||
|
||||
Sub initDGVOfferteDetails(OffertenNr)
|
||||
loaded = False
|
||||
DGVHasChaged = False
|
||||
With dgvOfferteDetails
|
||||
'.Columns.Clear()
|
||||
|
||||
@@ -92,23 +97,7 @@ Public Class usrCntlOfferte
|
||||
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)
|
||||
|
||||
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_BEARBEITEN", "SDL") Then
|
||||
For Each c As DataGridViewColumn In .Columns
|
||||
c.ReadOnly = True
|
||||
Next
|
||||
Else
|
||||
For Each c As DataGridViewColumn In .Columns
|
||||
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
|
||||
Else
|
||||
c.ReadOnly = True
|
||||
End If
|
||||
Else
|
||||
c.ReadOnly = True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
checkPerimissionsDGVDetails()
|
||||
|
||||
.Columns("OffertenNr").Visible = False
|
||||
.Columns("KundenNr").Visible = False
|
||||
@@ -159,9 +148,15 @@ Public Class usrCntlOfferte
|
||||
|
||||
|
||||
Private Sub dgvOfferteDetails_SelectionChanged(sender As Object, e As EventArgs) Handles dgvOfferte.SelectionChanged
|
||||
isStandard = False
|
||||
cbxArchivierteOffertenAnzeigen.Checked = False
|
||||
checkPermissions()
|
||||
If dgvOfferte.RowCount > 0 Then
|
||||
|
||||
rtbBesonderheiten.Text = cSqlDb.checkNullStr(dgvOfferte.Rows(0).Cells("Besonderheiten").Value)
|
||||
Else
|
||||
btnStandardLaden.Visible = False
|
||||
cbxArchivierteOfferten.Enabled = False
|
||||
rtbBesonderheiten.Text = ""
|
||||
End If
|
||||
|
||||
@@ -180,26 +175,7 @@ Public Class usrCntlOfferte
|
||||
' 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)
|
||||
|
||||
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_BEARBEITEN", "SDL") Then
|
||||
pnlEdit.Visible = False
|
||||
pnlSperre.Visible = False
|
||||
btnCreateOffert.Visible = False
|
||||
dgvOfferte.ReadOnly = True
|
||||
fbtnBearbeiten.Visible = False
|
||||
btnStandardLaden.Visible = False
|
||||
Else
|
||||
dgvOfferteDetails.AllowUserToAddRows = True
|
||||
dgvOfferteDetails.AllowUserToDeleteRows = True
|
||||
dgvOfferteDetails.RowHeadersVisible = True
|
||||
fbtnBearbeiten.Visible = True
|
||||
btnStandardLaden.Visible = True
|
||||
|
||||
|
||||
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_LOESCHEN", "SDL") Then
|
||||
btnDeleteOfferte.Visible = True
|
||||
End If
|
||||
End If
|
||||
|
||||
checkPermissions()
|
||||
|
||||
|
||||
'AddHandler OFFERTEBind.bindingdataTable.ColumnChanged, Sub(ev As EventArgs, change As DataColumnChangeEventArgs)
|
||||
@@ -262,6 +238,10 @@ Public Class usrCntlOfferte
|
||||
|
||||
|
||||
Private Sub btnHinzufuegen_Click_1(sender As Object, e As EventArgs) Handles btnHinzufuegen.Click
|
||||
If edit = False Then
|
||||
MsgBox("Bitte vorher in den Editiermodus wechseln")
|
||||
Exit Sub
|
||||
End If
|
||||
lblLeistunAddErr.Visible = False
|
||||
lblLeistunAddErr2.Visible = False
|
||||
Label3.Visible = False
|
||||
@@ -324,6 +304,7 @@ Public Class usrCntlOfferte
|
||||
dgvOfferteDetails.Rows(e.RowIndex).Cells("Sachbearbeiter").Value = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
||||
dgvOfferteDetails.Rows(e.RowIndex).Cells("Geändert am").Value = Now
|
||||
End If
|
||||
DGVHasChaged = True
|
||||
|
||||
End Sub
|
||||
|
||||
@@ -342,8 +323,9 @@ Public Class usrCntlOfferte
|
||||
KD_ERW.AutoFakturierung = cbxAutoFakturierung.Checked
|
||||
KD_ERW.SAVE()
|
||||
edit = False
|
||||
dgvOfferte.Enabled = True
|
||||
|
||||
handleEditMode(edit)
|
||||
checkPerimissionsDGVDetails()
|
||||
If isStandard = False Then OfferteArchivieren()
|
||||
OFFERTEBind.updateBinding()
|
||||
RaiseEvent OfferteChanged()
|
||||
End Sub
|
||||
@@ -351,22 +333,38 @@ Public Class usrCntlOfferte
|
||||
Private Sub fbtnBearbeiten_Click(sender As Object, e As EventArgs) Handles fbtnBearbeiten.Click
|
||||
|
||||
edit = True
|
||||
dgvOfferte.Enabled = False
|
||||
|
||||
currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value, True)
|
||||
tmpDataTable = dgvOfferteDetails.DataSource
|
||||
handleEditMode(edit)
|
||||
saveCurrentOffert()
|
||||
checkPerimissionsDGVDetails()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub OffertenArchivieren()
|
||||
Private Sub OfferteArchivieren()
|
||||
If DGVHasChaged = False Then Exit Sub
|
||||
|
||||
If currentOffert.SAVETOARCHIVE() Then
|
||||
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
|
||||
Dim ofID As Integer = currentOffertArchiv.SAVERETURNID()
|
||||
|
||||
If ofID > 0 Then
|
||||
For Each row As DataRow In tmpDataTable.Rows
|
||||
Dim oP As New VERAG_PROG_ALLGEMEIN.cOffertPosition
|
||||
oP.KundenNr = currentOffert.KundenNr
|
||||
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 = currentOffert.OffertenNr
|
||||
oP.OffertenNr = currentOffertArchiv.OffertenNr
|
||||
oP.BerechnungsartNr = row("BerechnungsartNr")
|
||||
oP.Preis = row("Preis")
|
||||
oP.Anzahl = row("Anzahl")
|
||||
@@ -380,7 +378,7 @@ Public Class usrCntlOfferte
|
||||
oP.PreisänderungProzent = row("PreisänderungProzent")
|
||||
oP.PreisAlt = row("PreisAlt")
|
||||
oP.BerechnungsartPosInkludiert = row("BerechnungsartPosInkludiert")
|
||||
oP.INSERTTOARCHIVE()
|
||||
oP.INSERT()
|
||||
Next
|
||||
|
||||
End If
|
||||
@@ -389,22 +387,223 @@ Public Class usrCntlOfferte
|
||||
|
||||
Private Sub btnStandardLaden_Click(sender As Object, e As EventArgs) Handles btnStandardLaden.Click
|
||||
edit = True
|
||||
dgvOfferte.Enabled = False
|
||||
currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value, True)
|
||||
tmpDataTable = dgvOfferteDetails.DataSource
|
||||
handleEditMode(edit)
|
||||
saveCurrentOffert()
|
||||
OfferteArchivieren()
|
||||
If SQL.doSQL("DELETE FROM Offerten where [KundenNr]='" & kdNr & "' AND [OffertenNr]='" & dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value & "' ", "FMZOLL") Then
|
||||
|
||||
currentOffert.SAVE()
|
||||
currentOffert.LOAD_POSITIONEN()
|
||||
If currentOffert.POSITIONEN.Count = 0 Then '
|
||||
currentOffert.RESET_STANDARTOFFERTEN(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
|
||||
|
||||
End If
|
||||
isStandard = True
|
||||
initDGVOfferte()
|
||||
RaiseEvent OfferteChanged()
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub MyComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxArchivierteOfferten.SelectedIndexChanged
|
||||
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 dgvOfferte.SelectedRows.Count = 0 Then Exit Sub
|
||||
|
||||
If cbxArchivierteOffertenAnzeigen.Checked Then
|
||||
cbxArchivierteOfferten.SelectedIndex = -1
|
||||
cbxArchivierteOfferten.Items.Clear()
|
||||
cbxArchivierteOfferten.Visible = True
|
||||
cbxArchivierteOfferten.fillWithSQL("SELECT OfID, Cast([Archiviert am] AS DATE) as Archivierungsdatum FROM [tblOffertenArchiv] WHERE KundenNr='" & kdNr & "' and OffertenNr='" & dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value & "'", True, "FMZOLL", True)
|
||||
fbtnBearbeiten.Visible = False
|
||||
|
||||
Else
|
||||
lblArchivierteOfferten.Visible = False
|
||||
cbxArchivierteOfferten.Visible = False
|
||||
initDGVOfferteDetails(dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value)
|
||||
fbtnBearbeiten.Visible = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub checkPerimissionsDGVDetails()
|
||||
|
||||
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
|
||||
Else
|
||||
For Each c As DataGridViewColumn In .Columns
|
||||
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
|
||||
|
||||
End If
|
||||
Else
|
||||
c.ReadOnly = True
|
||||
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
End With
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub initDGVOfferteDetailsArchived(OffertenId)
|
||||
|
||||
|
||||
loaded = False
|
||||
DGVHasChaged = False
|
||||
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 [tblOffertenpositionenArchiv] " &
|
||||
" WHERE OfId='" & OffertenId & "' ORDER BY LeistungsNr, Preis DESC", "tblOffertenpositionenArchiv")
|
||||
|
||||
.DataSource = OFFERTEBind.bindingdataTable
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message)
|
||||
End Try
|
||||
|
||||
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
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub saveCurrentOffert()
|
||||
|
||||
dgvOfferte.Enabled = False
|
||||
currentOffert = New VERAG_PROG_ALLGEMEIN.cOfferte(kdNr, dgvOfferte.SelectedRows(0).Cells("OffertenNr").Value, False)
|
||||
Dim orgDataTable As DataTable = dgvOfferteDetails.DataSource
|
||||
tmpDataTable = orgDataTable.Copy
|
||||
|
||||
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
|
||||
dgvOfferte.ReadOnly = True
|
||||
fbtnBearbeiten.Visible = False
|
||||
btnStandardLaden.Visible = False
|
||||
cbxArchivierteOfferten.Enabled = False
|
||||
Else
|
||||
dgvOfferteDetails.AllowUserToAddRows = True
|
||||
dgvOfferteDetails.AllowUserToDeleteRows = True
|
||||
dgvOfferteDetails.RowHeadersVisible = True
|
||||
fbtnBearbeiten.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 dgvOfferte.SelectedRows.Count = 0 Then
|
||||
|
||||
fbtnBearbeiten.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
|
||||
dgvOfferte.Enabled = False
|
||||
Else
|
||||
lblEditMode.Visible = False
|
||||
cbxArchivierteOffertenAnzeigen.Enabled = True
|
||||
dgvOfferte.Enabled = True
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user