Zum Inhalt springen
Q
QuoteNode

Wiki

Pricing Engine

Wie die deterministische Pricing Engine von QuoteNode Angebotssummen berechnet, Rabatte anwendet und Multi-Currency sowie MwSt. verarbeitet.

Pricing Engine

QuoteNode verwendet eine deterministische Pricing Engine, die reproduzierbare und auditierbare Berechnungen sicherstellt. Jeder Preis, jeder Rabatt und jeder Steuerbetrag folgt einer festen Auswertungsreihenfolge und wird zur Verifikation gespeichert.

Berechnungsreihenfolge

Die Engine verarbeitet Preise exakt in dieser Abfolge:

  1. Line unit price — Basispreis aus dem Katalog oder manuell eingegeben für freie Positionen
  2. Pricing rule evaluation — automatische Anpassung auf Basis von Kunden- oder Kundengruppenregeln
  3. Quantity multiplication — unit_price × quantity = line_subtotal
  4. Line-level discount — prozentual oder als fixer Betrag vom line_subtotal = line_net
  5. Line VAT — line_net × VAT_rate = line_vat
  6. Line gross — line_net + line_vat = line_gross
  7. Subtotal — Summe aller line_net-Werte
  8. Offer-level discount — prozentual oder fix auf den Subtotal
  9. Shipping — wird zum rabattierten Subtotal (NET) addiert
  10. Total NET — rabattierter Subtotal + Shipping
  11. Total VAT — Summe der VAT-Beträge nach eventueller Neuberechnung
  12. Total GROSS — total_net + total_vat

Pricing Rules

Pricing Rules erlauben automatische Preisänderungen abhängig von Kundenbeziehungen.

Ziel der Regeln

  • Pro Kunde — gilt für einen bestimmten Kunden
  • Pro Kundengruppe — gilt für alle Kunden einer Gruppe

Scope der Regeln

  • Alle Produkte — die Regel gilt für den gesamten Katalog
  • Bestimmte Produktgruppe — die Regel gilt nur innerhalb einer benannten Gruppe

Regeltypen

  • Percentage discount — prozentualer Rabatt auf den Basispreis
  • Percentage markup — prozentualer Aufschlag
  • Fixed amount discount — fixer Rabatt pro Einheit
  • Fixed amount markup — fixer Aufschlag pro Einheit

Prioritäten und Konflikte

Wenn mehrere Regeln auf dieselbe Kunde-Produkt-Kombination passen:

  1. werden die Regeln nach Priorität sortiert,
  2. gewinnt die Regel mit der höchsten Priorität,
  3. Regeln werden nicht gestapelt.

Gültigkeit

Jede Regel kann einen Datumsbereich (valid_from, valid_to) und ein Aktiv-Flag haben. Nur aktive Regeln innerhalb des Gültigkeitsfensters werden ausgewertet.

Multi-Currency

QuoteNode unterstützt Angebote in jeder konfigurierten Währung:

  • Base currency — Standardwährung des Tenants, für Reports genutzt
  • Offer currency — die Währung eines konkreten Angebots
  • FX rate — der Wechselkurs zwischen Angebots- und Basiswährung

Wenn ein Angebot nicht in der Basiswährung erstellt wird:

  1. werden Produktpreise im Katalog in Basiswährung gespeichert,
  2. rechnet das System beim Erstellen mit dem aktuellen Kurs um,
  3. wird der verwendete Kurs im Snapshot gespeichert,
  4. konvertieren Pipeline-Berichte Werte anhand dieses gespeicherten Kurses zurück.

FX-Kurse werden aktuell manuell gepflegt. Automatische NBP-/ECB-Integration ist weiterhin geplant.

MwSt.-Handling

VAT Groups

VAT-Gruppen definieren die verfügbaren Steuersätze eines Tenants:

  • Standardraten wie 23 %, 8 %, 5 %, 0 %
  • befreit
  • benutzerdefinierte Sätze für besondere Jurisdiktionen

Jedes Produkt ist einer VAT-Gruppe zugeordnet. Eine Gruppe ist der Standard für neue Produkte und freie Positionen.

VAT pro Position

MwSt. wird pro Zeile und nicht als Pauschale auf die Gesamtsumme berechnet. Das ist entscheidend für Angebote mit unterschiedlichen Steuersätzen.

Die Angebotssumme enthält einen VAT-Breakdown mit Gesamtwerten pro Satz.

Preisanzeigemodi

Jedes Angebot kann in einem von drei Modi dargestellt werden:

  • NET — nur Nettowerte sichtbar
  • GROSS — nur Bruttowerte sichtbar
  • NET + VAT + GROSS — vollständige Aufschlüsselung pro Zeile und in den Summen

Der Modus wird pro Angebot definiert und beeinflusst sowohl PDF als auch öffentliche Angebotsseite.

Rabatte

Rabatte auf Zeilenebene

Jede Zeile kann einen individuellen Rabatt besitzen:

  • prozentual,
  • als fixer Betrag.

Der Rabatt wird nach der Mengenmultiplikation und vor der MwSt. angewendet.

Rabatt auf Angebotsebene

Ein globaler Rabatt kann auf das gesamte Angebot gelegt werden:

  • prozentual,
  • als fixer Betrag.

Er wird nach der Summierung aller Zeilen, aber vor Versand und MwSt. angewendet.

Darstellung von Rabatten

Das Template-System unterstützt drei Modi:

  • BAKED_IN — der Kunde sieht nur den Endpreis
  • SHOW_COLUMN — Rabatt wird in einer eigenen Spalte ausgewiesen
  • HIDDEN — Rabatt wirkt, wird aber nicht separat dargestellt

Rundung

Alle monetären Berechnungen nutzen HALF_UP-Rundung. Gerundet wird:

  • pro Zeile nach Rabatt und vor MwSt.,
  • pro MwSt.-Betrag,
  • auf Ebene der Angebotsgesamtsumme.

Das konsistente Rundungsmodell stellt sicher, dass Positionssummen und Gesamtergebnis zusammenpassen.

Gespeicherte Summen

Berechnete Totale werden in der denormalisierten Tabelle offer_totals gespeichert, um:

  • schnelle Queries in Reports und Listen zu ermöglichen,
  • Audit-Validierung zu unterstützen,
  • historische Genauigkeit auch nach späteren Änderungen an Preisregeln zu bewahren.

Last reviewed: Recently