Fiskal, Formualre, etc,

This commit is contained in:
2026-03-02 08:39:12 +01:00
parent 6434bcf08e
commit d452db8e16
9 changed files with 613 additions and 200 deletions

View File

@@ -55,7 +55,7 @@ Public Class frmMDMDatenverarbetiung
Case "PLOSE"
Dim plose As cPLOSE_Inv_Data
pruef = plose.checkImport()
If pruef Then pruef = pruefData_PLOSE()
If pruef Then pruef = pruefData_PLOSE_NEW()
Case "ASFINAG" : pruef = pruefData_ASFINAG()
Case "UTA" : pruef = pruefData_UTA()
Case "IDS" : pruef = pruefData_IDS()
@@ -916,7 +916,6 @@ Public Class frmMDMDatenverarbetiung
group by plose_POLSEKundennummer,plose_ProduktCode
order by plose_POLSEKundennummer,plose_ProduktCode", "FMZOLL")
.LOAD()
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
If .Columns.Count > 0 Then
.Columns("plose_POLSEKundennummer").HeaderText = "PLOSE KdNr"
@@ -929,18 +928,6 @@ Public Class frmMDMDatenverarbetiung
.Columns("plose_MWSTBetragWaehrungAbbuchung").HeaderText = "MWST"
.Columns("plose_BruttobetragWaehrungAbbuchung").HeaderText = "Brutto"
'.Columns("VERAGLeistungsNr").ReadOnly = False
'.Columns("VERAGKdNr").ReadOnly = False
'For Each r As DataGridViewColumn In .Columns
' If r.Name = "VERAGLeistungsNr" Or r.Name = "VERAGKdNr" Then
' r.ReadOnly = False
' Else
' r.ReadOnly = True
' End If
'Next
Dim c As New DataGridViewTextBoxColumn
c.Name = "VERAGKdNr"
c.HeaderText = "VERAG KdNr"
@@ -2076,14 +2063,14 @@ Public Class frmMDMDatenverarbetiung
End If
End If
Dim connectionString = ""
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\FMZOLL.verag.ost.dmn\f\FMZoll\MautD_Test.accd"
Else
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\FMZOLL.verag.ost.dmn\f\FMZoll\MautD.accdb"
End If
'Dim connectionString = ""
'If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
' connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\FMZOLL.verag.ost.dmn\f\FMZoll\MautD_Test.accd"
'Else
' connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\FMZOLL.verag.ost.dmn\f\FMZoll\MautD.accdb"
'End If
Dim con As New OleDbConnection(connectionString)
'Dim con As New OleDbConnection(connectionString)
Dim cmd As New OleDbCommand
Dim var1 As String
@@ -2094,7 +2081,7 @@ Public Class frmMDMDatenverarbetiung
If dt IsNot Nothing Then
con.Open()
'con.Open()
For Each r In dt.Rows
Try
@@ -2102,26 +2089,26 @@ Public Class frmMDMDatenverarbetiung
r(0) & "'," & r(1) & ",'" & r(2) & "','" & r(3) & "','" & r(4) & "','" & r(5).ToString.Replace("'", " ") & "','" & r(6) & "','" & r(7).ToString.Replace("'", " ") & "','" & r(8).ToString.Replace("'", " ") & "'," & CDbl(r(9)).ToString.Replace(",", ".") & "," & CDbl(r(10)).ToString.Replace(",", ".") & "," & CDbl(r(11)).ToString.Replace(",", ".") & ",'" & datPloseAnhang.Text & "')", "FMZOLL")
'Zeitstempel
Dim SQLQuery = "INSERT INTO tblMautbericht (Datenquelle,[Customer No],[Licence Plate Number],[Transaction Date],[Transaction Country],[Product description],[Card Number],[Entry Terminal],[Exit Terminal],[Nett Amount],[VAT Amount],[Total Amount]) VALUES (@P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12) "
' "SELECT * FROM DBParent WHERE P_ID = " & UniqeID & ";"
Using Command As New OleDbCommand(SQLQuery, con)
'Dim SQLQuery = "INSERT INTO tblMautbericht (Datenquelle,[Customer No],[Licence Plate Number],[Transaction Date],[Transaction Country],[Product description],[Card Number],[Entry Terminal],[Exit Terminal],[Nett Amount],[VAT Amount],[Total Amount]) VALUES (@P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12) "
'' "SELECT * FROM DBParent WHERE P_ID = " & UniqeID & ";"
'Using Command As New OleDbCommand(SQLQuery, con)
Command.Parameters.AddWithValue("@P1", r(0))
Command.Parameters.AddWithValue("@P2", r(1))
Command.Parameters.AddWithValue("@P3", r(2))
Command.Parameters.AddWithValue("@P4", r(3))
Command.Parameters.AddWithValue("@P5", r(4))
Command.Parameters.AddWithValue("@P6", r(5))
Command.Parameters.AddWithValue("@P7", r(6))
Command.Parameters.AddWithValue("@P8", r(7))
Command.Parameters.AddWithValue("@P9", r(8))
Command.Parameters.AddWithValue("@P10", CDbl(r(9)))
Command.Parameters.AddWithValue("@P11", CDbl(r(10)))
Command.Parameters.AddWithValue("@P12", CDbl(r(11)))
' Command.Parameters.AddWithValue("@P1", r(0))
' Command.Parameters.AddWithValue("@P2", r(1))
' Command.Parameters.AddWithValue("@P3", r(2))
' Command.Parameters.AddWithValue("@P4", r(3))
' Command.Parameters.AddWithValue("@P5", r(4))
' Command.Parameters.AddWithValue("@P6", r(5))
' Command.Parameters.AddWithValue("@P7", r(6))
' Command.Parameters.AddWithValue("@P8", r(7))
' Command.Parameters.AddWithValue("@P9", r(8))
' Command.Parameters.AddWithValue("@P10", CDbl(r(9)))
' Command.Parameters.AddWithValue("@P11", CDbl(r(10)))
' Command.Parameters.AddWithValue("@P12", CDbl(r(11)))
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Command.ExecuteNonQuery()
Command.Dispose()
End Using
' If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Command.ExecuteNonQuery()
' Command.Dispose()
'End Using
Catch ex2 As System.Exception
@@ -2133,7 +2120,7 @@ Public Class frmMDMDatenverarbetiung
Next
con.Close()
'con.Close()
End If
pic.Visible = True
Return True
@@ -4139,6 +4126,178 @@ Public Class frmMDMDatenverarbetiung
End Try
End Function
Function pruefData_PLOSE_NEW() As Boolean
Try
Dim VERAGKdNr_DT As DataTable = SQL.loadDgvBySql("SELECT AdressenNr,PLOSEKundenNr FROM Adressen WHERE PLOSEKundenNr is not null order by PLOSEKundenNr", "FMZOLL")
pruefData_PLOSE_NEW = True
checkFixeTaxeImOffert("PLOSE", VERAGKdNr_DT)
Dim PLOSE_doppelteProductCodes As DataTable = SQL.loadDgvBySql("select count(*), plp_ProductCode from tblPLOSE_Produktbeschreibung p where plp_LeistungsNr is not null AND p.plp_Firma IN ('PSS','PU') group by plp_ProductCode having count(*) > 1", "FMZOLL")
If PLOSE_doppelteProductCodes.Rows.Count > 0 Then
pruefData_PLOSE_NEW = False
MsgBox(PLOSE_doppelteProductCodes.Rows.Count & " doppelte Productcodes hinterlegt!")
cProgramFunctions.genExcelCSVFromDT(PLOSE_doppelteProductCodes, True)
End If
checkFixeTaxeImOffert("PLOSE", VERAGKdNr_DT)
Dim cnt = 0
Dim cntTotal = MyDatagridview1.Rows.Count()
Dim PLoseSQL As String = "SELECT
d.plose_POLSEKundennummer,
a.AdressenNr AS VERAGKdNr,
p.plp_LeistungsNr AS VERAGLeistungsNr,
o.OffertenNr AS KundeOffertenNr,
op.LeistungsNr AS KundeLeistungsNr,
COUNT(*) AS Anzahl,
d.plose_ProduktCode,
MAX(d.plose_Produktbeschreibung) AS plose_Produktbeschreibung,
SUM(d.plose_Menge) AS plose_Menge,
SUM(d.plose_Preis) AS plose_Preis,
SUM(d.plose_NettobetragWaehrungAbbuchung) AS plose_NettobetragWaehrungAbbuchung,
SUM(d.plose_MWSTBetragWaehrungAbbuchung) AS plose_MWSTBetragWaehrungAbbuchung,
SUM(d.plose_BruttobetragWaehrungAbbuchung) AS plose_BruttobetragWaehrungAbbuchung,
CASE WHEN a.AdressenNr IS NULL THEN 0 ELSE 1 END AS KundeOK,
CASE WHEN p.plp_LeistungsNr IS NULL THEN 0 ELSE 1 END AS ProduktOK,
CASE WHEN o.OffertenNr IS NULL THEN 0 ELSE 1 END AS OfferteOK,
CASE WHEN op.LeistungsNr IS NULL THEN 0 ELSE 1 END AS LeistungOK
FROM tblPLOSE_Details d
LEFT JOIN Adressen a
ON a.PLOSEKundenNr = d.plose_POLSEKundennummer
LEFT JOIN tblPLOSE_Produktbeschreibung p
ON p.plp_ProductCode = d.plose_ProduktCode AND p.plp_LeistungsNr is not null
AND p.plp_Firma IN ('PSS','PU')
LEFT JOIN Offerten o
ON o.KundenNr = a.AdressenNr
AND o.OffertenNr = 80
LEFT JOIN Offertenpositionen op
ON op.KundenNr = a.AdressenNr
AND op.OffertenNr = 80
AND op.LeistungsNr = p.plp_LeistungsNr
WHERE
d.plose_DatumTransaktion between '" & dat_Sum_Von.Value & "' and '" & dat_Sum_Bis.Value & "'
AND d.plose_Fakturiert = 0
AND d.plose_ProduktCode NOT IN (" & ProduktCode_NOT_IN & ")
GROUP BY
d.plose_POLSEKundennummer,
d.plose_ProduktCode,
a.AdressenNr,
p.plp_LeistungsNr,
o.OffertenNr,
op.LeistungsNr
ORDER BY
d.plose_POLSEKundennummer,
d.plose_ProduktCode"
With MyDatagridview1
.Columns.Clear()
.SET_SQL(PLoseSQL, "FMZOLL")
.LOAD()
If .Columns.Count > 0 Then
.Columns("plose_POLSEKundennummer").HeaderText = "PLOSE KdNr"
.Columns("plose_ProduktCode").HeaderText = "ProduktCode"
.Columns("plose_Produktbeschreibung").HeaderText = "Beschreibung"
.Columns("plose_Produktbeschreibung").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("plose_Menge").HeaderText = "Menge"
.Columns("plose_Preis").HeaderText = "Preis"
.Columns("plose_NettobetragWaehrungAbbuchung").HeaderText = "Netto"
.Columns("plose_MWSTBetragWaehrungAbbuchung").HeaderText = "MWST"
.Columns("plose_BruttobetragWaehrungAbbuchung").HeaderText = "Brutto"
.Columns("KundeOK").Visible = False
.Columns("ProduktOK").Visible = False
.Columns("OfferteOK").Visible = False
.Columns("LeistungOK").Visible = False
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
End If
Dim sumBto As Double = 0
Dim sumNto As Double = 0
For Each r As DataGridViewRow In .Rows
sumBto += If(IsNumeric(r.Cells("plose_BruttobetragWaehrungAbbuchung").Value), CDbl(r.Cells("plose_BruttobetragWaehrungAbbuchung").Value), 0)
sumNto += If(IsNumeric(r.Cells("plose_NettobetragWaehrungAbbuchung").Value), CDbl(r.Cells("plose_NettobetragWaehrungAbbuchung").Value), 0)
If r.Cells("KundeOK").Value Then
r.Cells("VERAGKdNr").Style.BackColor = Color.MintCream
Else
r.Cells("VERAGKdNr").Style.BackColor = Color.PapayaWhip
pruefData_PLOSE_NEW = False
End If
If r.Cells("ProduktOK").Value Then
r.Cells("VERAGLeistungsNr").Style.BackColor = Color.MintCream
Else
r.Cells("VERAGLeistungsNr").Style.BackColor = Color.PapayaWhip
pruefData_PLOSE_NEW = False
End If
If r.Cells("OfferteOK").Value Then
r.Cells("KundeOffertenNr").Style.BackColor = Color.MintCream
Else
r.Cells("KundeOffertenNr").Style.BackColor = Color.PapayaWhip
pruefData_PLOSE_NEW = False
End If
If r.Cells("LeistungOK").Value Then
r.Cells("KundeLeistungsNr").Style.BackColor = Color.MintCream
Else
r.Cells("KundeLeistungsNr").Style.BackColor = Color.PapayaWhip
pruefData_PLOSE_NEW = False
End If
If cnt Mod 100 = 0 Then
lblProzPruef.Text = CInt(cnt / cntTotal * 100) & " %"
lblProzPruef.Refresh()
End If
cnt += 1
Next
lblProzPruef.Text = CInt(cnt / MyDatagridview1.Rows.Count() * 100) & " %" '100
lblProzPruef.Refresh()
Me.Refresh()
txtAnzahl.Text = .Rows.Count
txtPruefsummeNetto.Text = CDbl(sumNto).ToString("C2")
txtPruefsummeBrutto.Text = CDbl(sumBto).ToString("C2")
.ClearSelection()
End With
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
pruefData_PLOSE_NEW = False
End Try
End Function
Public Sub SuspendPainting(ByVal parent As Control)
SendMessage(parent.Handle, WM_SETREDRAW, False, 0)
End Sub
@@ -4225,7 +4384,36 @@ Public Class frmMDMDatenverarbetiung
End If
Dim dtUTAOffertenPositionen As DataTable = SQL.loadDgvBySql("SELECT * FROM vwUTA_PrüfungInkonsistenzVERAGOffertenpositionen2_new", "FMZOLL")
Dim dtUTAOffertenPositionen As DataTable = SQL.loadDgvBySql("WITH Basis AS
(
SELECT DISTINCT
a.AdressenNr AS VERAG_KundenNr,
l.VERAG_OffertenNr,
l.VERAG_LeistungsNr
FROM dbo.tblUTAImportNew i
INNER JOIN dbo.tblUTALeistungen l
ON i.Fakturierwarenart = l.Fakturierwarenart
AND i.Lieferland = l.Lieferland
INNER JOIN dbo.Adressen a
ON i.Kundennummer = a.UTAKundenNr
)
SELECT
b.VERAG_KundenNr,
b.VERAG_OffertenNr,
b.VERAG_LeistungsNr
FROM Basis b
WHERE NOT EXISTS
(
SELECT 1
FROM dbo.Offertenpositionen o
WHERE o.KundenNr = b.VERAG_KundenNr
AND o.OffertenNr = b.VERAG_OffertenNr
AND o.LeistungsNr = b.VERAG_LeistungsNr
)
ORDER BY
b.VERAG_KundenNr,
b.VERAG_OffertenNr,
b.VERAG_LeistungsNr;", "FMZOLL")
If dtUTAOffertenPositionen.Rows.Count > 0 Then
pruefData_UTA = False
@@ -4424,7 +4612,7 @@ Public Class frmMDMDatenverarbetiung
If IDSRechnungungenVorhanden < 1 Then
pruefData_IDS = False
Dim hint As String = ""
MsgBox("Es sind keine Rechnungen in der Datenbank, vermutlich noch nicht (vollständig) geladen!" & vbNewLine & "Diese Rechnungen vom" & DateTimePicker2.Text & ") müssen nachgeladen werden (bitte an Administrator wenden)." & IIf(hint <> "", vbNewLine & hint, ""))
MsgBox("Es sind keine Rechnungen in der Datenbank, vermutlich noch nicht (vollständig) geladen!" & vbNewLine & "Diese Rechnungen vom (" & DateTimePicker2.Text & ") müssen nachgeladen werden (bitte an Administrator wenden)." & IIf(hint <> "", vbNewLine & hint, ""))
End If
@@ -4621,7 +4809,7 @@ Public Class frmMDMDatenverarbetiung
If Not vbYes = MsgBox("Aktuell ist der Testlauf aktiviert, wirklich fortfahren?", vbYesNoCancel) Then Exit Sub
End If
If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausgeführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then
If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then
Select Case LIEFERANT
Case "PLOSE" : setFakturiert(LIEFERANT)
Case "UTA" : setFakturiert(LIEFERANT)
@@ -5203,27 +5391,30 @@ RabattBerechnen:
End If
Dim sqlStringOffertMehrfach = "select COUNT(*) as Anzahl ,OffertenNr, KundenNr LeistungsNr from Offertenpositionen where LeistungsNr = 441 and OffertenNr = " & OffertenNr & " and KundenNr in (" & AdressenNr & ") group by KundenNr, LeistungsNr, OffertenNr having COUNT(*) > 1"
Dim dtOfferten As DataTable = SQL.loadDgvBySql(sqlStringOffertMehrfach, "FMZOLL")
If dtOfferten.Rows.Count > 0 Then
MsgBox("Es sind bei " & dtOfferten.Rows.Count & " Kunden das Offert 441 mehrfach hinterlegt, das muss korrigiert werden, ansonten kann die Fixe Taxe nicht berechnet werden!")
cProgramFunctions.genExcelCSVFromDT(dtOfferten, True)
Return False
End If
If AdressenNr <> "" Then
Dim dtOfferten As DataTable = SQL.loadDgvBySql(sqlStringOffertMehrfach, "FMZOLL")
If dtOfferten.Rows.Count > 0 Then
MsgBox("Es sind bei " & dtOfferten.Rows.Count & " Kunden das Offert 441 mehrfach hinterlegt, das muss korrigiert werden, ansonsten kann die Fixe Taxe nicht berechnet werden!")
cProgramFunctions.genExcelCSVFromDT(dtOfferten, True)
Return False
End If
Dim sqlStringFehlendeOffertenNr = "select KundenNr, OffertenNr from Offertenpositionen where OffertenNr = " & OffertenNr & " and KundenNr in (" & AdressenNr & ")
Dim sqlStringFehlendeOffertenNr = "select KundenNr, OffertenNr from Offertenpositionen where OffertenNr = " & OffertenNr & " and KundenNr in (" & AdressenNr & ")
GROUP by KundenNr, OffertenNr
EXCEPT
select KundenNr, OffertenNr from Offertenpositionen where LeistungsNr = 441 and OffertenNr = " & OffertenNr & " and KundenNr in (" & AdressenNr & ")
GROUP by KundenNr, OffertenNr"
Dim dtfehlendeOfferten As DataTable = SQL.loadDgvBySql(sqlStringFehlendeOffertenNr, "FMZOLL")
If dtfehlendeOfferten.Rows.Count > 0 Then
MsgBox("Es fehlen bei " & dtfehlendeOfferten.Rows.Count & " Kunden das Offert 441, bitte hinterlegen ansonten wird die Fixe Taxe nicht gesetzt!")
cProgramFunctions.genExcelCSVFromDT(dtfehlendeOfferten, True)
Return True
Dim dtfehlendeOfferten As DataTable = SQL.loadDgvBySql(sqlStringFehlendeOffertenNr, "FMZOLL")
If dtfehlendeOfferten.Rows.Count > 0 Then
MsgBox("Es fehlen bei " & dtfehlendeOfferten.Rows.Count & " Kunden das Offert 441, bitte hinterlegen ansonsten wird die Fixe Taxe nicht gesetzt!")
cProgramFunctions.genExcelCSVFromDT(dtfehlendeOfferten, True)
Return True
End If
End If
End Function
Private Sub cbxIDSmitVerag_CheckedChanged(sender As Object, e As EventArgs) Handles cbxIDSmitVerag.CheckedChanged