Merge pull request !10142 from 李鹏宇/dev
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user