From d5d99b4d8db7b41f91f09c52821186c9b7f820c0 Mon Sep 17 00:00:00 2001 From: gitea Date: Tue, 8 Apr 2025 21:18:51 +0000 Subject: [PATCH] fixed res.parnter update ows.user --- Checkliste.md | 44 +++++++++++++++++++++++++++++++++ README.md | 5 +++- data/ows.machine.product.xlsx | Bin 0 -> 5805 bytes data/ows.machine.training.xlsx | Bin 0 -> 5909 bytes models/ows_models.py | 15 ++++++++--- post_init_hook.py | 5 +++- todo.md | 3 +++ views/res_partner_view.xml | 10 ++++++++ 8 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 Checkliste.md create mode 100644 data/ows.machine.product.xlsx create mode 100644 data/ows.machine.training.xlsx create mode 100644 todo.md 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 0000000000000000000000000000000000000000..7ab8acfa481f5e777deae68a29f5fa9b637cd6be GIT binary patch literal 5805 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 R0B{ra^+9Rl)lVq`{sqbiJsto6 literal 0 HcmV?d00001 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 + + +