plose, etc.

This commit is contained in:
2026-06-26 16:02:57 +02:00
parent 65f1d0010c
commit f193cb6dd3
7 changed files with 1737 additions and 1021 deletions

View File

@@ -6,11 +6,10 @@ Imports System.Security.Cryptography.X509Certificates
Imports System.Text
Imports System.Threading
Imports System.Xml
Imports com.sun.xml.internal.rngom
Imports com.sun.org.apache.xpath.internal.operations
Imports iTextSharp.text
Imports javax
Imports MDM_Worker
Imports Microsoft.Office.Interop
Imports Renci.SshNet
Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.cAllgemein
@@ -111,6 +110,8 @@ Public Class frmStartOptions
cbxGestellungspeichern.Checked = Paramslist.GET_PARAMETER_VALUE_BOOL("Gestellung_erstellen")
cbxVW_Infomail.Checked = Paramslist.GET_PARAMETER_VALUE_BOOL("Gestellung_erstellen_Infomail")
cbxGESTELLUNG_TESTLAUF.Checked = Paramslist.GET_PARAMETER_VALUE_BOOL("Gestellung_TESTLAUF")
cbxPlose_TRNewFormat.Checked = Paramslist.GET_PARAMETER_VALUE_BOOL("PLOSE_TR_newFormat")
cbxPlose_INVNewFormat.Checked = Paramslist.GET_PARAMETER_VALUE_BOOL("PLOSE_INV_newFormat")
Dim PARAM = "" 'INSERT_BENACHRICHTIGUNG_VERMERKE_TEAMS
@@ -237,6 +238,8 @@ Public Class frmStartOptions
Case "MDM_EINARBEITUNG"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim f As New frmMDMNachrichtenVerarbeitung(True)
f.newFormatTR = cbxPlose_TRNewFormat.Checked
f.newFormatINV = cbxPlose_INVNewFormat.Checked
' Me.Visible = False
f.Show()
AddHandler f.FormClosed, AddressOf closeMe
@@ -4106,6 +4109,8 @@ Public Class frmStartOptions
Me.Visible = False
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
Dim f As New frmMDMNachrichtenVerarbeitung
f.newFormatTR = cbxPlose_TRNewFormat.Checked
f.newFormatINV = cbxPlose_INVNewFormat.Checked
f.ShowDialog()
Me.Visible = True
End Sub
@@ -4114,6 +4119,8 @@ Public Class frmStartOptions
Me.Visible = False
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim f As New frmMDMNachrichtenVerarbeitung
f.newFormatTR = cbxPlose_TRNewFormat.Checked
f.newFormatINV = cbxPlose_INVNewFormat.Checked
f.ShowDialog()
Me.Visible = True
End Sub
@@ -5314,6 +5321,17 @@ Public Class frmStartOptions
Dim count As Integer = 0
countmissingCSinPortfolio(count)
lbl_CS_online.Text = count
ElseIf tbcntr.SelectedIndex = 6 Then
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxDatevTest.Checked
cbxOffertenNr.Items.Clear()
cbxOffertenNr.fillWithSQL("SELECT [OffertenNr],[OffertenBez] FROM [Offertenstamm] order by OffertenNr", True, "FMZOLL", True)
cbxOffertenNr.changeItem("")
cbxLeistungNr.Items.Clear()
End If
End Sub
@@ -8566,7 +8584,7 @@ repeatRequest:
End If
Dim dt_bestellungen_aggregiert As DataTable = SQL.loadDgvBySql("select * from (SELECT 1 as tagID, eb_gebaeude, 'Montag' AS Tag, eb_montag AS Menu, COUNT(*) AS Anzahl" & SQLAnmerkung & " FROM tblEssensbestellungen WHERE ISNULL(eb_montag,'') <> '' and " & SQLWHERE & " GROUP BY eb_gebaeude, eb_montag UNION ALL
Dim dt_bestellungen_aggregiert As DataTable = SQL.loadDgvBySql("select * from (SELECT 1 as tagID, eb_gebaeude, 'Montag' AS Tag, eb_montag AS Menu, COUNT(*) AS Anzahl" & SQLAnmerkung & " FROM tblEssensbestellungen WHERE ISNULL(eb_montag,'') <> '' and " & SQLWHERE & " GROUP BY eb_gebaeude, eb_montag UNION ALL
SELECT 2 as tagID, eb_gebaeude, 'Dienstag' AS Tag, eb_dienstag AS Menu, COUNT(*) AS Anzahl" & SQLAnmerkung & " FROM tblEssensbestellungen WHERE ISNULL(eb_dienstag,'') <> '' and " & SQLWHERE & " GROUP BY eb_gebaeude, eb_dienstag UNION ALL
SELECT 3 as tagID, eb_gebaeude, 'Mittwoch' AS Tag, eb_mittwoch AS Menu, COUNT(*) AS Anzahl" & SQLAnmerkung & " FROM tblEssensbestellungen WHERE ISNULL(eb_mittwoch,'') <> '' and " & SQLWHERE & " GROUP BY eb_gebaeude, eb_mittwoch UNION ALL
SELECT 4 as tagID, eb_gebaeude, 'Donnerstag' AS Tag, eb_donnerstag AS Menu, COUNT(*) AS Anzahl" & SQLAnmerkung & " FROM tblEssensbestellungen WHERE ISNULL(eb_donnerstag,'') <> '' and " & SQLWHERE & " GROUP BY eb_gebaeude, eb_donnerstag UNION ALL
@@ -8717,5 +8735,221 @@ repeatRequest:
End Function
Private Sub Button34_Click(sender As Object, e As EventArgs) Handles Button34.Click
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxDatevTest.Checked
If cbxOffertenNr._value <> "" AndAlso IsNumeric(cbxOffertenNr._value) AndAlso cbxLeistungNr._value <> "" AndAlso IsNumeric(cbxLeistungNr._value) Then
Dim dt As DataTable = checkLeitungsNrimOffert(cbxOffertenNr._value, cbxLeistungNr._value)
If dt.Rows.Count > 0 Then
Dim STDOF As New cStandardofferten(cbxOffertenNr._value, "EUR", cbxLeistungNr._value, cbxLeistungNr.SelectedItem.text)
If STDOF.hasEntry Then
If Not checkStandardOffert(STDOF) Then
MsgBox("BerechnungsartNr ist nicht im Standardoffert hinterlegt!")
Else
showPic(insertOfferenPositionen(STDOF), pbOfferten)
End If
End If
Else
showPic(True, pbOfferten)
End If
End If
End Sub
Private Function checkLeitungsNrimOffert(OffertenNr As Integer, LeistungsNr As Integer) As DataTable
Dim sqlWhere = ""
Dim selectString = "*"
If cbxNurAktiveKunen.Checked Then
sqlWhere = " inner join Adressen on Adressen.AdressenNr = Temp.KundenNr
inner join Kunden on Kunden.KundenNr = Temp.KundenNr
where isnull(Kunden.Abfertigungsverbot, 0) = 0 and Adressen.Auswahl = 'A'"
selectString = "Kunden.KundenNr, OffertenNr"
End If
Dim sqlStringFehlendeOffertenNr = "select " & selectString & " from (select KundenNr, OffertenNr from Offertenpositionen where OffertenNr = " & OffertenNr & "
GROUP by KundenNr, OffertenNr
EXCEPT
select KundenNr, OffertenNr from Offertenpositionen where LeistungsNr = " & LeistungsNr & " and OffertenNr = " & OffertenNr & "
GROUP by KundenNr, OffertenNr) as Temp " & sqlWhere
Dim dtfehlendeOfferten As DataTable = (New SQL).loadDgvBySql(sqlStringFehlendeOffertenNr, "FMZOLL")
If dtfehlendeOfferten.Rows.Count > 0 Then
Select Case MsgBox("Es fehlen bei " & dtfehlendeOfferten.Rows.Count & IIf(cbxNurAktiveKunen.Checked, " aktiven", "") & " Kunden im Offert " & OffertenNr & " die LeistungsNr " & LeistungsNr & "!" & vbNewLine & "Soll diese eingefügt werden??", vbYesNoCancel)
Case vbYes
Case vbNo : dtfehlendeOfferten.Clear()
Case Else : dtfehlendeOfferten.Clear()
End Select
End If
Return dtfehlendeOfferten
End Function
Private Function checkStandardOffert(StandardOffert As cStandardofferten) As Boolean
If StandardOffert.BerechnungsartNr Is Nothing Then
If txtBerechnungsart.Text <> "" AndAlso IsNumeric(txtBerechnungsart.Text) AndAlso txtBerechnungsart.Text.Length = 1 Then
StandardOffert.BerechnungsartNr = txtBerechnungsart.Text
Return True
Else
Return False
End If
Else
Return True
End If
End Function
Private Function insertOfferenPositionen(StandardOffert As cStandardofferten)
Dim sqlWhere = ""
If cbxNurAktiveKunen.Checked Then
sqlWhere = " inner join Adressen on Adressen.AdressenNr = Temp.KundenNr
inner join Kunden on Kunden.KundenNr = Temp.KundenNr
where isnull(Kunden.Abfertigungsverbot, 0) = 0 and Adressen.Auswahl = 'A'"
End If
Dim sqlstr_select As String = "SELECT
Temp.KundenNr,
Temp.OffertenNr,
" & SQLSafe(StandardOffert.LeistungsNr) & " AS LeistungsNr,
" & SQLSafe(StandardOffert.LeistungsBez) & " AS LeistungsBez,
" & SQLSafe(StandardOffert.BerechnungsartNr) & " AS BerechnungsartNr,
" & SQLSafe(StandardOffert.Preis) & " AS Preis,
" & SQLSafe(StandardOffert.Anzahl) & " AS Anzahl,
" & SQLSafe(StandardOffert.BGebLeistungsNr) & " AS BGebLeistungsNr,
" & SQLSafe(StandardOffert.BGebProzent) & " AS BGebProzent,
" & SQLSafe(StandardOffert.BGebMinBetrag) & " AS BGebMinBetrag,
GETDATE() AS [Eingegeben am],
GETDATE() AS [Geändert am],
'AUTO-IMPORT' AS Sachbearbeiter,
NULL AS Preisänderung,
NULL AS PreisänderungProzent,
NULL AS PreisAlt,
" & SQLSafe(StandardOffert.BerechnungsartPosInkludiert) & " AS BerechnungsartPosInkludiert,
NULL AS MDM_Land,
NULL AS MDM_VZ,
NULL AS MDM_RMC,
NULL AS MDM_Fremd,
NULL AS MDM_Preisstaffel
FROM (
SELECT KundenNr, OffertenNr
FROM Offertenpositionen
WHERE OffertenNr = " & SQLSafe(StandardOffert.OffertenNr) & "
GROUP BY KundenNr, OffertenNr
EXCEPT
SELECT KundenNr, OffertenNr
FROM Offertenpositionen
WHERE LeistungsNr = " & SQLSafe(StandardOffert.LeistungsNr) & "
AND OffertenNr = " & SQLSafe(StandardOffert.OffertenNr) & "
GROUP BY KundenNr, OffertenNr
) AS Temp " & sqlWhere
Dim dt As DataTable = (New SQL).loadDgvBySql_Param(sqlstr_select, "FMZOLL")
Dim updated As Boolean = False
If dt.Rows.Count > 0 Then
Dim InsertSatement As String = " INSERT INTO Offertenpositionen
(
[KundenNr]
,[OffertenNr]
,[LeistungsNr]
,[LeistungsBez]
,[BerechnungsartNr]
,[Preis]
,[Anzahl]
,[BGebLeistungsNr]
,[BGebProzent]
,[BGebMinBetrag]
,[Eingegeben am]
,[Geändert am]
,[Sachbearbeiter]
,[Preisänderung]
,[PreisänderungProzent]
,[PreisAlt]
,[BerechnungsartPosInkludiert]
,[MDM_Land]
,[MDM_VZ]
,[MDM_RMC]
,[MDM_Fremd]
,[MDM_Preisstaffel]
)"
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
updated = (New SQL).doSQL(InsertSatement & sqlstr_select, "FMZOLL",,,, 500)
End If
End If
Return updated
End Function
Private Function SQLSafe(value As Object, Optional defaultValue As Object = Nothing) As String
If value Is Nothing OrElse IsDBNull(value) Then
If defaultValue Is Nothing Then Return "NULL"
Return defaultValue.ToString()
End If
If TypeOf value Is String Then
Return "'" & value.ToString().Replace("'", "''") & "'"
End If
If TypeOf value Is Boolean Then
Return If(CBool(value), "1", "0")
End If
Return value.ToString().Replace(",", ".")
End Function
Private Sub cbxOffertenNr_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxOffertenNr.SelectedIndexChanged
If cbxOffertenNr._value <> "" AndAlso IsNumeric(cbxOffertenNr._value) Then
txtOfferenNr.Text = cbxOffertenNr.SelectedItem.text
cbxLeistungNr.fillWithSQL("SELECT [LeistungsNr],[LeistungsBez] FROM [Standardofferten] where OffertenNr = " & cbxOffertenNr._value, False, "FMZOLL", True)
Else
txtOfferenNr.Text = ""
End If
End Sub
Private Sub cbxLeistungNr_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxLeistungNr.SelectedIndexChanged
If cbxLeistungNr._value <> "" AndAlso IsNumeric(cbxLeistungNr._value) Then
txtLeistungsNr.Text = cbxLeistungNr.SelectedItem.text
Else
txtLeistungsNr.Text = ""
End If
End Sub
End Class