FixeTaxe441 bei Sammelrechnung

This commit is contained in:
2025-06-27 15:19:28 +02:00
parent 32e10aee12
commit 6339fe8645
3 changed files with 138 additions and 50 deletions

View File

@@ -1,5 +1,6 @@
Imports System.Data.OleDb
Imports System.IO
Imports com.sun.xml.internal.rngom
Imports itextsharp.text.pdf
Imports MDM_Worker
Imports VERAG_PROG_ALLGEMEIN
@@ -1220,28 +1221,26 @@ Public Class frmMDMDatenverarbetiung
End If
Next
End If
If verarbOK Then
'UPDATE Fakturiert
SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL")
End If
If True Then 'cnt Mod 10 = 0 Then
txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count
Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100
pbPloseAnh_Proz.Value = proz
lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
'GroupBox12.Refresh()
My.Application.DoEvents()
End If
cnt += 1
Next
If test Then Return True
'UPDATE Fakturiert
SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL")
End If
If True Then 'cnt Mod 10 = 0 Then
txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count
Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100
pbPloseAnh_Proz.Value = proz
lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
'GroupBox12.Refresh()
My.Application.DoEvents()
End If
cnt += 1
Next
If test Then Return True
' ANHÄNGE WERDEN NCIHT BENÖTIGT::
'Alle Alangen im foglenden VZ löschen und die aktuellen kopieren
Dim dirAnhang = IIf(test, utaParam.ANLAGEN & "TEST\", utaParam.ANLAGEN)
If Directory.Exists(dirAnhang) Then 'Directory.Delete(dirAnhang, True)
' ANHÄNGE WERDEN NCIHT BENÖTIGT::
'Alle Alangen im foglenden VZ löschen und die aktuellen kopieren
Dim dirAnhang = IIf(test, utaParam.ANLAGEN & "TEST\", utaParam.ANLAGEN)
If Directory.Exists(dirAnhang) Then 'Directory.Delete(dirAnhang, True)
For Each f In Directory.GetFiles(dirAnhang)
Try
File.Delete(f)
@@ -1250,16 +1249,16 @@ Public Class frmMDMDatenverarbetiung
End Try
Next
End If
If Not Directory.Exists(dirAnhang) Then Directory.CreateDirectory(dirAnhang)
For Each f In Directory.GetFiles(dir)
File.Copy(f, dirAnhang & (New FileInfo(f)).Name, True)
Next
pbPloseAnh_Proz.Value = 100
txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count
lblPloseAnh_Proz.Text = "100.00 %"
Return True
End If
Return False
If Not Directory.Exists(dirAnhang) Then Directory.CreateDirectory(dirAnhang)
For Each f In Directory.GetFiles(dir)
File.Copy(f, dirAnhang & (New FileInfo(f)).Name, True)
Next
pbPloseAnh_Proz.Value = 100
txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count
lblPloseAnh_Proz.Text = "100.00 %"
Return True
End If
Return False
End Function
Function genRGAtt_MSE(mseParam As cMSEAPI) As Boolean
Dim top = ""
@@ -3437,6 +3436,10 @@ Public Class frmMDMDatenverarbetiung
Dim sqlstr As String = ""
Dim useNettogesamtbetrag As Boolean = False
'If KdNr = "401715" Or KdNr = "401943" Or KdNr = "402179" Or KdNr = "402598" Or KdNr = "402656" Or KdNr = "402688" Or KdNr = "402719" Or KdNr = "402888" Or KdNr = "402933" Then
'MsgBox("Test")
'End If
Dim OFFERTE As New VERAG_PROG_ALLGEMEIN.cOfferte(KdNr, OffertenNr, True)
RG.LOAD_OFFERT_POSITIONEN() ' --> OFFERTE MIT ANZAHL >0 und Preis >0
@@ -3636,11 +3639,11 @@ Public Class frmMDMDatenverarbetiung
End If
'cFakturierung.setGesamtBetraege(RG,, useNettogesamtbetrag)
'Call usrCntlFaktAbrechnung.przFixeTaxe(RG) ' Fixe Taxe errechnen -> NICHT NOTWENDIG WEIL 440 nicht FÜR Sammelrechnung verwendet wird!
'Call usrCntlFaktAbrechnung.przPP(RG) ' Porto/Papiere errechnen -> NICHT NOTWENDIG WEIL 440 nicht FÜR Sammelrechnung verwendet wird!
'Call usrCntlFaktAbrechnung.przFixeTaxe(RG) ' Fixe Taxe errechnen -> NICHT NOTWENDIG WEIL 440 nicht mehr FÜR Sammelrechnung verwendet wird!
'Call usrCntlFaktAbrechnung.przPP(RG) ' Porto/Papiere errechnen -> NICHT NOTWENDIG WEIL 440/PP nicht mehr FÜR Sammelrechnung verwendet wird!
Call usrCntlFaktAbrechnung.przBS415(RG) ' Bankspesen errechnen
Call usrCntlFaktAbrechnung.setFixeTaxeMin(RG, 500, 20) ' Fixe Taxe 441 errechnen
Call usrCntlFaktAbrechnung.setFixeTaxeMin(RG, 500) ' Fixe Taxe 441 errechnen
cFakturierung.setGesamtBetraege(RG,, useNettogesamtbetrag)
@@ -3705,12 +3708,6 @@ Public Class frmMDMDatenverarbetiung
POS.BGebProzent = o.BGebProzent
POS.BGebMinBetrag = o.BGebMinBetrag
If POS.LeistungsNr = 441 Then
MsgBox("")
End If
RG.POSITIONEN.Add(POS)
@@ -3839,6 +3836,9 @@ Public Class frmMDMDatenverarbetiung
Dim cnt = 0
Dim cntTotal = MyDatagridview1.Rows.Count()
checkFixeTaxeImOffert("PLOSE", VERAGKdNr_DT)
For Each r As DataGridViewRow In MyDatagridview1.Rows
'KUNDEN-NR / PLOSE KD-NR
results = VERAGKdNr_DT.Select("PLOSEKundenNr = '" & r.Cells("plose_POLSEKundennummer").Value & "'")
@@ -3930,6 +3930,10 @@ Public Class frmMDMDatenverarbetiung
ORDER BY cardnumber", "FMZOLL")
Dim dtKunden As DataTable = SQL.loadDgvBySql("SELECT Distinct(Kreditkarten.AdressenNr FROM dbo.tblAsfinagMaut", "FMZOLL")
checkFixeTaxeImOffert("ASFINAG", dtKunden)
Dim VERAGKdNr = -1
Dim VERAGLeistungsNr = -1
Dim found = False
@@ -3956,7 +3960,7 @@ Public Class frmMDMDatenverarbetiung
pruefData_UTA = True
Try
Dim dtUTAKundennummern As DataTable = SQL.loadDgvBySql("SELECT Distinct(tblUTAImportNew.Kundennummer)
Dim dtUTAKundennummern As DataTable = SQL.loadDgvBySql("Select Distinct(tblUTAImportNew.Kundennummer)
FROM tblUTAImportNew LEFT JOIN Adressen ON tblUTAImportNew.Kundennummer = Adressen.UTAKundenNr WHERE cast(tblUTAImportNew.Rechnungsdatum as Date) = '" & DateTimePicker2.Text & "'
GROUP BY tblUTAImportNew.Kundennummer, Adressen.UTAKundenNr
HAVING (((Adressen.UTAKundenNr) Is Null))", "FMZOLL")
@@ -3998,6 +4002,13 @@ Public Class frmMDMDatenverarbetiung
End If
Dim dtKundenNr As DataTable = SQL.loadDgvBySql("SELECT Distinct(Adressen.AdressenNr)
FROM tblUTAImportNew LEFT JOIN Adressen ON tblUTAImportNew.Kundennummer = Adressen.UTAKundenNr
WHERE cast(tblUTAImportNew.Rechnungsdatum as Date) = '" & DateTimePicker2.Text & "'
GROUP BY Adressen.AdressenNr", "FMZOLL")
checkFixeTaxeImOffert("UTA", dtKundenNr)
Dim fehlendeRechnungen As Integer = 0
@@ -4088,6 +4099,16 @@ Public Class frmMDMDatenverarbetiung
MsgBox("Es sind " & nichtAufAbgerechnetGesetzteTransactionen & " Transaktionen in der Datenbank, die noch nicht auf VERRECHNET gesetzt sind!" & vbNewLine & "Diese Transaktionen (von Rechnung " & DateTimePicker2.Text & ") müssen aktualisiert werden. (bitte an Administrator wenden)." & IIf(hint <> "", vbNewLine & hint, ""))
End If
Dim dt As DataTable = SQL.loadDgvBySql("SELECT Distinct(Adressen.AdressenNr)
FROM [VERAG].[dbo].[tblMSESettlements] as bills
left join [VERAG].[dbo].[tblMSETransactions] as trans on bills.[transaction_id] = trans.[transaction_id]
left join [VERAG].[dbo].[tblMSECustomers] as cust on cust.partner_customer_number = trans.partner_haulier_id
left join [VERAG].[dbo].[tblMSEInvoices] as inv on inv.[invoice_id] = bills.[invoice_number] and inv.customer_number = cust.[customer_id] and trans.transaction_country = inv.country
left join adressen ON cust.[customer_id] = Adressen.MSEKundenNr
WHERE bills.[invoice_date] = '" & DateTimePicker2.Text & "' ", "FMZOLL")
checkFixeTaxeImOffert("MSE", dt)
'das muss die letzte Prüfung sein, da uU eine Transaktion fehlen kann!
Dim fehlendeTransactionen As Integer = 0
@@ -4134,6 +4155,9 @@ Public Class frmMDMDatenverarbetiung
Dim dt As DataTable = SQL.loadDgvBySql("Select distinct(tblIDSTransactionsNew.KdNrVERAG) from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "'", "FMZOLL")
checkFixeTaxeImOffert("IDS", dt)
checkFixeTaxeImOffert("IDS_AT", dt)
If dt.Rows.Count > 0 Then
Dim counter As Integer = 0
For Each r In dt.Rows
@@ -4903,4 +4927,64 @@ RabattBerechnen:
Return checkDate
End Function
Private Function checkFixeTaxeImOffert(Lieferant As String, dt As DataTable) As Boolean
Dim OffertenNr As Integer = -1
If Lieferant = "" Then Return False
Select Case Lieferant
Case "PLOSE" : OffertenNr = 80
Case "ASFINAG" : OffertenNr = 11
Case "UTA" : OffertenNr = 30
Case "MSE" : OffertenNr = 23
Case "IDS" : OffertenNr = 17
Case "IDS_AT" : OffertenNr = 21
Case Else
Return False
End Select
Dim AdressenNr As String = ""
If dt.Rows.Count > 0 Then
If dt.Columns.Contains("AdressenNr") Or dt.Columns.Contains("KdNrVERAG") Then
Dim dtNew As DataTable = dt.Rows.Cast(Of DataRow)().Where(Function(row) Not row.ItemArray.All(Function(field) field Is DBNull.Value Or field.Equals(""))).CopyToDataTable()
If dtNew.Rows.Count > 0 Then
Dim counter = 0
For Each r As DataRow In dtNew.Rows
AdressenNr &= r.Item(0)
counter = counter + 1
If (dtNew.Rows.Count <> 0 And counter <> dtNew.Rows.Count) Then
AdressenNr &= ","
End If
Next
End If
End If
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
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
End If
End Function
End Class