diff --git a/open_workshop_base/__manifest__.py b/open_workshop_base/__manifest__.py index a49080c..4ee2650 100644 --- a/open_workshop_base/__manifest__.py +++ b/open_workshop_base/__manifest__.py @@ -12,7 +12,8 @@ 'views/machine_product_training_views.xml', 'views/menu_views.xml', 'views/machine_area_views.xml', - 'views/machine_views.xml', + 'views/machine_views.xml', + 'views/maintenance_equipment_views.xml', 'views/res_partner_view.xml', 'data/data.xml', ], diff --git a/open_workshop_base/models/ows_models.py b/open_workshop_base/models/ows_models.py index 79876ff..4724705 100644 --- a/open_workshop_base/models/ows_models.py +++ b/open_workshop_base/models/ows_models.py @@ -467,7 +467,7 @@ class OwsMachine(models.Model): # - serial_no → wird als 'code' verwendet (siehe @api.depends unten) # - cost → purchase_price # - effective_date → purchase_date - # - location → storage_location + # - location → storage_location (wird von area_id synchronisiert, readonly via View) # - note → description # - category_id → Wird mit area_id synchronisiert @@ -517,35 +517,49 @@ class OwsMachine(models.Model): def create(self, vals): """ Beim Erstellen einer ows.machine: - 1. Equipment erstellen FALLS nicht vorhanden + 1. Equipment IMMER automatisch erstellen 2. Area → Location synchronisieren + 3. serial_no und name vom User übernehmen """ - # Nur Equipment erstellen, wenn keins ausgewählt wurde - if 'equipment_id' not in vals or not vals['equipment_id']: - equipment_vals = { - 'name': vals.get('name', 'Neue Maschine'), - } - equipment = self.env['maintenance.equipment'].create(equipment_vals) - vals['equipment_id'] = equipment.id + # Equipment IMMER automatisch erstellen + equipment_vals = { + 'name': vals.get('name', 'Neue Maschine'), + 'serial_no': vals.get('serial_no', False), + } - # Area → Location Mapping + # Area → Location Mapping für Equipment if 'area_id' in vals and vals['area_id']: area = self.env['ows.machine.area'].browse(vals['area_id']) if area and area.name: - # Setze location direkt auf area.name - vals['location'] = area.name + equipment_vals['location'] = area.name + + equipment = self.env['maintenance.equipment'].create(equipment_vals) + vals['equipment_id'] = equipment.id return super(OwsMachine, self).create(vals) def write(self, vals): """ - Bei Updates Area → Location synchronisieren + Bei Updates: + 1. Area → Location synchronisieren + 2. Name/Serial_no → Equipment synchronisieren """ + # Area → Location Mapping if 'area_id' in vals and vals['area_id']: area = self.env['ows.machine.area'].browse(vals['area_id']) if area and area.name: vals['location'] = area.name + # Name/Serial_no an Equipment weiterleiten + equipment_vals = {} + if 'name' in vals: + equipment_vals['name'] = vals['name'] + if 'serial_no' in vals: + equipment_vals['serial_no'] = vals['serial_no'] + + if equipment_vals and self.equipment_id: + self.equipment_id.write(equipment_vals) + return super(OwsMachine, self).write(vals) def name_get(self): diff --git a/open_workshop_base/views/machine_views.xml b/open_workshop_base/views/machine_views.xml index be68a6c..d883271 100644 --- a/open_workshop_base/views/machine_views.xml +++ b/open_workshop_base/views/machine_views.xml @@ -35,18 +35,16 @@ - - - + + + + - + - + diff --git a/open_workshop_base/views/maintenance_equipment_views.xml b/open_workshop_base/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..3d98456 --- /dev/null +++ b/open_workshop_base/views/maintenance_equipment_views.xml @@ -0,0 +1,15 @@ + + + + + maintenance.equipment.form.location.readonly + maintenance.equipment + + + + 1 + Wird automatisch aus dem Bereich (ows.machine) synchronisiert. Änderungen nur über Bereich möglich. + + + + diff --git a/open_workshop_base/views/menu_views.xml b/open_workshop_base/views/menu_views.xml index b5026a6..ee055eb 100644 --- a/open_workshop_base/views/menu_views.xml +++ b/open_workshop_base/views/menu_views.xml @@ -2,7 +2,7 @@ - Maschinen + Ausrüstung ows.machine list,form @@ -17,7 +17,7 @@ @@ -28,7 +28,7 @@