diff --git a/yuthon_property/models/yuthon_property.py b/yuthon_property/models/yuthon_property.py index f51f7bd12..d7b20ab3a 100644 --- a/yuthon_property/models/yuthon_property.py +++ b/yuthon_property/models/yuthon_property.py @@ -168,17 +168,41 @@ class YuthonProperty(models.Model): @api.onchange('energy_meter_ids') def _onchange_energy_meter_ids(self): + if not hasattr(self.id, 'origin') or not self.id.origin: + return + target_property_id = self.id.origin + meter_model = self.env['property.meter.archives'] + related_meters = meter_model.search([ + ('yuthon_property_ids', 'in', [target_property_id]) + ]) + if related_meters: + related_meters.write({ + 'yuthon_property_ids': [(6, 0, [])] + }) for rec in self.energy_meter_ids: - meter_id = self.env['property.meter.archives'].search([('id', '=', rec.property_meter_archives_id.id)]) + meter_id = meter_model.browse(rec.property_meter_archives_id.id) meter_id.write({ - 'yuthon_property_ids': [(6, 0, [self.id.origin])]}) + 'yuthon_property_ids': [(6, 0, [target_property_id])] + }) @api.onchange('water_meter_ids') def _onchange_water_meter_idss(self): + if not hasattr(self.id, 'origin') or not self.id.origin: + return + target_property_id = self.id.origin + water_meter_model = self.env['property.meter.water'] + related_water_meters = water_meter_model.search([ + ('yuthon_property_ids', 'in', [target_property_id]) + ]) + if related_water_meters: + related_water_meters.write({ + 'yuthon_property_ids': [(6, 0, [])] + }) for rec in self.water_meter_ids: - meter_id = self.env['property.meter.water'].search([('id', '=', rec.property_meter_water_id.id)]) + meter_id = water_meter_model.browse(rec.property_meter_water_id.id) meter_id.write({ - 'yuthon_property_ids': [(6, 0, [self.id.origin])]}) + 'yuthon_property_ids': [(6, 0, [target_property_id])] + }) @api.onchange('building_area') def _onchange_building_area(self):