Disposition Management Modul für Odoo 18

IHK Abschlussprojekt - Fachinformatiker Anwendungsentwicklung

Frank Günther TrendTec UG
80 Stunden 14.11. - 15.12.2025
Softwareentwicklung Python, XML, PostgreSQL

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
Zwei Module: fleet_vehicle_types_extended + disposition_management

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

80
Gesamtstunden
6
Phasen
2
Module

Start: 14. November 2025

Ende: 15. Dezember 2025

2.2 Projektphasen

Phase 1 12h

Analyse & Planung

14.11. - 21.11.2025

Projektplanung, Anforderungsanalyse, Konzeption

Phase 2 14h

Entwicklung Basismodul

21.11. - 27.11.2025

fleet_vehicle_types_extended (Truck/Trailer)

Phase 3 26h

Entwicklung Hauptmodul

27.11. - 08.12.2025

disposition_management (Mobile Warehouses)

Phase 4 12h

Integration & Tests

08.12. - 12.12.2025

Funktionale Tests, Integrationstests, Bug-Fixes

Phase 5 8h

Dokumentation & Übergabe

12.12. - 15.12.2025

Dokumentation, Schulung, Abnahme

Phase 6 8h

Projektabschluss

15.12.2025

Abschlussgespräch, Lessons Learned

3 Projektdurchführung

Phase 1: Analyse & Planung (12 Stunden)

Analyse 14.11. - 21.11.2025 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)

fleet_vehicle_types_extended 21.11. - 27.11.2025 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)

disposition_management 27.11. - 08.12.2025 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

fleet_vehicle_types_extended/
__manifest__.py Modul-Definition
models/fleet_vehicle_model.py Truck/Trailer Typen
models/fleet_vehicle.py Fahrzeug-Erweiterungen
models/res_partner.py Fahrer-Felder
disposition_management/
models/fleet_vehicle.py Mobile Warehouse Logic
models/stock_location.py Fahrzeug-Lagerstandorte
models/disposition_order.py Dispositionsaufträge
views/*.xml Form, List, Kanban Views

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

Dispositionszeit/Tour -60% 30 Min → 12 Min
Überladungen/Monat -100% 5 → 0
Datenfehler/Monat -85% 10 → 1-2
Rückverfolgbarkeit 100% 0% → 100%

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