diff --git a/Checkliste.md b/Checkliste.md new file mode 100644 index 0000000..2cc7e25 --- /dev/null +++ b/Checkliste.md @@ -0,0 +1,44 @@ +# ✅ OpenWorkshop Test Checkliste + +## 🔹 1. Migration +- [ ] `migrate_existing_partners()` erzeugt zu jedem Partner genau einen `ows.user`. +- [ ] `migrate_existing_partners()` übernimmt korrekt alte `vvow_*`-Felder. +- [ ] `migrate_machine_access_from_old_fields()` erstellt korrekte Einträge in `ows.machine.access`. +- [ ] `migrate_machine_access_from_old_fields()` übernimmt das Änderungsdatum aus `mail.tracking.value`. + +## 🔹 2. Kontakte Backend +- [ ] Beim Anlegen eines neuen Partners wird automatisch ein `ows.user` angelegt. +- [ ] Änderungen an Geburtstag, RFID, Haftung in Partner-Formular schreiben korrekt in `ows.user`. +- [ ] Die Werte aus `ows.user` werden korrekt im Partnerformular angezeigt (via `compute`). +- [ ] Das HTML-Widget mit Maschinenfreigaben (`machine_access_html`) wird korrekt dargestellt. + +## 🔹 3. POS-Integration +- [ ] Felder aus `ows.user` (Geburtstag, RFID etc.) erscheinen im POS-Kunden-Popup. +- [ ] Maschinenfreigaben erscheinen im POS-Layout korrekt gruppiert nach Bereichen. +- [ ] Farben der Maschinenbereiche werden korrekt aus `color_hex` übernommen. + +## 🔹 4. Maschinenverwaltung +- [ ] Maschinen-Formular zeigt Nutzungs- und Einweisungsprodukte korrekt an. +- [ ] Drop-downs in den Produktlisten zeigen nur Produkte der richtigen Kategorie. +- [ ] Neue Zuordnungen können direkt in den Tree-Ansichten editiert werden. +- [ ] Filter greifen korrekt (Maschinennutzung / Einweisungen). + +## 🔹 5. Menüstruktur +- [ ] Menüeinträge "Nutzungsprodukte" und "Einweisungsprodukte" erscheinen unter Konfiguration > Maschinen. +- [ ] Klick auf "Alle Maschinen" öffnet die erwartete Listenansicht. + +## 🔹 6. CSV/XML Demo-/Initialdaten +- [ ] Maschinenbereiche (`ows.machine.area`) sind korrekt aus `data.xml` geladen. +- [ ] Maschinen und ihre Produkt-Zuordnungen sind vollständig. +- [ ] Kategorien und Produkte sind korrekt verknüpft (`product.category`, `product.product`). + +## 🔹 7. Systemweite Konsistenz +- [ ] Es gibt keine doppelten `ows.user`-Einträge. +- [ ] Kein Partner existiert ohne zugehörigen `ows.user`. +- [ ] `res.partner.ows_user_id` ist immer gefüllt. + +## 🔹 8. Technische Qualität +- [ ] Kein `@api.depends('id')` mehr vorhanden. +- [ ] Commit wird in Migrationsfunktionen korrekt gesetzt (`self.env.cr.commit()`). +- [ ] Keine toten `vvow_*` Felder mehr im Modell (wenn auf ows.user umgestellt). +- [ ] post-init und pre-load Skripte laufen fehlerfrei bei Neuinstallation. \ No newline at end of file diff --git a/README.md b/README.md index 897ebea..87195e0 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,10 @@ Dieses Odoo v13.0 Modul erweitert das POS- und Kontakt-Modul um Funktionen für 1. Dieses Modul in den Custom-Addons-Ordner kopieren 2. Vor der Installation von open_worshop muss vvow_pos deinstalliert werden. Die Funktionalität von vvow_pos wird durch open_workshop ersetzt und erweitert. -3. ggf. muss die alte Datenbank manuell migiriert werden, es gibt ca 9 gelöscht res.partner auf die Verweise aus POS bestehen. Diese res.parnter müssen wieder hergestellt werden. Dazu gibt es ein Skript unter scripts/fix_missing_pos_partner.py +3. ggf. muss die alte Datenbank manuell migiriert werden, es gibt ca 9 gelöscht res.partner auf die Verweise aus POS bestehen. Diese res.parnter müssen wieder hergestellt werden. Dazu gibt es ein Skript unter + ```folder + scripts/fix_missing_pos_partner.py + ``` ```bash opt/odoo/odoo/odoo-bin shell -d hobbyhimmel < scrpts/fix_missing_pos_partner.py ``` diff --git a/data/ows.machine.product.xlsx b/data/ows.machine.product.xlsx new file mode 100644 index 0000000..7ab8acf Binary files /dev/null and b/data/ows.machine.product.xlsx differ diff --git a/data/ows.machine.training.xlsx b/data/ows.machine.training.xlsx new file mode 100644 index 0000000..9c83cf7 Binary files /dev/null and b/data/ows.machine.training.xlsx differ diff --git a/models/ows_models.py b/models/ows_models.py index 69fd4b1..fb8eda5 100644 --- a/models/ows_models.py +++ b/models/ows_models.py @@ -65,8 +65,14 @@ class ResPartner(models.Model): @api.model_create_multi def create(self, vals_list): partners = super().create(vals_list) - for partner in partners: - self.env['ows.user'].create({'partner_id': partner.id}) + for vals, partner in zip(vals_list, partners): + self.env['ows.user'].create({ + 'partner_id': partner.id, + 'birthday': vals.get('birthday'), + 'rfid_card': vals.get('rfid_card'), + 'security_briefing': vals.get('security_briefing'), + 'security_id': vals.get('security_id'), + }) return partners machine_access_ids = fields.One2many( @@ -209,10 +215,11 @@ class ResPartner(models.Model): # Änderungsverlauf durchsuchen: Wann wurde das Feld auf True gesetzt? tracking = TrackingValue.search([ ('field', '=', field_name), - ('new_value_boolean', '=', True), + ('field_type', '=', 'boolean'), + ('new_value_integer', '=', 1), ('mail_message_id.model', '=', 'res.partner'), ('mail_message_id.res_id', '=', partner.id), - ], order='mail_message_id.date ASC', limit=1) + ], order='id ASC', limit=1) date_granted = tracking.mail_message_id.date if tracking else fields.Datetime.now() diff --git a/post_init_hook.py b/post_init_hook.py index fd488ee..b53d59d 100644 --- a/post_init_hook.py +++ b/post_init_hook.py @@ -19,6 +19,7 @@ def run_migration(cr, registry): except Exception as e: _logger.error(f"[OWS] Fehler bei automatischer Partner-Migration: {e}") + try: env['res.partner'].migrate_machine_access_from_old_fields() _logger.info("[OWS] Automatische Felder-Migration für Maschinenfreigaben in res.partner.") @@ -26,10 +27,12 @@ def run_migration(cr, registry): except Exception as e: _logger.error(f"[OWS] Fehler bei automatischer Felder-Migration: {e}") +''' Funktioniert nicht: try: module = env['ir.module.module'].search([('name', '=', 'vvow_einweisungen')], limit=1) if module and module.state != 'uninstalled': _logger.info("[OWS] Deinstalliere altes Modul vvow_einweisungen...") module.button_immediate_uninstall() except Exception as e: - _logger.error(f"[OWS] Fehler bei deinstallieren von vvow_einweisungen: {e}") \ No newline at end of file + _logger.error(f"[OWS] Fehler bei deinstallieren von vvow_einweisungen: {e}") +''' \ No newline at end of file diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..0931f6e --- /dev/null +++ b/todo.md @@ -0,0 +1,3 @@ +[ ] Help System +[ ] Möglichkeit, Einweisungen manuell zu setzen? +[ ] \ No newline at end of file diff --git a/views/res_partner_view.xml b/views/res_partner_view.xml index b9bad8e..2172377 100644 --- a/views/res_partner_view.xml +++ b/views/res_partner_view.xml @@ -118,4 +118,14 @@ + + res.partner.form.inherit.default_person + res.partner + + + + person + + +