Neu Extern erstelltes SQL - Angebot falsche Werte

Oliver PP

Gut bekanntes Mitglied
28. April 2021
131
16
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
557
254
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.901
950
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
131
16
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 Wie lässt sich der Lieferstatus von Aufträgen per SQL abfragen? User helfen Usern - Fragen zu JTL-Wawi 8
Neu JTL Wawi auf Windows Server 2025 mit SQL 2025? Installation von JTL-Wawi 6
Neu JTL Diag / SQL Mitschnitt lässt sich nicht mehr starten User helfen Usern - Fragen zu JTL-Wawi 6
Neu JTL_DirectQuery - SQL Abfrage Anzahl der Pakete auf Versandliste (DPD) User helfen Usern - Fragen zu JTL-Wawi 3
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

Ähnliche Themen