fixed res.parnter update ows.user
This commit is contained in:
parent
7f4e7183ec
commit
d5d99b4d8d
44
Checkliste.md
Normal file
44
Checkliste.md
Normal file
|
|
@ -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.
|
||||||
|
|
@ -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
|
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.
|
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
|
```bash
|
||||||
opt/odoo/odoo/odoo-bin shell -d hobbyhimmel < scrpts/fix_missing_pos_partner.py
|
opt/odoo/odoo/odoo-bin shell -d hobbyhimmel < scrpts/fix_missing_pos_partner.py
|
||||||
```
|
```
|
||||||
|
|
|
||||||
BIN
data/ows.machine.product.xlsx
Normal file
BIN
data/ows.machine.product.xlsx
Normal file
Binary file not shown.
BIN
data/ows.machine.training.xlsx
Normal file
BIN
data/ows.machine.training.xlsx
Normal file
Binary file not shown.
|
|
@ -65,8 +65,14 @@ class ResPartner(models.Model):
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
partners = super().create(vals_list)
|
partners = super().create(vals_list)
|
||||||
for partner in partners:
|
for vals, partner in zip(vals_list, partners):
|
||||||
self.env['ows.user'].create({'partner_id': partner.id})
|
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
|
return partners
|
||||||
|
|
||||||
machine_access_ids = fields.One2many(
|
machine_access_ids = fields.One2many(
|
||||||
|
|
@ -209,10 +215,11 @@ class ResPartner(models.Model):
|
||||||
# Änderungsverlauf durchsuchen: Wann wurde das Feld auf True gesetzt?
|
# Änderungsverlauf durchsuchen: Wann wurde das Feld auf True gesetzt?
|
||||||
tracking = TrackingValue.search([
|
tracking = TrackingValue.search([
|
||||||
('field', '=', field_name),
|
('field', '=', field_name),
|
||||||
('new_value_boolean', '=', True),
|
('field_type', '=', 'boolean'),
|
||||||
|
('new_value_integer', '=', 1),
|
||||||
('mail_message_id.model', '=', 'res.partner'),
|
('mail_message_id.model', '=', 'res.partner'),
|
||||||
('mail_message_id.res_id', '=', partner.id),
|
('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()
|
date_granted = tracking.mail_message_id.date if tracking else fields.Datetime.now()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ def run_migration(cr, registry):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_logger.error(f"[OWS] Fehler bei automatischer Partner-Migration: {e}")
|
_logger.error(f"[OWS] Fehler bei automatischer Partner-Migration: {e}")
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
env['res.partner'].migrate_machine_access_from_old_fields()
|
env['res.partner'].migrate_machine_access_from_old_fields()
|
||||||
_logger.info("[OWS] Automatische Felder-Migration für Maschinenfreigaben in res.partner.")
|
_logger.info("[OWS] Automatische Felder-Migration für Maschinenfreigaben in res.partner.")
|
||||||
|
|
@ -26,6 +27,7 @@ def run_migration(cr, registry):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_logger.error(f"[OWS] Fehler bei automatischer Felder-Migration: {e}")
|
_logger.error(f"[OWS] Fehler bei automatischer Felder-Migration: {e}")
|
||||||
|
|
||||||
|
''' Funktioniert nicht:
|
||||||
try:
|
try:
|
||||||
module = env['ir.module.module'].search([('name', '=', 'vvow_einweisungen')], limit=1)
|
module = env['ir.module.module'].search([('name', '=', 'vvow_einweisungen')], limit=1)
|
||||||
if module and module.state != 'uninstalled':
|
if module and module.state != 'uninstalled':
|
||||||
|
|
@ -33,3 +35,4 @@ def run_migration(cr, registry):
|
||||||
module.button_immediate_uninstall()
|
module.button_immediate_uninstall()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_logger.error(f"[OWS] Fehler bei deinstallieren von vvow_einweisungen: {e}")
|
_logger.error(f"[OWS] Fehler bei deinstallieren von vvow_einweisungen: {e}")
|
||||||
|
'''
|
||||||
3
todo.md
Normal file
3
todo.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[ ] Help System
|
||||||
|
[ ] Möglichkeit, Einweisungen manuell zu setzen?
|
||||||
|
[ ]
|
||||||
|
|
@ -118,4 +118,14 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="view_partner_form_inherit" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.form.inherit.default_person</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="company_type" position="attributes">
|
||||||
|
<attribute name="default">person</attribute>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user