Files
SDL/SDL/kunden/frmOffertenBearbeiten.vb
2025-10-02 09:10:07 +02:00

122 lines
5.5 KiB
VB.net

Imports VERAG_PROG_ALLGEMEIN
Public Class frmOffertenBearbeiten
Dim FIRMA_TMP = ""
Public cntOfferteLoad As Integer = 0
Public kdnr As Integer = -1
Dim SQL As New SQL
Sub New(kdnr)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Me.kdnr = kdnr
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub frmOffertenBearbeiten_Load(sender As Object, e As EventArgs) Handles Me.Load
FlowLayoutPanel.Controls.Clear()
Dim KUNDE As New VERAG_PROG_ALLGEMEIN.cKunde(kdnr)
If KUNDE Is Nothing Then Me.Close()
If Not KUNDE.hasEntry Then Me.Close()
FIRMA_TMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KUNDE.FilialenNr)
Dim KUNDE_ERW As New cKundenErweitert(kdnr)
cboSprache.Items.Clear()
cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE", "DE"))
cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EN", "EN"))
cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("RO", "RO"))
cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("TR", "TR"))
cboFiliale.fillWithSQL("SELECT Filialen.FilialenNr FROM Filialen where Firma ='" & FIRMA_TMP & "' and Fil_Status = 'A' ORDER BY Filialen.FilialenNr", False, "FMZOLL", True)
Dim where = ""
Select Case FIRMA_TMP
Case "IMEX"
' where = " WHERE [Offertenstamm].[OffertenNr] IN (1,2,3,4,5,6,7,8,9,10,26,27,29,50,51)"
cboSprache.Enabled = False
cboSprache.changeItem("DE")
where = " WHERE [Offertenstamm].[OffertenNr] IN (SELECT ao_OffertenNr FROM tblAbfertigungsartenFiliale inner join tblAbfertigungsartOffertenstamm on ao_Abfertigungsart=Abfertigungsart WHERE FilialenNr=5501 ) "
If cboFiliale.Items.Count > 0 Then cboFiliale.changeItem("5501")
Case "VERAG"
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
cboSprache.changeItem(KUNDE_ERW.kde_Fakturierung_Sprache)
cboSprache.Enabled = True
Else
cboSprache.changeItem("DE")
cboSprache.Enabled = False
End If
If cboFiliale.Items.Count > 0 Then cboFiliale.changeItem("4803")
Case Else
cboSprache.changeItem("DE")
cboSprache.Enabled = False
If cboFiliale.Items.Count > 0 Then cboFiliale.SelectedIndex = 0
End Select
If cboFiliale.Items.Count = 0 Then cboFiliale.changeItem("")
Dim SQLsrt = " SELECT (select case when COUNT(*)>0 then 1 else 0 end FROM Offerten where KundenNr=" & kdnr & " and [Offerten].[OffertenNr]=[Offertenstamm].[OffertenNr]) as vorhanden," &
" [Offertenstamm].[OffertenNr],[OffertenBez] FROM Offertenstamm " & where & " order by OffertenNr"
For Each r As DataRow In SQL.loadDgvBySql(SQLsrt, "FMZOLL").Rows
Dim cbx As New VERAG_PROG_ALLGEMEIN.MyCheckBoxValue
cbx._value = r("OffertenNr")
cbx.AutoSize = False
cbx.Width = FlowLayoutPanel.Width - 30
cbx.Height = 18
cbx.Checked = CBool(r("vorhanden"))
If cbx.Checked Then cbx.Enabled = False
cbx.Text = r("OffertenNr") & " " & r("OffertenBez")
FlowLayoutPanel.Controls.Add(cbx)
If CBool(r("vorhanden")) Then cntOfferteLoad += 1
Next
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
If kdnr <= 0 Then MsgBox("Keine KundenNr gefunden!") : Exit Sub
Dim Neuanlage = False
For Each c In FlowLayoutPanel.Controls
If c.GetType Is GetType(VERAG_PROG_ALLGEMEIN.MyCheckBoxValue) Then
' MsgBox(c._value)
If c.enabled And c.checked Then
Dim o As New VERAG_PROG_ALLGEMEIN.cOfferte(kdnr, c._value, IIf(cboFiliale._value <> "", cboFiliale._value, Nothing), False)
o.Art = "Neuanlage"
o.SAVE() 'speichern
o.LOAD_POSITIONEN() 'positionen Laden
If o.POSITIONEN.Count = 0 Then 'wenn keine POS --> neues Offert
o.RESET_STANDARTOFFERTEN_FIRMA(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME, FIRMA_TMP, cboSprache.SelectedItem.ToString) '--> Standartofferten laden
Neuanlage = True
End If
'SQL.doSQL("INSERT INTO Offertenpositionen WHERE KundenNr=" & kdnr & " AND [OffertenNr]=" & kdnr & "")
Else
' SQL.doSQL("DELETE FROM Offertenpositionen WHERE KundenNr=" & kdnr & " AND [OffertenNr]=" & kdnr & "")
' SQL.doSQL("DELETE FROM Offerten WHERE KundenNr=" & kdnr & " AND [OffertenNr]=" & kdnr & "")
End If
End If
Next
If cntOfferteLoad = 0 And Neuanlage Then
'Es wurden 1 oder mehrere Offerten neu hinzugefügt, und es gab zuvor noch keine Offerten.
'Autofakturierung setzen
SQL.doSQL("update [tblKundenErweitert] set AutoFakturierung = 1 where kde_KundenNr='" & kdnr & "'", "FMZOLL")
End If
Me.Close()
End Sub
End Class