Die Optimierung
Ein Klick auf in der Kopfzeile des Auftrags verteilt alle nicht fixierten Positionen neu. Diese Seite erklärt, was dabei gerechnet wird — und warum das Ergebnis manchmal überrascht.
Warum es nicht trivial ist
Die naheliegende Regel — „jede Position beim günstigsten Distributor" — führt regelmäßig zum teuersten Gesamtergebnis. Drei Gründe:
- Fracht fällt je Bestellung an, nicht je Position. Fünf Positionen bei fünf Distributoren bedeuten fünfmal Fracht.
- Frachtfreigrenzen sind Sprünge. Ein Warenwert von 249 € kostet Fracht, 250 € nicht. Es kann sich lohnen, eine Position bewusst teurer einzukaufen, um diese Grenze zu erreichen.
- Mindestbestellwerte machen Bestellungen unattraktiv. Eine einzelne Kleinposition bei einem sechsten Distributor bleibt womöglich unter dessen Mindestbestellwert.
Die Aufgabe lautet also nicht „finde je Position den besten Preis", sondern „finde die beste Kombination von Distributoren". Bei zehn Positionen und zwanzig Distributoren ist das von Hand nicht mehr zu überblicken.
Die vier Optimierungsziele
Vor dem Klick wählen Sie neben dem Button das Optimierungsziel:
| Ziel | Was es tut |
|---|---|
| EGIS-Optimierung (Gesamtkosten) | Legt den Warenkorb bei EGIS an und lässt ihn dort optimieren. EGIS rechnet fest auf Einkaufspreis zuzüglich Fracht |
| Eigene: günstigste Gesamtkosten (exakt) | Rechnet lokal das günstigste Distributor-Bündel aus — inklusive Frachtfreigrenzen |
| Eigene: schnellste Lieferung | Bevorzugt die beste Verfügbarkeitsklasse und die kürzeste Lieferzeit; innerhalb dieser Auswahl wird auf Kosten optimiert |
| Eigene: nur sofort lieferbar | Lässt ausschließlich Quellen zu, die die bestellte Menge am Lager haben |
Die EGIS-Optimierung nutzt tagesaktuelle Marktdaten und legt den Warenkorb gleich in EGIS an — der Weg zur Bestellung ist damit kürzer. Sie kennt allerdings keine Zielkriterien: Die Schnittstelle sieht nur ein Verfahren vor, nämlich Gesamtkosten.
Die eigenen Verfahren rechnen lokal aus den zuletzt abgerufenen Preisen, Beständen, Frachtkosten und Lieferzeiten. Sie kommen ohne Warenkorb-Aufruf aus, kennen dafür drei Ziele — und berücksichtigen die Frachtfreigrenzen, die Sie je Distributor gepflegt haben.
Unterschreitet eine Kombination bei einem Distributor dessen Mindestbestellwert, wird sie nicht verworfen — die Unterschreitungen werden gezählt und entscheiden nur bei gleichen Kosten zugunsten der sauberen Variante. Der Grund: Distributoren nehmen solche Bestellungen meist an, oft gegen einen Kleinmengenzuschlag. Sichtbar bleibt es trotzdem: Der Reiter EGIS-Beschaffung und das Badge an der Position zeigen „Mindestbestellwert nicht erreicht (180 von 250)".
Wie die eigenen Verfahren rechnen
Alle drei nutzen denselben Rechenkern und unterscheiden sich nur darin, welche Quellen je Position überhaupt zugelassen sind:
Günstigste Gesamtkosten
Alle Distributoren mit Preis sind zugelassen. Optimiert wird auf die Summe aus Warenwert und Zuschlägen.
Schnellste Lieferung
Je Position bleibt nur die beste Verfügbarkeitsklasse übrig, und darin nur Quellen im engsten Lieferzeit-Fenster. Unter den verbliebenen gewinnt der Preis.
Nur sofort lieferbar
Nur Quellen, deren Bestand die bestellte Menge deckt. Positionen ohne solche Quelle bleiben unzugeordnet — und werden gemeldet.
Der Rechenkern arbeitet in drei Schritten. Sie müssen sie nicht kennen, aber sie erklären, warum das Ergebnis belastbar ist:
- Zerlegen. Positionen mit nur einer Quelle stehen ohnehin fest. Ihr Warenwert zählt beim jeweiligen Distributor für Frachtfreigrenze und Mindestbestellwert mit. Die übrigen Positionen werden in Gruppen geteilt, die keinen Distributor gemeinsam haben. Solche Gruppen beeinflussen sich nicht und werden getrennt gerechnet.
- Durchrechnen. Je Gruppe werden alle Verteilungen geprüft. Eine Teilverteilung fällt weg, sobald sie selbst im günstigsten Fall teurer bleibt als die beste bereits gefundene. Das spart die aussichtslosen Zweige, ohne eine mögliche Lösung zu übersehen.
- Auffüllen und Schließen. Den Startwert liefert eine schnelle Suche mit drei Zügen: eine Position umbuchen, einen Distributor bis zu seiner Frachtfreigrenze auffüllen, einen Distributor ganz auflösen. Der zweite Zug ist der wichtige — eine Freigrenze lohnt sich oft erst, wenn mehrere Positionen gemeinsam wandern.
Es werden nicht nur ein paar naheliegende Varianten geprüft, sondern alle — nur eben ohne die, die rechnerisch nicht mehr gewinnen können. Das Ergebnis ist damit nachweislich das günstigste, nicht nur ein gutes.
Bei sehr großen Warenkörben mit vielen ähnlich bepreisten Kleinteilen kann der Nachweis lange dauern. Dann bricht die Rechnung nach einigen Sekunden ab, nimmt die beste gefundene Verteilung und schreibt einen Hinweis in den Chatter. Wie Sie das vermeiden, steht im nächsten Abschnitt.
Große Warenkörbe: den Hochleistungs-Optimierer aktivieren
Auch Aufträge mit 40 oder mehr Positionen bekommen die nachweislich günstigste Verteilung — in unter einer Sekunde. Dafür installieren Sie einmalig das Python-Paket ortools von Google in Ihrer Odoo-Umgebung. EGIS-Connector erkennt es beim Start und nutzt es automatisch.
Ihr Einkauf verteilt einen Projektauftrag mit 40 Kleinteil-Positionen auf sieben Distributoren. Ohne das Paket rechnet EGIS-Connector einige Sekunden und meldet im Chatter, dass die Verteilung nicht nachweislich die günstigste ist — in unseren Testreihen lag sie bis zu 25 € daneben. Mit dem Paket steht das bewiesene Optimum nach 0,3 Sekunden, ohne Hinweis im Chatter.
So installieren Sie es in einem Odoo-Container:
docker compose exec -u root odoo pip3 install --break-system-packages --ignore-installed typing_extensions
docker compose exec -u root odoo pip3 install --break-system-packages ortools
docker compose restart odoo
Die erste Zeile ist nötig, weil ortools eine neuere Fassung von typing_extensions verlangt,
als das Betriebssystem mitbringt. Läuft Odoo ohne Container, genügt pip install ortools in der
Python-Umgebung von Odoo.
Eine Installation im laufenden Container ist nach dem nächsten Neuaufbau weg. Tragen Sie die beiden Zeilen in Ihr Odoo-Image ein, dann bleibt der Optimierer erhalten.
Die Optimierung braucht ortools nicht. Kleine und mittlere Aufträge rechnet EGIS-Connector auch ohne das Paket bewiesen optimal. Das Paket hilft erst, wenn der Warenkorb groß wird.
Ein durchgerechnetes Beispiel
Ein Auftrag über drei Positionen. Drei Distributoren bieten an, alle drei berechnen 15 € Fracht und liefern ab 500 € Warenwert frachtfrei:
| Position | Distributor A | Distributor B | Distributor C |
|---|---|---|---|
| Switch | 260 € | 275 € | 280 € |
| Telefone (10 ×) | 240 € | 230 € | 250 € |
| Zubehör | 95 € | 98 € | 90 € |
Der naive Weg — jede Position beim Günstigsten:
| Distributor | Warenwert | Fracht | Summe |
|---|---|---|---|
| A (Switch) | 260 € | 15 € | 275 € |
| B (Telefone) | 230 € | 15 € | 245 € |
| C (Zubehör) | 90 € | 15 € | 105 € |
| Gesamt | 580 € | 45 € | 625 € |
Der optimierte Weg — alles bei A:
| Distributor | Warenwert | Fracht | Summe |
|---|---|---|---|
| A (alle drei) | 595 € | 0 € (frachtfrei ab 500 €) | 595 € |
Der Warenwert ist um 15 € höher — und die Rechnung um 30 € niedriger.
Gefunden wird das schon beim Auffüllen: Distributor A liegt mit dem Switch bei 260 € und damit unter seiner Freigrenze. Die beiden anderen Positionen kosten bei A nur 15 € mehr als beim jeweils Günstigsten, heben A aber über 500 € — und sparen dreimal Fracht. Das Durchrechnen bestätigt anschließend, dass es keine günstigere Verteilung gibt.
Woher die Konditionen kommen
Frachtkosten, Frachtfreigrenzen und Mindestbestellwerte stehen an der Distributor-Zuordnung unter → → .
Sie werden aus jeder EGIS-Optimierungsantwort automatisch übernommen und lassen sich als Startwert von Hand pflegen. Details: Distributoren & Lieferanten.
Sind für einen Distributor keine Konditionen bekannt, verwendet die lokale Optimierung die je Angebot gemeldete Fracht. Das Ergebnis bleibt sinnvoll — es wird nur genauer, sobald die Freigrenzen bekannt sind.
Was nach dem Klick passiert
- Positionen ohne EGIS-Artikelnummer werden über die Kaskade aufgelöst.
- Nicht warenkorbfähige Positionen werden aussortiert und benannt.
- Die Verteilung wird gerechnet — bei EGIS oder lokal.
- Distributor, Einkaufspreis, Verfügbarkeit und Liefertermin werden je Position geschrieben.
- Die Zusammenfassungen je Distributor entstehen, Zuschläge werden umgelegt, Zeilenkosten geschrieben.
- Ein Bericht im Chatter hält fest, was passiert ist: Ziel, Distributoren mit Positionen, Warenwert und Fracht, sowie jede Position, die keine Zuordnung bekommen hat — mit Grund.
Er beantwortet die Frage „Warum ist diese Position nicht dabei?" ohne Suchen. Typische Einträge: keine EGIS-Artikelnummer, abgekündigt, kein Distributor mit ausreichendem Bestand.
Wann Sie neu optimieren sollten
| Situation | Warum |
|---|---|
| Nach jeder Mengenänderung | Frachtfreigrenzen und Mindestbestellwerte hängen am Warenwert |
| Nach dem Hinzufügen einer Position | Ein weiterer Artikel kann die ganze Verteilung drehen |
| Kurz vor der Bestellung | Preise und Bestände bewegen sich täglich |
Fixierte Positionen behalten dabei ihren Distributor. Preis, Bestand und Liefertermin werden auch für sie aktualisiert — nur die Bezugsquelle bleibt Ihre Wahl.
Kurz zusammengefasst
| Frage | Antwort |
|---|---|
| Was optimiert EGIS? | Fest auf Gesamtkosten — die Schnittstelle kennt keine weiteren Ziele |
| Was können die eigenen Verfahren mehr? | Drei Ziele und die Frachtfreigrenzen je Distributor |
| Kann der Warenwert steigen? | Ja — wenn die Gesamtkosten dadurch sinken |
| Werden Verkaufspreise verändert? | Nein |
| Was passiert mit fixierten Zeilen? | Sie behalten ihren Distributor |
| Wo sehe ich, was übersprungen wurde? | Reiter EGIS-Beschaffung und Chatter |
| Was bringt das Paket ortools? | Auch sehr große Warenkörbe werden bewiesen optimal verteilt — in Sekundenbruchteilen |