From 920dd97bfb1aa4cd686c62f086194d30195245ba 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: Wed, 31 Dec 2025 10:05:38 +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 --- .../wizard/penalty_line_wizard.py | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/yuthon_property_approval/wizard/penalty_line_wizard.py b/yuthon_property_approval/wizard/penalty_line_wizard.py index fb7f39025..3bfacfa67 100644 --- a/yuthon_property_approval/wizard/penalty_line_wizard.py +++ b/yuthon_property_approval/wizard/penalty_line_wizard.py @@ -176,34 +176,35 @@ class PenaltyLineWizard(models.Model): @api.onchange('calculation_date') def _onchange_calculation_date(self): - realtime_lines = self.penalty_line_ids.filtered(lambda l: l.is_realtime) - non_realtime_lines = self.penalty_line_ids - realtime_lines - update_commands = [] - # 2. 保留所有非实时记录(关键:用 (4, id, 0) 指令) - for line in non_realtime_lines: - update_commands.append((4, line.id, 0)) - # 3. 删除所有旧的实时记录 - for line in realtime_lines: - update_commands.append((2, line.id, 0)) + if self.receivable_id.management_type_id.name != '押金': + realtime_lines = self.penalty_line_ids.filtered(lambda l: l.is_realtime) + non_realtime_lines = self.penalty_line_ids - realtime_lines + update_commands = [] + # 2. 保留所有非实时记录(关键:用 (4, id, 0) 指令) + for line in non_realtime_lines: + update_commands.append((4, line.id, 0)) + # 3. 删除所有旧的实时记录 + for line in realtime_lines: + update_commands.append((2, line.id, 0)) - if non_realtime_lines: - prev_line = non_realtime_lines[-1] - if round(prev_line.remaining_principal or 0, 2) != 0: - base_date = (prev_line.date + relativedelta(months=1)).replace(day=1) - days_overdue = (self.calculation_date - base_date).days - 1 - days_overdue = max(0, days_overdue) - # 计算违约金 - current_penalty = prev_line.remaining_principal * days_overdue * 0.001 - # 新增新的实时记录 - update_commands.append((0, 0, { - 'date': self.calculation_date, - 'days_overdue': days_overdue, - 'remaining_principal': prev_line.remaining_principal, - 'remake': f'违约金:{base_date}至{self.calculation_date}', - 'penalty': round(current_penalty, 2), - 'is_realtime': True, - })) - self.penalty_line_ids = update_commands + if non_realtime_lines: + prev_line = non_realtime_lines[-1] + if round(prev_line.remaining_principal or 0, 2) != 0: + base_date = (prev_line.date + relativedelta(months=1)).replace(day=1) + days_overdue = (self.calculation_date - base_date).days - 1 + days_overdue = max(0, days_overdue) + # 计算违约金 + current_penalty = prev_line.remaining_principal * days_overdue * 0.001 + # 新增新的实时记录 + update_commands.append((0, 0, { + 'date': self.calculation_date, + 'days_overdue': days_overdue, + 'remaining_principal': prev_line.remaining_principal, + 'remake': f'违约金:{base_date}至{self.calculation_date}', + 'penalty': round(current_penalty, 2), + 'is_realtime': True, + })) + self.penalty_line_ids = update_commands class PenaltyComputeLineWizard(models.Model): _name = 'penalty.compute.line.wizard'