Hi Rico,
es ist zwar gut zu sehen, dass mit
Ticket 16902 gleich eine ganze Reihe von Problemen im Zusammenhang mit Rabattstaffeln und
Lieferantenbestellungen angegangen werden sollen, aber dort werden eingentlich nur "Unzulänglichkeiten" und "Nice to have" Feature-Requests gelistet, was sicherlich auch die Priorität von "Normal" und den Status "Zukünftig" erklärt.
Was Mario hier aber berichtet geht deutlich über Ticket 16902 hinaus, denn es ist tatsächlich so, das sobald eine Lieferantenbestellungs-Rabattstaffel greift,
alle Mehrwertsteuerbeträge und auch das Gesamtbrutto der Bestellung
falsch berechnet werden. Und das ist natürlich eine ganz andere Hausnummer, denn das ist steuerrechtlich relevant und ein falscher Bruttobetrag auf
*jeder* Lieferantenbestellung wird die Lieferanten recht bald an der Zurechnungsfähigkeit des Händlers zweifeln lassen. Auf jeden Fall wird es ständig Rückfragen und im Zweifel auch Folgefehler geben.
So etwas gehört deshalb auch nicht in ein Ticket mit Priorität "Normal" und schon gar nicht mit dem Status "Zukünftig". - Könntest Du vielleicht aus diesem Bug, denn es ist definitiv einer, ein eigenes Ticket mit erhöhter Prio und einem etwas
~zeitnäheren~ Status machen?
Das Problem von Mario ist ja aber eigentlich ein Vorlagenproblem und zuerst habe ich gedacht, dass man das sicherlich in der Vorlage mit Bordmitteln bereinigen kann, ich habe aber schnell festgestellt, dass dazu eine Variable für die Rabattstaffel fehlt und dass im Bereich für den Gesamtbetrag auch der Zugriff auf die Einzelnettobeträge für die Mehrwertsteuersätze fehlt.
Also habe ich das Problem mit zwei JTL_DirectQueries gelöst und zwar so ...
1. Im Bereich Projekt der Vorlage eine neue Benutzervariable namens
@Rabattstaffel anlegen und folgenden Inhalt geben ...
Code:
JTL_DirectQuery("(SELECT ABS((SELECT SUM(fMenge*fEKNetto) FROM tLieferantenBestellungPos WHERE nPosTyp=10 AND kLieferantenBestellung="+ToString$(Vorgang.InterneLieferantenbestellungsnummer)+")/(SELECT SUM(fMenge*fEKNetto) FROM tLieferantenBestellungPos WHERE nPosTyp<>10 AND kLieferantenBestellung="+ToString$(Vorgang.InterneLieferantenbestellungsnummer)+")))")
2. In der Zeile/Spalte des Berichtscontainers, in der die Umsatzsteuer ausgegeben wird, die obere durch die untere Zeile ersetzen ...
Code:
fstr$(SummenEinkauf.USt, "-?&.##")+" "+Vorgang.Währung
fstr$((SummenEinkauf.Netto*(1-Val(@Rabattstaffel))*(SummenEinkauf.UStSatz/100)), "-?&.##")+" "+Vorgang.Währung
3. In der Zeile/Spalte des Berichtscontainers, in der das Gesamtbrutto ausgegeben wird, die obere durch die untere Zeile ersetzen ...
Code:
fstr$(Vorgang.Positionen.BruttopreisGesamt,"-?&.##")+" "+Vorgang.Währung
fstr$(JTL_DirectQuery("SELECT SUM(fMenge*fEKNetto*(1-"+ToString$(Val(@Rabattstaffel))+")*(1+(fUST/100))) FROM tLieferantenBestellungPos WHERE nPosTyp<>10 AND kLieferantenBestellung="+ToString$(Vorgang.InterneLieferantenbestellungsnummer)),"-?&.##")+" "+Vorgang.Währung
Der Weg über die Benutzervariable ist sicherlich nicht zwingend, macht das Ganze aber übersichtlicher, weil die Staffel ja an mehreren Stellen verwendet wird und man sonst immer ein echtes JTL_DirectQuery-Trum dastehen hätte. Und bei Gesamtbrutto wäre das sonst nur über eine komplette SQL Transaction gegangen, weil man keine Aggregatvariablen in Aggregatvariablen verwenden kann. Sieht also übermäßig kompliziert aus, ist aber nötig...
@Mario Pichlmaier - Da Du noch "ganz frisch" bei der
Wawi oder zumindest hier im Forum bist, habe ich Dir eine geänderte/korrigierte Lieferantenbestellungs-Standardvorlage unten angehängt. Die kannst Du Dir in den Vorlageneditor im Bereich der Lieferantenbestellungen importieren, ihr vielleicht eine Sprache oder Kundengruppe oder Plattform zuweisen, die dafür sorgen, dass sie nicht ohne Dein Zutun aufgerufen/verwendet wird. Du kannst sie dann ja aber von Hand aufrufen und dadurch vielleicht auch leichter nachvollziehen wo und was für Änderungen ich mit den drei Punkten von oben meine. Dann sollte es leicht sein, die neuen Terme in Deine eigene Vorlage zu übertragen.
Gruß,
Ingmar