diff --git a/yuthon_property_approval/models/property_lease_contract.py b/yuthon_property_approval/models/property_lease_contract.py index 384b6d383..9c4b50bfb 100644 --- a/yuthon_property_approval/models/property_lease_contract.py +++ b/yuthon_property_approval/models/property_lease_contract.py @@ -22,6 +22,36 @@ class PropertyContractLine(models.Model): start_time = fields.Date(string="生效日期") end_date = fields.Date(string="失效日期") + @api.onchange('start_time', 'end_date', 'yuthon_property_id', 'lease_contract_id') + def _onchange_contract_dates(self): + # 1. 若未关联物业,直接返回 + if not self.yuthon_property_id: + return + all_contract_lines = self.env['property.contract.line'].search([ + ('yuthon_property_id', '=', self.yuthon_property_id.id.origin) + ]) + if not all_contract_lines: + return + for contract_line in all_contract_lines: + if not all([contract_line.lease_contract_id, contract_line.start_time]): + continue + date_domain = [('meter_date', '>=', contract_line.start_time)] + if contract_line.end_date: + date_domain.append(('meter_date', '<=', contract_line.end_date)) + + domain = [ + ('yuthon_property_ids', 'in', [self.yuthon_property_id.id.origin]), + *date_domain + ] + meter_models = [self.env["meter.archives.line"], self.env["meter.water.line"]] + for model in meter_models: + meter_lines = model.search(domain) + if meter_lines: + meter_lines.write({ + 'contract_id': contract_line.lease_contract_id.id, + }) + + class PropertyTenantLine(models.Model): _name = 'property.tenant.line' _description = '物业承租方合同明细行'