违约金累计欠收

This commit is contained in:
李鹏宇
2026-03-20 14:26:02 +08:00
parent a51d7ee51a
commit a2fb88581b
+34 -6
View File
@@ -61,12 +61,14 @@ class PenaltyArrearsReport(models.Model):
total_penalty = total_collected = total_uncollected = 0.0
for idx, rec in enumerate(receivables, start=1):
per_day = rec.per_day or 0.0
# 获取每天违约金(从difference_amount字段)
per_day = rec.difference_amount or rec.per_day or 0.0
penalty_amount = rec.penalty or 0.0
penalty_days = round(penalty_amount / per_day, 2) if per_day else 0.0
amount = rec.original_amount or 0.0
rent_owed = rec.rent_owed or 0.0
# 计算欠租金额(从original_amount字段)
rent_owed = rec.original_amount or rec.rent_owed or 0.0
collected = rec.delivered1 or 0.0
uncollected = rec.submitted or 0.0
@@ -76,10 +78,36 @@ class PenaltyArrearsReport(models.Model):
# 计算违约计算时间区间
billing_period = ""
if rec.due_date and rec.due_date_end:
billing_period = f"{rec.due_date.strftime('%Y-%m-%d')} ~ {rec.due_date_end.strftime('%Y-%m-%d')}"
elif rec.due_date:
billing_period = rec.due_date.strftime("%Y-%m-%d")
if rec.due_date:
start_date = rec.due_date
# 确定结束日期
if rec.payout_date:
# 已缴费,结束日期为缴费日期
end_date = rec.payout_date
else:
# 未缴费,结束日期为查询月的最后一天
if date_end:
end_date_obj = datetime.datetime.fromisoformat(date_end).date()
# 获取查询月的最后一天
if end_date_obj.month == 12:
last_day = datetime.date(end_date_obj.year, 12, 31)
else:
last_day = datetime.date(end_date_obj.year, end_date_obj.month + 1, 1) - datetime.timedelta(days=1)
end_date = last_day
else:
# 无查询日期,使用当前月最后一天
today = datetime.date.today()
if today.month == 12:
last_day = datetime.date(today.year, 12, 31)
else:
last_day = datetime.date(today.year, today.month + 1, 1) - datetime.timedelta(days=1)
end_date = last_day
# 计算违约天数
days_diff = (end_date - start_date).days + 1 # 包含开始和结束日期
# 构建时间区间字符串
billing_period = f"{days_diff} {start_date.strftime('%Y-%m-%d')} ~ {end_date.strftime('%Y-%m-%d')}"
rows.append({
"序号": idx,