Disposition Management Modul für Odoo 18
IHK Abschlussprojekt - Fachinformatiker Anwendungsentwicklung
1 Projektbeschreibung
1.1 Projektumfeld
Auftraggeber: Ein mittelständisches Logistikunternehmen mit einer Flotte von ca. 50 Fahrzeugen (LKW und Anhänger). Das Unternehmen nutzt bereits Odoo 18 für Warenwirtschaft, Einkauf und Verkauf. Die Disposition und Tourenplanung erfolgt bisher manuell über Excel-Listen.
Auftragnehmer: Auszubildender bei TrendTec UG im Rahmen der Abschlussprüfung zum Fachinformatiker für Anwendungsentwicklung. Projektbetreuer: Oliver Kölsch (CEO).
1.2 Projektziel
Hauptziel
Entwicklung eines integrierten Dispositionsmanagementsystems für Odoo 18, das Flottenmanagement mit Lagerverwaltung verbindet. Das System verwaltet Fahrzeuge (LKW und Anhänger) als mobile Lager mit vollständiger Integration in die bestehenden Odoo-Module Stock, Fleet und Sales.
- • Verwaltung von LKW und Anhängern als mobile Lagerstandorte
- • Automatische Kapazitätsberechnung bei LKW-Anhänger-Kombinationen
- • Echtzeitüberwachung der Lagerbestände auf Fahrzeugen
- • Dispositionsaufträge mit Routenplanung
- • FIFO/LIFO-Strategien für mobile Lager
1.3 Ist-Analyse
Identifizierte Probleme
- Fehlende Transparenz: Keine Echtzeitinformation über Warenbestände auf Fahrzeugen
- Manuelle Kapazitätsberechnung: LKW-Anhänger-Kombinationen werden manuell kalkuliert
- Medienbrüche: Dispositionsdaten werden in Excel gepflegt, nicht in Odoo
- Keine Rückverfolgbarkeit: Warenbewegungen zwischen Lager und Fahrzeug nicht dokumentiert
- Ineffiziente Tourenplanung: Keine automatische Berücksichtigung von Fahrzeugauslastung
Vorhandene Systeme
- Stock: Lagerstandorte, Warenbewegungen
- Fleet: Fahrzeugverwaltung, Fahrtenbuch
- Sale Management: Verkaufsaufträge, Lieferungen
- Fehlend: Fahrzeugtypen Truck/Trailer, Mobile Lager
1.4 Soll-Konzept
Mobile Lager Konzept
- Automatische Lagerstandorte: Bei Anlage eines LKW/Anhängers wird automatisch ein Stock Location angelegt
- Lagerbuchungen: Be- und Entladung über Standard-Odoo-Lagerbuchungen
- Inventarstrategien: FIFO/LIFO für mobile Lager
- Rückverfolgbarkeit: Vollständige Traceability der Waren
LKW-Anhänger-Kombinationen
- LKW haben optionale Eigenkapazität
- Anhänger haben hohe Ladekapazität aber keine Mobilität
- Kombinationen (Sattelzug) = LKW-Kapazität + Anhänger-Kapazität
- Flexible Konfiguration möglich
2 Projektplanung
2.1 Zeitplanung
Start: 14. November 2025
Ende: 15. Dezember 2025
2.2 Projektphasen
Analyse & Planung
14.11. - 21.11.2025
Projektplanung, Anforderungsanalyse, Konzeption
Entwicklung Basismodul
21.11. - 27.11.2025
fleet_vehicle_types_extended (Truck/Trailer)
Entwicklung Hauptmodul
27.11. - 08.12.2025
disposition_management (Mobile Warehouses)
Integration & Tests
08.12. - 12.12.2025
Funktionale Tests, Integrationstests, Bug-Fixes
Dokumentation & Übergabe
12.12. - 15.12.2025
Dokumentation, Schulung, Abnahme
Projektabschluss
15.12.2025
Abschlussgespräch, Lessons Learned
3 Projektdurchführung
Phase 1: Analyse & Planung (12 Stunden)
Aktivitäten:
- Aufnahme Ist-Situation und Anforderungsanalyse
- Erstellung Soll-Konzept (Mobile Lager, LKW-Anhänger-Kombinationen)
- Technische Planung und Architekturentscheidungen
- Erstellung Zeitplan mit Meilensteinen
Ergebnisse:
- Anforderungsdokument
- Technisches Konzept
- Projektplan
Phase 2: Entwicklung Basismodul (14 Stunden)
Aktivitäten:
- Erstellung Modulstruktur fleet_vehicle_types_extended
- Erweiterung fleet.vehicle.model (Truck/Trailer Fahrzeugtypen)
- Erweiterung fleet.vehicle (Business Logic)
- Erweiterung res.partner (Fahrer-Felder)
- Unit-Tests
class FleetVehicleModel(models.Model):
_inherit = 'fleet.vehicle.model'
vehicle_type = fields.Selection(
selection_add=[('truck', 'Truck'), ('trailer', 'Trailer')],
ondelete={'truck': 'cascade', 'trailer': 'cascade'})
Phase 3: Entwicklung Hauptmodul (26 Stunden)
Mobile Warehouse Logic & Disposition Orders
<group>
<group string="Individual Capacity">
<field name="max_weight_capacity"/>
<field name="max_volume_capacity"/>
</group>
<group string="Combined Capacity"
invisible="not is_combined_unit or model_id.vehicle_type != 'truck'">
<field name="combined_max_weight_capacity" readonly="1"/>
<field name="combined_max_volume_capacity" readonly="1"/>
</group>
</group>
<div class="oe_button_box">
<button name="action_attach_trailer" type="object"
class="oe_stat_button" icon="fa-link"
invisible="model_id.vehicle_type != 'truck' or attached_trailer_id">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Attach Trailer</span>
</div>
</button>
</div>
<kanban default_group_by="disposition_status">
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_content">
Weight: <t t-esc="record.current_weight_load.value"/>kg /
<t t-esc="record.max_weight_capacity. value"/>kg
(<t t-esc="Math.round(record.weight_utilization.value)"/>%)
</div>
</t>
</templates>
</kanban>
4 Technische Umsetzung
4.1 Modul-Architektur
4.2 Technische Konzepte
Inheritance Pattern
<record id="view_name" model="ir.ui.view">
<field name="inherit_id" ref="base_module.original_view"/>
<field name="arch" type="xml">
<xpath expr="//element[@attribute='value']" position="after">
<! -- Neue Elemente -->
</xpath>
</field>
</record>
Conditional Visibility
<field name="combined_capacity"
invisible="not is_combined_unit or model_id.vehicle_type != 'truck'"/>
Widget-Verwendung
<field name="weight_utilization" widget="percentage"/>
<field name="state" widget="statusbar"/>
<field name="sequence" widget="handle"/>
4.3 Benutzerführung
Progressive Disclosure
Mobile Warehouse Tab nur bei relevanten Fahrzeugen, kontextabhängige Buttons
Visual Feedback
Farbkodierung in Kanban-Views, prozentuale Auslastungsbalken, Status-Badges
Workflow-Unterstützung
Statusbar mit klaren Zuständen, Action-Buttons nur im relevanten Status
5 Qualitätssicherung
5.1 Testing-Strategien
| Testfall | Beschreibung | Status |
|---|---|---|
| FT-01 | Fahrzeug als Mobile Warehouse - Location automatisch angelegt | ✅ Erfolgreich |
| FT-02 | LKW-Anhänger-Kombination - Effektive Kapazität berechnet | ✅ Erfolgreich |
| FT-03 | Dispositionsauftrag erstellen - Kapazitätsprüfung | ✅ Erfolgreich |
| FT-04 | Workflow durchlaufen - Statusübergänge | ✅ Erfolgreich |
| FT-05 | Lagerbuchungen bei Be-/Entladung | ✅ Erfolgreich |
| PT-01 | Performance: 50 Fahrzeuge, 100 Dispositionsaufträge, 500 Pickings | ✅ < 1 Sekunde |
6 Projektergebnis
6.1 Erreichte Ziele
Funktionale Ziele
- Vollständige Integration in Odoo 18
- Fahrzeuge als Lagerstandorte verwaltet
- Dispositionsplanung im System
- Automatische Lagerbuchungen
- Echtzeitübersicht Fahrzeugauslastung
Technische Ziele
- Saubere Modul-Architektur
- Einhaltung Odoo-Coding-Standards
- Wiederverwendbare Komponenten
- Erweiterbare Lösung
- Gute Performance (< 1 Sekunde)
6.2 Nutzen für den Auftraggeber
Messbare Verbesserungen
ROI-Berechnung
Investition: 2.310 EUR
Jährliche Einsparungen: 6.750 EUR (Zeitersparnis + Vermeidung Bußgelder + Reduktion Datenfehler)
Amortisation: ca. 4 Monate
6.3 Soll-Ist-Vergleich
Erfüllte Anforderungen
- Neue Fahrzeugtypen (Truck/Trailer)
- Mobile Lager-Funktionalität
- Automatische Location-Erstellung
- LKW-Anhänger-Kombinationen
- Dynamische Kapazitätsberechnung
- Dispositionsaufträge mit Workflow
- FIFO/LIFO-Strategien
- Kanban-Ansicht
Abweichungen
- Automatische Routenberechnung: Nicht implementiert - API-Integration würde Rahmen sprengen (als zukünftige Erweiterung vorgemerkt)
- Kapazität aus Modell: Manuelle Eingabe statt automatisch, da unterschiedliche Aufbauten bei gleichem Modell möglich
Fazit & Abnahme
Das Projekt wurde erfolgreich innerhalb der geplanten 80 Stunden abgeschlossen. Es wurden zwei aufeinander aufbauende Odoo-Module entwickelt: fleet_vehicle_types_extended als Basismodul und disposition_management als Hauptmodul.
Alle wesentlichen Abnahmekriterien wurden erfüllt: fehlerfreie Installation, vollständige Funktionalität der Mobile Warehouses, funktionierender Dispositions-Workflow und korrekte Lagerbuchungen. Das System wurde vom Auftraggeber ohne Mängel abgenommen.
Die Schulung (2 Stunden) mit 3 Disponenten und 1 Lagerleiter verlief erfolgreich. Das Feedback war positiv: "System intuitiv bedienbar, grosser Mehrwert gegenüber Excel." Als Wunsch für die Zukunft wurde eine mobile App genannt.
Biblis, 15.12.2025
Frank Günther
Auszubildender - TrendTec UG