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

@@ -2430,7 +2430,7 @@ Public Class usrCntlFaktAbrechnung
Call przFixeTaxe(RECHNUNG) ' Fixe Taxe errechnen Call przFixeTaxe(RECHNUNG) ' Fixe Taxe errechnen
Call przPP(RECHNUNG) ' Porto/Papiere errechnen Call przPP(RECHNUNG) ' Porto/Papiere errechnen
Call przBS415(RECHNUNG) ' Bankspesen errechnen Call przBS415(RECHNUNG) ' Bankspesen errechnen
'Call setFixeTaxeMin(RECHNUNG, 500, 20) ' Mind Fixe Taxe errechnen Call setFixeTaxeMin(RECHNUNG, 500) ' Mind Fixe Taxe errechnen
'Me![SteuerpflichtigerGesamtbetrag] = 0.0# 'Me![SteuerpflichtigerGesamtbetrag] = 0.0#
'Me![SteuerfreierGesamtbetrag] = 0.0# 'Me![SteuerfreierGesamtbetrag] = 0.0#
@@ -3045,20 +3045,16 @@ Public Class usrCntlFaktAbrechnung
' RECHNUNG.POSITIONEN.Add(FixeTaxePOS) ' RECHNUNG.POSITIONEN.Add(FixeTaxePOS)
'...und der Wert gesetzt. '...und der Wert gesetzt.
FixeTaxePOS.Anzahl = 1 FixeTaxePOS.Anzahl = 1
FixeTaxePOS.Preis = getVorzeichen(RECHNUNG) * FixeTaxe FixeTaxePOS.Preis = getVorzeichen(RECHNUNG) * FixeTaxePOS.[Preis]
initSteuerbetraege(RECHNUNG, FixeTaxePOS) initSteuerbetraege(RECHNUNG, FixeTaxePOS)
End If End If
End Sub End Sub
Shared Sub setFixeTaxeMin(ByRef RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, ByRef minBetrag As Double, fixeTaxe As Double) Shared Sub setFixeTaxeMin(ByRef RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, ByRef minBetrag As Double)
Dim FixeTaxe_Berechnungbetrag As Double = 0 Dim FixeTaxe_Berechnungbetrag As Double = 0
If Not CBool(SQL.DLookup("[PP441]", "Filialen", "[FilialenNr]=" & RECHNUNG.FilialenNr, "FMZOLL", False)) Then
Exit Sub
End If
If Not leistungExistsInPos(RECHNUNG, 441) Then Exit Sub 'Schauen, ob die Leistung in den Positionen vorhanden ist If Not leistungExistsInPos(RECHNUNG, 441) Then Exit Sub 'Schauen, ob die Leistung in den Positionen vorhanden ist
For Each POS In RECHNUNG.POSITIONEN For Each POS In RECHNUNG.POSITIONEN
@@ -3079,13 +3075,13 @@ Public Class usrCntlFaktAbrechnung
FixeTaxePOS.BerechnungsartNr = 1 FixeTaxePOS.BerechnungsartNr = 1
'RECHNUNG.POSITIONEN.Add(FixeTaxePOS) 'RECHNUNG.POSITIONEN.Add(FixeTaxePOS)
'...und der Wert gesetzt. '...und der Wert gesetzt.
If FixeTaxe_Berechnungbetrag < minBetrag Then If FixeTaxe_Berechnungbetrag < minBetrag AndAlso CBool(SQL.DLookup("[PP441]", "Filialen", "[FilialenNr]=" & RECHNUNG.FilialenNr, "FMZOLL", False)) Then
FixeTaxePOS.Anzahl = 1 FixeTaxePOS.Anzahl = 1
Else Else
FixeTaxePOS.Anzahl = 0 FixeTaxePOS.Anzahl = 0
End If End If
FixeTaxePOS.Preis = getVorzeichen(RECHNUNG) * fixeTaxe 'Preis wird bewusst überschrieben!!! FixeTaxePOS.Preis = getVorzeichen(RECHNUNG) * FixeTaxePOS.Preis 'Preis wird bewusst überschrieben!!!
initSteuerbetraege(RECHNUNG, FixeTaxePOS) initSteuerbetraege(RECHNUNG, FixeTaxePOS)

View File

@@ -1,5 +1,6 @@
Imports System.Data.OleDb Imports System.Data.OleDb
Imports System.IO Imports System.IO
Imports com.sun.xml.internal.rngom
Imports itextsharp.text.pdf Imports itextsharp.text.pdf
Imports MDM_Worker Imports MDM_Worker
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -1220,8 +1221,6 @@ Public Class frmMDMDatenverarbetiung
End If End If
Next Next
End If End If
If verarbOK Then If verarbOK Then
'UPDATE Fakturiert 'UPDATE Fakturiert
SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL") SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL")
@@ -3437,6 +3436,10 @@ Public Class frmMDMDatenverarbetiung
Dim sqlstr As String = "" Dim sqlstr As String = ""
Dim useNettogesamtbetrag As Boolean = False 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) Dim OFFERTE As New VERAG_PROG_ALLGEMEIN.cOfferte(KdNr, OffertenNr, True)
RG.LOAD_OFFERT_POSITIONEN() ' --> OFFERTE MIT ANZAHL >0 und Preis >0 RG.LOAD_OFFERT_POSITIONEN() ' --> OFFERTE MIT ANZAHL >0 und Preis >0
@@ -3636,11 +3639,11 @@ Public Class frmMDMDatenverarbetiung
End If End If
'cFakturierung.setGesamtBetraege(RG,, useNettogesamtbetrag) 'cFakturierung.setGesamtBetraege(RG,, useNettogesamtbetrag)
'Call usrCntlFaktAbrechnung.przFixeTaxe(RG) ' Fixe Taxe 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 nicht 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.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) cFakturierung.setGesamtBetraege(RG,, useNettogesamtbetrag)
@@ -3705,12 +3708,6 @@ Public Class frmMDMDatenverarbetiung
POS.BGebProzent = o.BGebProzent POS.BGebProzent = o.BGebProzent
POS.BGebMinBetrag = o.BGebMinBetrag POS.BGebMinBetrag = o.BGebMinBetrag
If POS.LeistungsNr = 441 Then
MsgBox("")
End If
RG.POSITIONEN.Add(POS) RG.POSITIONEN.Add(POS)
@@ -3839,6 +3836,9 @@ Public Class frmMDMDatenverarbetiung
Dim cnt = 0 Dim cnt = 0
Dim cntTotal = MyDatagridview1.Rows.Count() Dim cntTotal = MyDatagridview1.Rows.Count()
checkFixeTaxeImOffert("PLOSE", VERAGKdNr_DT)
For Each r As DataGridViewRow In MyDatagridview1.Rows For Each r As DataGridViewRow In MyDatagridview1.Rows
'KUNDEN-NR / PLOSE KD-NR 'KUNDEN-NR / PLOSE KD-NR
results = VERAGKdNr_DT.Select("PLOSEKundenNr = '" & r.Cells("plose_POLSEKundennummer").Value & "'") results = VERAGKdNr_DT.Select("PLOSEKundenNr = '" & r.Cells("plose_POLSEKundennummer").Value & "'")
@@ -3930,6 +3930,10 @@ Public Class frmMDMDatenverarbetiung
ORDER BY cardnumber", "FMZOLL") 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 VERAGKdNr = -1
Dim VERAGLeistungsNr = -1 Dim VERAGLeistungsNr = -1
Dim found = False Dim found = False
@@ -3956,7 +3960,7 @@ Public Class frmMDMDatenverarbetiung
pruefData_UTA = True pruefData_UTA = True
Try 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 & "' FROM tblUTAImportNew LEFT JOIN Adressen ON tblUTAImportNew.Kundennummer = Adressen.UTAKundenNr WHERE cast(tblUTAImportNew.Rechnungsdatum as Date) = '" & DateTimePicker2.Text & "'
GROUP BY tblUTAImportNew.Kundennummer, Adressen.UTAKundenNr GROUP BY tblUTAImportNew.Kundennummer, Adressen.UTAKundenNr
HAVING (((Adressen.UTAKundenNr) Is Null))", "FMZOLL") HAVING (((Adressen.UTAKundenNr) Is Null))", "FMZOLL")
@@ -3998,6 +4002,13 @@ Public Class frmMDMDatenverarbetiung
End If 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 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, "")) 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 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! 'das muss die letzte Prüfung sein, da uU eine Transaktion fehlen kann!
Dim fehlendeTransactionen As Integer = 0 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") 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 If dt.Rows.Count > 0 Then
Dim counter As Integer = 0 Dim counter As Integer = 0
For Each r In dt.Rows For Each r In dt.Rows
@@ -4903,4 +4927,64 @@ RabattBerechnen:
Return checkDate Return checkDate
End Function 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 End Class

View File

@@ -544,6 +544,11 @@ Public Class usrcntlFakturierung
Dim intZlr As Integer = 0 Dim intZlr As Integer = 0
If r("RechnungsKundenNr") = "401715" Or r("RechnungsKundenNr") = "401943" Or r("RechnungsKundenNr") = "402179" Or r("RechnungsKundenNr") = "402598" Or r("RechnungsKundenNr") = "402656" Or r("RechnungsKundenNr") = "402688" Or r("RechnungsKundenNr") = "402719" Or r("RechnungsKundenNr") = "402888" Or r("RechnungsKundenNr") = "402933" Or r("RechnungsKundenNr") = "401733" Or r("RechnungsKundenNr") = "402245" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "402065" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "401908" Or r("RechnungsKundenNr") = "401829" Or r("RechnungsKundenNr") = "203083" Then
'MsgBox("Test")
End If
' Bei BetragExclusivFT kleiner als 500€ wird 1x fixe Taxe verrechnet, bei grösser/gleich 500€ wird kein fixe Taxe verrechnet. ' Bei BetragExclusivFT kleiner als 500€ wird 1x fixe Taxe verrechnet, bei grösser/gleich 500€ wird kein fixe Taxe verrechnet.
' Zähler auf die Anzahl der fixe Taxe Löschungen einstellen. ' Zähler auf die Anzahl der fixe Taxe Löschungen einstellen.
@@ -556,6 +561,7 @@ Public Class usrcntlFakturierung
End If End If
Else Else
If (0 - r("BetragExclusivFT")) < 500 Then If (0 - r("BetragExclusivFT")) < 500 Then
intZlr = r("AnzahlFT") - 1 intZlr = r("AnzahlFT") - 1
Else Else
@@ -619,6 +625,8 @@ Public Class usrcntlFakturierung
intZlr = intZlr - row("Anzahl") intZlr = intZlr - row("Anzahl")
If intZlr < 0 Then Exit For
If Not IsDBNull(row("SteuerpflichtigerBetrag")) AndAlso IsNumeric(row("SteuerpflichtigerBetrag")) Then stgesBetr = stgesBetr - CDbl(row("SteuerpflichtigerBetrag")) If Not IsDBNull(row("SteuerpflichtigerBetrag")) AndAlso IsNumeric(row("SteuerpflichtigerBetrag")) Then stgesBetr = stgesBetr - CDbl(row("SteuerpflichtigerBetrag"))
If Not IsDBNull(row("SteuerfreierBetrag")) AndAlso IsNumeric(row("SteuerfreierBetrag")) Then stfregesBetr = stfregesBetr - CDbl(row("SteuerfreierBetrag")) If Not IsDBNull(row("SteuerfreierBetrag")) AndAlso IsNumeric(row("SteuerfreierBetrag")) Then stfregesBetr = stfregesBetr - CDbl(row("SteuerfreierBetrag"))
@@ -628,7 +636,7 @@ Public Class usrcntlFakturierung
isSet = RECHNUNG.SAVE(False) isSet = RECHNUNG.SAVE(False)
End If End If
If intZlr = 0 Then Exit For If intZlr <= 0 Then Exit For
Next Next