From 7afb55fdbc0a3e4ae65f451b01c8e9b7edbe61db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Tue, 2 Jun 2026 18:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/views/issue_library_views.xml | 2 +- .../models/property_lease_contract.py | 42 ++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 5f19b06f6..229a28a45 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -365,7 +365,7 @@ issue.library tree,form - [('issue_state', 'not in', ['draft', 'to_draft', 'to_do']), ('is_meeting', '=', False)] + [('issue_state', 'not in', ['draft', 'to_draft', 'to_do'])] diff --git a/yuthon_property_approval/models/property_lease_contract.py b/yuthon_property_approval/models/property_lease_contract.py index 4531646d0..4e9a4754e 100644 --- a/yuthon_property_approval/models/property_lease_contract.py +++ b/yuthon_property_approval/models/property_lease_contract.py @@ -79,12 +79,50 @@ class PropertyTenantLine(models.Model): def create(self, vals): """在创建记录时自动关联合同对应的物业""" if vals.get('lease_contract_id'): - # 获取合同关联的物业明细行并直接提取物业ID列表 contract = self.env['property.lease.contract'].browse(vals['lease_contract_id']) property_ids = contract.lease_ids.mapped('address_id.id') if property_ids: vals['property_ids'] = [(6, 0, property_ids)] - return super(PropertyTenantLine, self).create(vals) + res = super(PropertyTenantLine, self).create(vals) + self.env.flush_all() + res._refresh_bank_stmt_by_tenant() + return res + + def write(self, vals): + res = super().write(vals) + self.env.flush_all() + if 'tenant_id' in vals: + self._refresh_bank_stmt_by_tenant() + return res + + def unlink(self): + tenants_to_refresh = self.mapped('tenant_id') + res = super().unlink() + if tenants_to_refresh: + self._refresh_bank_stmt_by_tenants(tenants_to_refresh) + return res + + def _refresh_bank_stmt_by_tenant(self): + """当 property.tenant.line 的 tenant_id 变更时,刷新关联的银行流水计算字段""" + tenant_list = self.mapped('tenant_id') + self._refresh_bank_stmt_by_tenants(tenant_list) + + def _refresh_bank_stmt_by_tenants(self, tenant_list): + """根据承租方列表,找到关联的银行流水并触发计算字段重算""" + if not tenant_list: + return + bank_lines = self.env['property.bank.line'].search([('tenant_id', 'in', tenant_list.ids)]) + bank_no_list = bank_lines.mapped('bank') + if not bank_no_list: + return + stmt_recs = self.env['property.bank.statements'].search([('name', 'in', bank_no_list)]) + if stmt_recs: + for stmt in stmt_recs: + stmt._compute_property_employee_id() + + def _constrain_tenant_refresh_bank(self): + """@deprecated: 请使用 _refresh_bank_stmt_by_tenant""" + self._refresh_bank_stmt_by_tenant() class PropertyLeaseContract(models.Model): _name = 'property.lease.contract'