diff --git a/yuthon_report/models/penalty_arrears_report.py b/yuthon_report/models/penalty_arrears_report.py index 069f0e981..ceac61d0a 100644 --- a/yuthon_report/models/penalty_arrears_report.py +++ b/yuthon_report/models/penalty_arrears_report.py @@ -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,