From f618cc02210ab4d51ef392efdece6511a1bdbe17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 15 Jun 2026 20:21:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E6=9C=9F=E9=A2=84=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_report/models/pre_advance_report.py | 15 +++++++++++++-- yuthon_report/views/pre_advance_report.xml | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/yuthon_report/models/pre_advance_report.py b/yuthon_report/models/pre_advance_report.py index c5a9b8469..f6e38963f 100644 --- a/yuthon_report/models/pre_advance_report.py +++ b/yuthon_report/models/pre_advance_report.py @@ -108,13 +108,20 @@ class PreAdvanceReport(models.Model): filtered_lines.append(line) - # 按应收账单聚合(只累加满足预收条件的 line.amount) + # 按应收账单聚合(只累加满足预收条件的 line.amount,记录最早收款日期) rec_map = {} for line in filtered_lines: rid = line.receivable_id.id if rid not in rec_map: - rec_map[rid] = {'rec': line.receivable_id, 'amount': 0.0} + rec_map[rid] = {'rec': line.receivable_id, 'amount': 0.0, 'earliest_pay_date': None} rec_map[rid]['amount'] += line.amount or 0.0 + # 收款日期:取 reconciliation_date + pay_date = line.reconciliation_date + if pay_date: + pay_date_val = pay_date.date() if hasattr(pay_date, 'date') else pay_date + # 记录最早的收款日期 + if rec_map[rid]['earliest_pay_date'] is None or pay_date_val < rec_map[rid]['earliest_pay_date']: + rec_map[rid]['earliest_pay_date'] = pay_date_val rows = [] total_amount = 0.0 @@ -139,6 +146,9 @@ class PreAdvanceReport(models.Model): # 应收金额 = original_amount - discount_amount receivable_amount = round((rec.original_amount or 0.0) - (rec.discount_amount or 0.0), 2) + # 收款日期:取最早收款日期 + earliest_pay_date = data.get('earliest_pay_date') + rows.append({ "序号": idx, "合同编号": { @@ -157,6 +167,7 @@ class PreAdvanceReport(models.Model): "应收结束": rec.due_date_end.strftime('%Y-%m-%d') if rec.due_date_end else '', "金额": amount, "应收金额": receivable_amount, + "收款日期": earliest_pay_date.strftime('%Y-%m-%d') if earliest_pay_date else '', "管理员": { 'model': 'res.users', 'id': rec.admin_id.id, diff --git a/yuthon_report/views/pre_advance_report.xml b/yuthon_report/views/pre_advance_report.xml index 7bd5bad8d..f0d316b86 100644 --- a/yuthon_report/views/pre_advance_report.xml +++ b/yuthon_report/views/pre_advance_report.xml @@ -19,6 +19,7 @@ {"headerName": "收款类型", "field": "收款类型", "flex": 1}, {"headerName": "应收开始", "field": "应收开始", "flex": 1}, {"headerName": "应收结束", "field": "应收结束", "flex": 1}, + {"headerName": "收款日期", "field": "收款日期", "flex": 1}, {"headerName": "金额", "field": "金额", "flex": 1, "type": "number"}, {"headerName": "应收金额", "field": "应收金额", "flex": 1, "type": "number"}, {"headerName": "管理员", "field": "管理员", "flex": 1}