Neu Extern erstelltes SQL - Angebot falsche Werte

Oliver PP

Gut bekanntes Mitglied
28. April 2021
129
15
Hallo,
wir haben in unseren Angeboten und Rechnungen:

Listenpreis - Rabatt - Einzelpreis - Endpreis gesamt

Nun aber ist bei den Angeboten der Einzelpreis falsch berechnet.
Ich komme mit SQL (ist das doch oder? ) nicht weiter.
Sieht jemand wo der Fehler sein könnte in der Formel?

Bei Rechnungen geht es so:
LocCurrL$ ((SalesOrderPosition.NetPricePerUnit - (JTL_DirectQuery ("SELECT CAST(fVKNetto * (fRabatt / 100.0) AS DECIMAL(25,13)) AS DiscountValueNET FROM Verkauf.tAuftragPosition WHERE kAuftragPosition = "+str$(SalesOrderPosition.InternalId,0,0)+""))), JTL_GetCulture(Report.CountryISO, Report.LanguageISO, Report.CurrencyISO))

Bei Angeboten ist folgender Befehl drin aber der bringt ein falsches Ergebnis:
LocCurrL$ ((SalesQuotationPosition.NetPricePerUnit - (JTL_DirectQuery ("SELECT CAST(tBestellpos.nAnzahl * tBestellpos.fVKNetto - tBestellpos.nAnzahl * tBestellpos.fVKNetto * (1.0 - tBestellpos.fRabatt / 100.0) AS DECIMAL(25,13)) AS DiscountValueNET FROM tBestellpos WHERE kBestellPos = "+str$(SalesQuotationPosition.InternalId,0,0)+""))), JTL_GetCulture(Report.CountryISO, Report.LanguageISO, Report.CurrencyISO))

DANKE!
 

Anhänge

  • falscher Einzelpreis.jpg
    falscher Einzelpreis.jpg
    21,4 KB · Aufrufe: 8

sjk

Sehr aktives Mitglied
16. Januar 2019
551
253
Also die zweite Query für die Angebote ergibt überhaupt keinen Sinn. Die zieht den Rabattbetrag auf Positionsebene vom Nettolistenpreis ab, statt den Rabatt pro Stück zu berechnen.
So kommst du auch auf die 141,09 € in deinem Beispiel:
DirectQuery: (2 * 207,48 €) - (2 * 207,48 € * (1 - 16 /100 )) = 66,39 €
Und dann 207,48 € - 66,39 € = 141,09 €
Je höher die Anzahl einer Position also, desto falscher wird das Ergebnis weil immer die Gesamtersparnis auf Positionsebene vom Nettolistenpreis angezogen wird.

Im Gegensatz dazu multipliziert die erste Query für die Rechnung ganz einfach den Nettoeinzelpreis mit dem Rabattfaktor (also den Rabattbetrag pro einzelnem Produkt) und zieht diesen vom Nettolistenpreis ab.

Ich kann das nicht testen, aber das müsste eigentlich funktionieren:
SQL:
LocCurrL$ (
  JTL_DirectQuery (
    "SELECT CAST(fVKNetto * (1.0 - fRabatt / 100.0) AS DECIMAL(25,13))
     FROM tBestellpos
     WHERE kBestellPos = "+str$(SalesQuotationPosition.InternalId, 0, 0)+"
  "),
  JTL_GetCulture(Report.CountryISO, Report.LanguageISO, Report.CurrencyISO)
)
 
  • Gefällt mir
Reaktionen: Oliver PP

John

Sehr aktives Mitglied
3. März 2012
3.887
942
Berlin
Das von Hand berechnen zu wollen, ist nicht ratsam.

Nimm einfach die fertige Funktion dbo.ifGetPrice.
Ihr wird kArtikel, kShop, kKunde, kKundengruppe, fAnzahl übergeben und heraus kommt der fertige Preis mit allen Rabatten etc. wie ihn auch die Wawi für den Kunden nutzen würde.
 
  • Gefällt mir
Reaktionen: no80 und Oliver PP

Oliver PP

Gut bekanntes Mitglied
28. April 2021
129
15
Also die zweite Query für die Angebote ergibt überhaupt keinen Sinn. Die zieht den Rabattbetrag auf Positionsebene vom Nettolistenpreis ab, statt den Rabatt pro Stück zu berechnen.
So kommst du auch auf die 141,09 € in deinem Beispiel:
DirectQuery: (2 * 207,48 €) - (2 * 207,48 € * (1 - 16 /100 )) = 66,39 €
Und dann 207,48 € - 66,39 € = 141,09 €
Je höher die Anzahl einer Position also, desto falscher wird das Ergebnis weil immer die Gesamtersparnis auf Positionsebene vom Nettolistenpreis angezogen wird.

Im Gegensatz dazu multipliziert die erste Query für die Rechnung ganz einfach den Nettoeinzelpreis mit dem Rabattfaktor (also den Rabattbetrag pro einzelnem Produkt) und zieht diesen vom Nettolistenpreis ab.

Ich kann das nicht testen, aber das müsste eigentlich funktionieren:
SQL:
LocCurrL$ (
  JTL_DirectQuery (
    "SELECT CAST(fVKNetto * (1.0 - fRabatt / 100.0) AS DECIMAL(25,13))
     FROM tBestellpos
     WHERE kBestellPos = "+str$(SalesQuotationPosition.InternalId, 0, 0)+"
  "),
  JTL_GetCulture(Report.CountryISO, Report.LanguageISO, Report.CurrencyISO)
)
Perfekt! Danke dir, ist korrekt jetzt.
Gruß
 
Ähnliche Themen
Titel Forum Antworten Datum
Worker 2 Dienst läuft aber mehr nicht || Wie Worker 2 extern überwachen? JTL-Wawi 1.10 8
Neu Welche SQL Server Version für WaWi 1.0.0.0.0 unter Windows 11 Installation von JTL-Wawi 6
Neu Bilder von Kinderartikeln auf Vaterartikel kopieren via SQL Eigene Übersichten in der JTL-Wawi 2
Neu Täglich SQL Backup vom Shop Allgemeine Fragen zu JTL-Shop 2
Kann ich mit dieser SQL Version die neue WaWi 1.11.1 installieren? JTL-Wawi 1.11 2
Neu Kundengruppe per SQL löschen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Sql Express 2022 - wawi sagt beim Start es ist ein Update bereit - gelöst Installation von JTL-Wawi 3
Neu In welcher SQL Tabelle finde ich den Ansprechpartner des Herstellers? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Seriennummern und SQL Abfragen User helfen Usern - Fragen zu JTL-Wawi 1
Update SQL Server Management Studio JTL-Wawi 1.10 1
Neu Einrichtung SQL in neuem Rechner funktioniert nicht Installation von JTL-Wawi 3
Neu SQL Code für GPSR Felder (Kaufland) zeigt Fehler + wird daher nicht übertragen kaufland.de - Anbindung (SCX) 0
Neu SQL für noch nie Verkaufte Artikel auf Marktplätzen. User helfen Usern - Fragen zu JTL-Wawi 3
Neu Update von 1.5.55.5 auf aktuell, welche Reihenfolge, SQL Express auf Standard Installation von JTL-Wawi 10
Neu PayPal - PayPal Checkout - 221 – SQL Fehler Plugins für JTL-Shop 0

Ähnliche Themen