Preislisten in Odoo: Kundengruppen, Staffeln, Währungen
Kurz gesagt
Preise je Kunde steuern Sie in Odoo 20.0 mit Preislisten: Jede Preisliste enthält Preisregeln, und Sie weisen sie einem Kontakt im Reiter Verkauf & Einkauf zu. Ohne ausdrückliche Zuordnung greift die Standard-Preisliste, laut Dokumentation 20.0 die erste Preisliste ohne Ländergruppe; nach dem Community-Quellcode 20.0 sucht Odoo für einen Kontakt zuvor eine Preisliste mit passender Ländergruppe. Mengenstaffeln entstehen über mehrere Regeln mit steigender Mindestmenge, eine andere Währung über das Feld Währung der Preisliste; Fremdwährungen setzen die App Buchhaltung voraus. Ob der Rabatt einer Regel getrennt als Prozentsatz erscheint, hängt von der Einstellung Rabatte (Discounts) und der Preisart der Regel ab; bei einer Kette reiner Prozentrabatte über eine zweite Preisliste zeigt die Spalte Rabatt % den Gesamtabzug bis zum Ausgangspreis der Kette.
Das Wichtigste
- Eine Preisliste gilt je Kontakt; ohne eigene Zuordnung greift die Standard-Preisliste (erste Preisliste ohne Ländergruppe), nach dem Community-Quellcode 20.0 zuvor eine Preisliste mit passender Ländergruppe.
- Mengenstaffeln bilden Sie mit mehreren Regeln und steigender Mindestmenge; bei gleicher Spezifität hat die höhere Mindestmenge Vorrang.
- Jede Preisliste führt genau eine Währung; Fremdwährungen setzen die App Buchhaltung voraus.
- Preisregeln sind Vorschläge: Der Einzelpreis lässt sich im Angebot von Hand überschreiben.
- Die Preisliste am Kontakt füllt das Feld Preisliste im Angebot vor.
- Ist die Einstellung Rabatte (Discounts) an, steht bei einem reinen Prozentrabatt der Basispreis der Regel als Einzelpreis und der Abzug in der Spalte Rabatt %; bei einer Regel auf den Verkaufspreis ist dieser Basispreis der Verkaufspreis, bei einer Kette reiner Prozentrabatte über eine zweite Preisliste der Ausgangspreis der Kette mit dem Gesamtabzug in der Spalte. Ist die Einstellung aus oder greift eine andere Preisart, steht der gerechnete Preis im Feld Einzelpreis.
Preislisten sind in Odoo der Ort, an dem Angebotspreise entstehen. Ein Produkt trägt einen Verkaufspreis; welche Preisliste im Angebot steht, entscheidet, welche Preisregel den Preis der Angebotszeile rechnet. Diese Anleitung richtet eine Preisliste mit Mengenstaffel und eine zweite in fremder Währung ein.
Was Sie vorab brauchen
- Die App Verkauf (Sales) ist installiert; damit stehen Produkte und Preislisten bereit.
- Die Funktion Preislisten ist aktiv: Verkauf > Konfiguration > Einstellungen (Settings), Abschnitt Preiskalkulation (Pricing), Kontrollkästchen Preislisten (Pricelists). Zum Ändern der Einstellungen brauchen Sie Zugriff auf die Einstellungen (Administratorrechte oder ein entsprechendes Recht).
- Ihre Produkte haben einen Verkaufspreis; wer auf die Kosten rechnen will, pflegt zusätzlich einen Kostensatz.
- Für Preise in fremder Währung ist die App Buchhaltung (Accounting) installiert. Odoo arbeitet mit über 160 Währungen; die Dokumentation 20.0 nennt 167.
- Optional: Ländergruppen (Country Groups), wenn Preislisten nach dem Land des Kontakts greifen sollen.
- Optional: die Funktion Rabatte (Discounts) unter Verkauf > Konfiguration > Einstellungen im Abschnitt Preiskalkulation, wenn das Angebot den Rabatt einer Regel als eigenen Prozentsatz zeigen soll; dieselbe Funktion schaltet die Spalte für manuell eingetragene Rabatte am Angebot frei.
Wie Preisliste, Preisregel und Zuweisung zusammenspielen
Drei Bausteine greifen ineinander:
| Baustein | Wo er steht | Was er festlegt |
|---|---|---|
| Preisliste | Verkauf > Produkte > Preislisten (Pricelists) | eine Währung, optional Unternehmen und Ländergruppen |
| Preisregel | Reiter Regeln (Rules) der Preisliste | Ziel, Preisart, Wert, Mindestmenge, Gültigkeit |
| Zuweisung | Kontakt, Reiter Verkauf & Einkauf, Feld Preisliste (Pricelist) | welcher Kunde die Preisliste bekommt |
Eine Preisliste führt genau eine Währung. Sie tragen sie beim Anlegen ein; ohne das Recht auf mehrere Währungen (App Buchhaltung) bleibt es bei der Hauptwährung des Unternehmens. Nur im Entwicklermodus zeigt das Regelformular zusätzlich einen Abschnitt Unternehmenseinstellungen mit einem eigenen Feld Währung je Regel. Die Spalte Auswählbar (Selectable) betrifft allein den Webshop.
Trifft im Angebot keine eigene Wahl, sucht Odoo eine passende Preisliste. Nach dem Community-Quellcode 20.0 nimmt es zuerst die am Kontakt hinterlegte Preisliste, sonst eine Preisliste, deren Ländergruppe das Land des Kontakts enthält, und sonst die erste Preisliste ohne Ländergruppe. Diese Standardliste (Dokumentation 20.0: Default pricelist) ist die erste Preisliste unter Verkauf > Produkte > Preislisten ohne Ländergruppe, und Odoo liest die Liste von oben nach unten. Prüfen Sie die Reihenfolge deshalb, bevor Sie mehrere Preislisten parallel führen.
Verschiedene Kundengruppen bilden Sie nicht über ein eigenes Objekt, sondern über dieselbe Zuweisung: Mehrere Kontakte, die dieselbe Preisliste tragen, kaufen zu denselben Bedingungen. Weicht ein einzelner Kunde ab, legen Sie für ihn eine eigene Preisliste an oder ändern die Preisliste direkt im Angebot.
Schritt für Schritt: Preislisten mit Staffel und Währung anlegen
Schritt 1: Funktion Preislisten einschalten
Öffnen Sie Verkauf > Konfiguration > Einstellungen und setzen Sie im Abschnitt Preiskalkulation (Pricing) das Kontrollkästchen Preislisten (Pricelists). Speichern Sie.
Ergebnis: Unter Verkauf > Produkte erscheint der Menüpunkt Preislisten.
Schritt 2: Preisliste anlegen
Öffnen Sie Verkauf > Produkte > Preislisten und klicken Sie auf Neu. Tragen Sie oben den Namen ein und wählen Sie im Feld Währung (Currency) die Währung der Liste. Im Feld Unternehmen (Company) lassen Sie den Wert leer, wenn die Preisliste in allen Gesellschaften der Datenbank gelten soll. Unter Ländergruppen (Country Groups) grenzen Sie ein, für welche Länder die Liste greift.
Ergebnis: Die Liste steht in der Übersicht mit ihrem Namen und ihrer Währung.
Schritt 3: Grundpreisregel anlegen
Öffnen Sie die Preisliste, wechseln Sie in den Reiter Regeln (Rules) und klicken Sie auf Zeile hinzufügen. Ziel und Rechenweg legen Sie in einem Fenster fest. Die deutschen Beschriftungen folgen der deutschsprachigen Oberfläche des Community-Moduls product 20.0:
- Ziel: Füllen Sie Kategorie (Category), Produkt (Product) oder Variante (Variant), gilt die Regel nur dort. Bleiben die Felder leer, gilt sie für alle Produkte; ein Produkt ohne Kategorie fällt dabei nicht unter eine Regel für alle Kategorien. Eine Regel für ein bestimmtes Produkt hat Vorrang vor einer Regel für seine Kategorie.
- Preisart: Im Feld Anwenden (Apply) unterscheidet das Regelformular drei Arten: Rabatt (Discount), die Aufschlagsvariante und Festpreis (Fixed Price). Die Dokumentation 20.0 nennt die Aufschlagsvariante Formel (Formula); im Community-Modul product 20.0 heißt sie Surcharge, und sie schlägt einen Prozentsatz auf den Basispreis auf.
- Basis und Wert: Beim Rabatt tragen Sie den Prozentsatz ein und wählen die Preisliste, von der er genommen wird; ohne Auswahl ist das der Verkaufspreis. Bei der Aufschlagsvariante wählen Sie unter Basiert auf (Based on) den Verkaufspreis, die Kosten oder eine andere Preisliste. Optional runden Sie mit Abrunden auf (Round off to) auf ein Vielfaches und ergänzen einen festen Betrag (Feld Hinzufügen, englisch Add). Beim Festpreis tragen Sie nur den Betrag je Einheit ein.
- Mindestmenge: Lassen Sie das Feld Minimum Quantity auf 0, gilt die Regel ab der ersten Einheit.
- Gültigkeit (Validity): Grenzen Sie die Regel auf einen Zeitraum ein, etwa eine Aktion.
Nach dem Community-Quellcode 20.0 hängt es an der Funktion Rabatte (Discounts) unter Verkauf > Konfiguration > Einstellungen im Abschnitt Preiskalkulation: Ist sie aus, trägt Odoo den gekürzten Preis als Einzelpreis ein. Ist sie an, steht bei einem reinen Prozentrabatt (Prozentsatz auf einen Basispreis, ohne Rundung, Zusatzbetrag oder Margengrenze) der Basispreis der Regel im Feld Einzelpreis und der Abzug in der Spalte Rabatt %; den wirksamen Stückpreis bildet das Angebot aus beidem. Basispreis ist der Preis, von dem die Regel ausgeht: bei einer Regel auf den Verkaufspreis dieser Verkaufspreis, bei einer Regel auf eine andere Preisliste der Preis, den die dort greifende Regel ergibt; verkettet eine Preisliste mehrere reine Prozentrabatte, verfolgt Odoo die Kette bis zum Ausgangspreis der Kette und schreibt den Gesamtabzug in die Spalte. Beispielrechnung: 100,00 EUR, darauf 20 Prozent und danach 10 Prozent ergeben 100,00 EUR im Einzelpreis, 28 in der Spalte Rabatt % und 72,00 EUR als wirksamen Stückpreis. Die Dokumentation 20.0 nennt den Rabatt bei der Preisart Rabatt für den Kunden sichtbar und bei der Preisart Formel nicht.
Ergebnis: Die Zeile erscheint im Reiter Regeln; die Spalte Preis zeigt den Rechenweg in Worten.
Schritt 4: Mengenstaffel ergänzen
Legen Sie weitere Zeilen für dieselbe Preisliste an und erhöhen Sie jeweils die Mindestmenge, etwa 10 und 50. Odoo prüft je Angebotszeile, welche Regeln passen (Mindestmenge 0 oder höchstens so groß wie die Menge), und wendet die passenden Regeln in einer festen Reihenfolge an: zuerst die spezifischste (Variante vor Produkt vor Unterkategorie vor übergeordneter Kategorie vor alle Produkte und alle Kategorien), bei gleicher Spezifität die mit der höchsten Mindestmenge, danach die Reihenfolge der Kategorien und zuletzt die neueste Regel. Die Menge ist dabei die Menge der einzelnen Angebotszeile, nicht die Summe des Auftrags.
Ergebnis: Ab der eingestellten Menge greift die nächste Stufe; der wirksame Stückpreis sinkt auf den Wert der neuen Regel.
Schritt 5: Preisliste einem Kunden zuweisen
Öffnen Sie Verkauf > Aufträge > Kunden, wählen Sie den Kontakt und wechseln Sie in den Reiter Verkauf & Einkauf. Im Abschnitt Verkauf wählen Sie im Feld Preisliste (Pricelist) die gewünschte Liste und speichern. Legen Sie einen neuen Kontakt an, füllt Odoo das Feld Preisliste vor: laut Dokumentation 20.0 mit der Standard-Preisliste, nach dem Community-Quellcode 20.0 mit der Preisliste, deren Ländergruppe zum Land des Kontakts passt.
Ergebnis: Die Preisliste steht am Kontakt. Im Angebot füllt Odoo das Feld Preisliste daraus vor; dort können Sie sie weiterhin umstellen.
Schritt 6: Preisliste in fremder Währung anlegen
Aktivieren Sie zuerst die Währung: Buchhaltung > Konfiguration > Währungen (Currencies) über den Schalter Aktiv, und hinterlegen Sie einen Kurs im Reiter Kurse (Rates). Die Option Automatische Wechselkurse (Automatic Currency Rates) erscheint laut Dokumentation 20.0 nach dem Aktivieren einer zweiten Währung unter Buchhaltung > Konfiguration > Einstellungen im Abschnitt Währungen; sie löst nach dem Community-Quellcode 20.0 die Installation eines Zusatzmoduls aus (Feld module_currency_rate_live) und aktualisiert die Kurse dann in festen Abständen (Dokumentation 20.0: Intervall (Interval) Manually, Daily, Weekly oder Monthly). Ob dieses Modul in Ihrer Installation verfügbar ist, hängt von Ihrer Ausgabe und Ihren Modulbezügen ab; im offiziellen Community-Addons-Verzeichnis des Branchs 20.0 (github.com/odoo/odoo, Verzeichnis addons) liegt kein Modul currency_rate_live. Steht die Automatik nicht zur Verfügung, bleibt die manuelle Kurspflege im Reiter Kurse der Weg. Legen Sie dann eine neue Preisliste an und wählen Sie als Währung die fremde Währung. Die Regeln arbeiten wie in Schritt 3 und 4.
Ergebnis: Kunden mit dieser Preisliste erhalten Angebote in der fremden Währung.
Beispiel: Staffel in Euro und ein Preis in Franken
Beispielrechnung mit erfundenen Zahlen. Die Hauptwährung ist Euro. Das Produkt Ersatzfilter hat einen Verkaufspreis von 100,00 EUR. Die Preisliste Fachhandel steht in EUR und hat drei Regeln auf dem Verkaufspreis. Im Beispiel ist unter Verkauf > Konfiguration > Einstellungen im Abschnitt Preiskalkulation die Funktion Rabatte (Discounts) eingeschaltet, damit das Angebot den Abzug getrennt ausweist:
| Mindestmenge | Preisart | Einstellung | Einzelpreis im Angebot | Rabatt % | wirksamer Preis je Stück |
|---|---|---|---|---|---|
| 0 | Festpreis | 95,00 EUR | 95,00 EUR | – | 95,00 EUR |
| 10 | Rabatt auf Verkaufspreis | 15 % | 100,00 EUR | 15 | 100,00 − 15 % = 85,00 EUR |
| 50 | Rabatt auf Verkaufspreis | 25 % | 100,00 EUR | 25 | 100,00 − 25 % = 75,00 EUR |
Bestellt ein Händler 8 Stück, greift die Zeile mit Mindestmenge 0: Es bleibt beim Festpreis von 95,00 EUR. Bei 12 Stück greift die Zeile mit Mindestmenge 10; der wirksame Preis je Stück fällt auf 85,00 EUR, während im Feld Einzelpreis der Basispreis von 100,00 EUR und in der Spalte Rabatt % die 15 stehen. Bei 60 Stück liegt die Menge über allen Schwellen, also gilt die Zeile mit Mindestmenge 50 und einem wirksamen Preis von 75,00 EUR. Ist die Funktion Rabatte aus, gibt es keine Spalte Rabatt %: Odoo trägt dann 85,00 beziehungsweise 75,00 EUR direkt als Einzelpreis ein.
Die zweite Preisliste Export CHF steht in Schweizer Franken und trägt eine Regel Rabatt 20 % auf den Verkaufspreis. Für die Umrechnung gilt im Beispiel ein Kurs von 1 EUR = 0,94 CHF (erfunden). Odoo rechnet den Verkaufspreis von 100,00 EUR zuerst in die Währung der Preisliste um, also 100,00 × 0,94 = 94,00 CHF, und zieht davon die 20 Prozent ab:
| Schritt | Betrag |
|---|---|
| Verkaufspreis in EUR | 100,00 EUR |
| Umgerechnet zum Kurs 0,94 | 94,00 CHF = Basispreis der Regel und, mit eingeschalteter Funktion Rabatte, Einzelpreis im Angebot |
| Rabatt 20 % auf den umgerechneten Preis | 94,00 − 18,80 = 75,20 CHF; in der Spalte Rabatt % steht 20 |
Ein Festpreis wird dagegen nicht umgerechnet: Tragen Sie in einer CHF-Preisliste einen Festpreis ein, gilt der Betrag als Franken-Betrag. Nach dem Community-Quellcode 20.0 (Modul sale) ist der Kurs, mit dem Odoo rechnet, der Kurs am Datum des Angebots; ändert sich der Kurs, ändert sich der umgerechnete Preis.
So prüfen Sie das Ergebnis
- Öffnen Sie ein Angebot und kontrollieren Sie das Feld Preisliste. Steht dort die erwartete Liste, greift die Zuweisung des Kontakts.
- Tragen Sie eine Menge unterhalb und oberhalb einer Staffelgrenze ein und beobachten Sie den wirksamen Stückpreis. Er muss an der Grenze auf den Wert der nächsten Regel springen. Bei eingeschalteter Funktion Rabatte (Discounts) ändert sich bei einem reinen Prozentrabatt nur die Spalte Rabatt %, während das Feld Einzelpreis auf dem Basispreis der Regel stehen bleibt (bei Regeln auf den Verkaufspreis: der Verkaufspreis); den wirksamen Preis bildet Odoo aus beidem. Ist die Regel mit einer anderen Preisliste verkettet, deren Regel ebenfalls ein reiner Prozentrabatt ist, steht in der Spalte der Gesamtabzug bis zum Ausgangspreis der Kette.
- Bei einer Fremdwährung prüfen Sie im Feld Währung des Angebots und in der Preisliste die gleiche Währung und rechnen einen Betrag mit dem hinterlegten Kurs nach.
- Ändern Sie einen Einzelpreis von Hand und lassen Sie das Angebot neu berechnen. Nach dem Community-Quellcode 20.0 bleibt ein selbst gesetzter Preis stehen; ein Wechsel der Preisliste setzt ihn zurück.
Für Rabatte, die eine Freigabe brauchen, lesen Sie Rabatte und Freigaben im Verkauf. Wie Preislisten im Webshop wirken, beschreibt B2B-Shop mit Odoo.
Wenn etwas nicht klappt
| Symptom | Ursache | Abhilfe |
|---|---|---|
| Der Menüpunkt Preislisten fehlt | Die Funktion ist aus | Unter Verkauf > Konfiguration > Einstellungen im Abschnitt Preiskalkulation einschalten und speichern |
| Am Kontakt fehlt das Feld Preisliste | Kein Zugriff auf die Funktion oder falscher Reiter | Reiter Verkauf & Einkauf prüfen; Funktion und Rechte kontrollieren |
| Der Preis ändert sich bei größerer Menge nicht | Für die Stufe fehlt eine Regel, oder die Mindestmenge steht zu hoch | Im Reiter Regeln die Mindestmengen der Zeilen prüfen |
| Im Angebot steht der ungekürzte Preis, obwohl eine Rabattregel greift | Die Funktion Rabatte (Discounts) ist an, und die Regel ist ein reiner Prozentrabatt; dann steht der Basispreis der Regel im Einzelpreis und der Abzug in der Spalte Rabatt % | Spalte Rabatt % prüfen; soll der gekürzte Preis im Einzelpreis stehen, die Funktion unter Verkauf > Konfiguration > Einstellungen im Abschnitt Preiskalkulation ausschalten, was zugleich die manuelle Rabattspalte entfernt |
| Es greift die falsche Zeile | Eine allgemeinere Regel ist spezifischer als gedacht | Ziel der Regeln prüfen: Produkt vor Kategorie; bei gleicher Spezifikation gewinnt die höhere Mindestmenge |
| Die Fremdwährung fehlt in der Auswahl | Währung nicht aktiviert oder App Buchhaltung fehlt | Unter Buchhaltung > Konfiguration > Währungen aktivieren, App prüfen |
| Kunde erhält die Preise einer anderen Liste | Am Kontakt steht eine andere Preisliste als erwartet, oder es greift eine Ländergruppen-Preisliste | Feld Preisliste am Kontakt und im Angebot prüfen; ohne eigene Zuordnung die Ländergruppen der Listen prüfen |
Wann Sie Hilfe holen sollten
Bei mehreren Gesellschaften, mehreren Lagern und unterschiedlichen Preisen je Land bestimmen Reihenfolge der Listen, Ländergruppen und Zuweisung am Kontakt, welche Regel greift. Legen Sie diese Ordnung schriftlich fest und prüfen Sie sie im Testangebot, bevor Sie eine neue Staffel in Betrieb nehmen. Für verbindliche Preise in fremder Währung klären Sie mit Ihrer Buchhaltung, welcher Kurs und welches Kursdatum gelten sollen, und pflegen Sie genau diesen Kurs.