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'