Neu Extern erstelltes SQL - Angebot falsche Werte

Oliver PP

Gut bekanntes Mitglied
28. April 2021
133
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
578
261
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.975
982
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
133
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
Kundenstammdaten - "Eigenes Feld" in SQL auslesen JTL-Wawi 1.9 2
Aktuelles Update 1.11.7: Anmeldedialog merkt sich den letzten User immer noch nicht & falsche Warnung für angeblich fehlendes SQL Server Update JTL-Wawi 1.11 3
Neu Frage zu SQL Statement - Kunden-Kommentar aus Auftrag auf Pickliste User helfen Usern - Fragen zu JTL-Wawi 1
Neu Bestellungen werden verzögert oder nicht gepullt – Ursache: Zeitzonen-Filter im SQL des WooCommerce-Connectors WooCommerce-Connector 0
Neu SQL Worker.tStatus - Bedeutung von nStatus? JTL Ameise - Eigene Exporte 2
Neu Suche Servicepartner für SQL-Abfrage Dienstleistung, Jobs und Ähnliches 2
Neu askJan | Neuer KI-Assistent für JTL-Wawi - schnelle, effiziente und transparente KI-Datenanalyse - ohne SQL! Dienstleistung, Jobs und Ähnliches 41
Neu JTL-Wawi 1.11.5: Sequenzieller Kundenexport mit Workflow und SQL-Queue Schnittstellen Import / Export 2
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 21
Neu JTL Diag / SQL Mitschnitt lässt sich nicht mehr starten User helfen Usern - Fragen zu JTL-Wawi 12
Neu JTL_DirectQuery - SQL Abfrage Anzahl der Pakete auf Versandliste (DPD) User helfen Usern - Fragen zu JTL-Wawi 4

Ähnliche Themen