Merge pull request !10150 from 李鹏宇/dev
This commit is contained in:
@@ -82,6 +82,9 @@ class ReceivableFlowReport(models.Model):
|
||||
# 预先触发 compute 字段,避免循环内惰性计算
|
||||
all_wizards.mapped('days_overdue')
|
||||
all_wizards.mapped('total_penalty')
|
||||
all_wizards.mapped('collected_penalty') # 预加载已收违约金
|
||||
# 预加载 pay_line management_type_id
|
||||
all_pay_lines.mapped('management_type_id')
|
||||
# 按 wizard_id 分组
|
||||
pay_line_map = {} # {wizard_id: [pay_lines]}
|
||||
for pl in all_pay_lines:
|
||||
@@ -168,11 +171,14 @@ class ReceivableFlowReport(models.Model):
|
||||
penalty_pay_lines = []
|
||||
for wz in wz_list:
|
||||
penalty_pay_lines.extend(pay_line_map.get(wz.id, []))
|
||||
total_penalty_collected = sum(line.amount for line in penalty_pay_lines)
|
||||
latest_penalty_payment = sorted(
|
||||
[l for l in penalty_pay_lines if l.date],
|
||||
key=lambda l: l.date, reverse=True
|
||||
)
|
||||
# 违约金收款金额:取 wizard 的 collected_penalty(已 compute)
|
||||
total_penalty_collected = sum(wz.collected_penalty for wz in wz_list)
|
||||
# 违约金收款时间:取 pay_line_ids 中类型为“违约金”的记录的最新 date
|
||||
penalty_type_pay_lines = [
|
||||
l for l in penalty_pay_lines
|
||||
if l.management_type_id and l.management_type_id.name == '违约金' and l.date
|
||||
]
|
||||
latest_penalty_payment = sorted(penalty_type_pay_lines, key=lambda l: l.date, reverse=True)
|
||||
penalty_payment_date = latest_penalty_payment[0].date if latest_penalty_payment else None
|
||||
|
||||
# 复用 _onchange_calculation_date 逻辑计算违约金时间区间、逆期天数、违约金
|
||||
|
||||
Reference in New Issue
Block a user