- ControlButtons-Extension mit stabiler Template-Inheritance (hasclass XPath) - MachineTimeSelectionPopup Komponente für Session-Auswahl und Minuten-Bearbeitung - Backend Service get_pos_session_suggestions mit Overlap + Rounding - Seed-Tool für reproducible Test-Sessions - PoS-Mapping-Backend für Device-to-Product-Zuordnung - Entfernt: fehleranfällige ProductScreen-Extension (Owl-Crash behoben) Workflow im PoS: 1. Orderline auswählen 2. 'Maschinenzeit'-Button klicken (ControlButtons) 3. Session-Popup mit Vorschlägen + editierbaren Minuten 4. Auswahl bestätigen → Quantity in Orderline durch Summe ersetzen Akzeptanzkriterien Step 4 erfüllt: ✓ Button sichtbar und erreichbar ✓ Popup öffnet und schließt korrekt ✓ Vorschläge sichtbar und auswählbar ✓ Übernahme schreibt in Auftrag ✓ 'Keine Sessions'-Hinweis bei Leerfall ✓ Keine Crashes mehr
5.7 KiB
5.7 KiB
Feature Request: PoS Maschinenzeit aus IoT-Sessions übernehmen
Stand: 2026-02-19
Status: Offen (neu)
1) Ziel
In Odoo PoS soll für einen Werkstattnutzer die während seiner Anwesenheit tatsächlich genutzte Maschinenzeit geprüft und in den PoS-Auftrag übernommen werden können, um minutenbasierte Produkte korrekt abzurechnen.
2) Ausgangslage
- Das Modul
open_workshop_mqtterfasst Maschinen-Sessions bereits alsows.mqtt.sessioninkl. Dauerfeldern (total_duration_min,working_duration_min,standby_duration_min). - Im PoS wird der Werkstattnutzer bereits erfasst und ein Anwesenheits-Timer gestartet (Zeitfenster vorhanden).
- Es existiert noch kein direkter PoS-Flow zur Übernahme dieser Maschinenzeiten in Orderlines.
3) Fachlicher Scope
In Scope
- Ermittlung passender Maschinen-Sessions pro Werkstattnutzer anhand Zeitüberschneidung:
- Nutzer-Anwesenheit im PoS ∩ Maschinen-Session (
ows.mqtt.session)
- Nutzer-Anwesenheit im PoS ∩ Maschinen-Session (
- Vorschlagslogik im PoS mit Bestätigung:
- System schlägt abrechenbare Zeiten vor
- Nutzer bestätigt und kann den Vorschlag anpassen
- Übernahme in PoS-Orderlines auf Basis minutenbasierter Produkte
- Mehrfachnutzung unterstützen:
- Bei mehreren passenden Maschinen werden alle passenden Zeiten berücksichtigt (eigene Position pro Maschine/Produkt)
Out of Scope (für diesen Request)
- Vollautomatische, nicht bestätigte Buchung ohne Nutzerinteraktion
- Neuaufbau des Anwesenheits-Timers (gilt als bereits vorhanden)
4) Festgelegte Regeln
- Abrechnungsbasis: Nur
working_duration_min - Rundung: Auf Geräte-Abrechnungsintervall runden (z. B. 5 Minuten)
- Übernahme-UX: Vorschlag + Bestätigung, danach editierbar
- Zuordnung Nutzer ↔ Session: über Zeitüberschneidung
- Parallel genutzte Maschinen: alle passenden Maschinen übernehmen
5) Produktzuordnung (Maschine → PoS-Produkt)
- Die Zuordnung soll im Modul gepflegt werden.
- Jedes IoT-Gerät referenziert genau eine „Maschine“ für die Abrechnung.
- Mehrere physische Geräte (z. B. drei 3D-Drucker) dürfen auf dasselbe PoS-Produkt zeigen.
6) Geplantes PoS-Verhalten (MVP)
- Werkstattnutzer ist im PoS aktiv (Anwesenheitszeitraum vorhanden).
- Aktion „Maschinenzeit prüfen“ ermittelt Session-Schnittmenge.
- PoS zeigt Vorschläge je Maschine/Produkt inkl. berechneter Minuten.
- Nutzer bestätigt/ändert.
- System erzeugt/aktualisiert PoS-Orderlines mit der finalen Minutenmenge.
UI-Einstieg im PoS (bevorzugt)
- Primärer Einstieg über die Orderline des minutenbasierten Produkts:
- Doppelklick auf Orderline oder Info-Icon in der Orderline-Liste
- Öffnet ein vorhandenes PoS-Popup (wiederverwendet/erweitert)
- Im Popup:
- Vorschläge aus Sessions anzeigen (Maschine, Zeitraum, berechnete Minuten)
- Sessions auswählen/abwählen
- Übernehmen in die aktuelle Orderline bzw. Order
- Nach Übernahme bleibt die Orderline normal editierbar im Standard-PoS-Flow.
Optionaler Sekundär-Einstieg
- Produkt-Info-„i“ kann optional als zusätzlicher Einstieg dienen, ist aber nicht der Hauptweg für die tägliche Bedienung.
7) Akzeptanzkriterien
- Für einen Nutzer mit Anwesenheitszeitraum werden passende Maschinen-Sessions korrekt ermittelt.
- Es werden nur
working_duration_minfür die Abrechnung verwendet. - Minuten werden gemäß Geräte-Intervall gerundet.
- Vorschläge sind im PoS sichtbar, bestätigbar und modifizierbar.
- Bei mehreren passenden Maschinen entstehen mehrere korrekte Positionen.
- Wenn keine passende Session gefunden wird, entsteht keine automatische Position und der Nutzer erhält einen klaren Hinweis.
8) Technische Hinweise für die Umsetzung
- Bestehende Session-Daten aus
ows.mqtt.sessionwiederverwenden, keine doppelte Zeitlogik aufbauen. - Produkt-Mapping im Addon modellieren (z. B. Feld/Relation auf Geräte- bzw. Maschinenebene).
- Berechnungslogik für Zeitüberschneidung und Intervall-Rundung zentral kapseln und testbar halten.
- Idempotente Übernahme in PoS berücksichtigen (mehrfaches „Prüfen/Übernehmen“ darf keine unkontrollierten Duplikate erzeugen).
9) Offene Implementierungsdetails (für den Umsetzungsplan)
- Konkrete technische Umsetzung der Orderline-Interaktion (Doppelklick vs. Icon, Touch-Verhalten)
- Exakte Regel, wie bestehende manuelle Orderline-Änderungen bei erneutem Import behandelt werden
- Fehler-/Hinweistexte im PoS bei Konflikten (z. B. überlappende Zeitblöcke mit bereits übernommener Zeit)
10) Modulstrategie und Implementierungsreihenfolge
Option A: Neues Addon für diese Funktion (empfohlen)
- Eigenes Addon nur für Maschinenzeit-Import im PoS (z. B. als Integrationsaddon zwischen MQTT-Sessions und PoS).
- Vorteil:
- Keine invasive Änderung in bestehendem
open_workshop_posnötig - Klarer Scope, kleinere Release-Risiken
- Schnellere MVP-Lieferung
- Keine invasive Änderung in bestehendem
- Nachteil:
- Langfristig evtl. Abstimmung mit
open_workshop_pos-UX nötig
- Langfristig evtl. Abstimmung mit
Option B: Direkt in open_workshop_pos integrieren
- Vorteil:
- Eine zentrale PoS-Erweiterung
- Einheitliche UX an einer Stelle
- Nachteil:
- Höherer Eingriff in bestehende Strukturen
- Größere Abhängigkeit vom Stand eines externen Repositories
Empfehlung für die Umsetzung jetzt
- Start mit Option A (neues, kleines Addon) für schnellen MVP.
- PoS-Orderline-Popup dort implementieren, Session-Vorschläge übernehmen.
- Später optional in
open_workshop_poskonsolidieren, wenn dort ohnehin größere PoS-Refactorings geplant sind.
Konkrete Reihenfolge (MVP)
- Backend-Service in Odoo: Session-Schnittmenge + Rundung + Mapping liefern.
- PoS-Frontend: Orderline-Einstieg (Icon/Doppelklick) + Popup zur Auswahl/Übernahme.
- Idempotenzregeln für wiederholte Übernahme definieren.
- Tests für Mehrfachmaschinen, Leerfall, Konfliktfall.