!10142 !10141 Merge branch 'dev' of <a href="https://gitee.com/jinan-pengyuse…

Merge pull request !10142 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-03-24 06:54:07 +00:00
committed by Gitee
+19 -15
View File
@@ -175,22 +175,26 @@ class ReceivableFlowReport(models.Model):
)
penalty_payment_date = latest_penalty_payment[0].date if latest_penalty_payment else None
# 从 wizard 的 penalty_line_ids.remake 解析违约金时间区间
# 复用 _onchange_calculation_date 逻辑计算违约金时间区间
penalty_range_str = ""
if wz_list:
wz = wz_list[0]
pl_all = list(wz.penalty_line_ids)
penalty_lines = [pl for pl in pl_all if pl.penalty > 0]
if penalty_lines:
all_dates = []
for pl in penalty_lines:
for d in re.findall(r'(\d{4}-\d{2}-\d{2})', pl.remake or ''):
try:
all_dates.append(datetime.datetime.strptime(d, '%Y-%m-%d').date())
except ValueError:
pass
if all_dates:
penalty_range_str = f"{min(all_dates).strftime('%Y-%m-%d')} ~ {max(all_dates).strftime('%Y-%m-%d')}"
if rec.is_liquidated_damages and rec.submitted > 0:
# 取最近一笔非违约金收款记录
non_penalty_lines = [l for l in modify_lines if not l.is_penalty]
today = datetime.date.today()
if non_penalty_lines:
# 有收款记录:从最近一笔收款日期的次日开始
last_pay_date = max(l.reconciliation_date for l in non_penalty_lines)
base_date = last_pay_date + datetime.timedelta(days=1)
else:
# 无收款记录:从 due_date 次月 1 号开始
if rec.due_date:
nm = rec.due_date.month + 1 if rec.due_date.month < 12 else 1
ny = rec.due_date.year if rec.due_date.month < 12 else rec.due_date.year + 1
base_date = datetime.date(ny, nm, 1)
else:
base_date = None
if base_date and base_date <= today:
penalty_range_str = f"{base_date.strftime('%Y-%m-%d')}至{today.strftime('%Y-%m-%d')}"
# ==== 应收租金行 ====
rows.append({