From 513fbd99bc8c34aec0e03c94787859e368a68de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Fri, 20 Mar 2026 19:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BC=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/deposit_pre_received_report.py | 53 ++++++++++++++----- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/yuthon_report/models/deposit_pre_received_report.py b/yuthon_report/models/deposit_pre_received_report.py index 844e84d19..c3efd7a14 100644 --- a/yuthon_report/models/deposit_pre_received_report.py +++ b/yuthon_report/models/deposit_pre_received_report.py @@ -55,27 +55,21 @@ class DepositPreReceivedReport(models.Model): rows = [] total_amount = 0.0 idx = 1 - # 用于去重,同一应收账单关联的 wizard 只处理一次 - processed_receivable_ids = set() for line in modify_lines: if not line.receivable_id: continue receivable_id = line.receivable_id.id - if receivable_id in processed_receivable_ids: - continue - processed_receivable_ids.add(receivable_id) rec = line.receivable_id wizards = self.env['penalty.line.wizard'].search( [('receivable_id', '=', receivable_id)] ) - for wizard in wizards: - for pay in wizard.pay_line_ids: - if not pay.date: - continue - if pay.date <= period_end: - amount = round(pay.amount, 2) + if not wizards: + # 如果没有关联的wizard,尝试直接从line获取信息 + if line.delivered1 and line.create_date: + if line.create_date.date() <= period_end: + amount = round(line.delivered1, 2) total_amount += amount rows.append({ "序号": idx, @@ -94,7 +88,7 @@ class DepositPreReceivedReport(models.Model): 'id': rec.lessee_id.id, 'display_name': rec.lessee_id.name, } if rec.lessee_id else "", - "收款日期": pay.date.strftime("%Y-%m-%d"), + "收款日期": line.create_date.strftime("%Y-%m-%d"), "金额": amount, "所属公司": rec.company_id.name if rec.company_id else "", "管理员": { @@ -104,6 +98,41 @@ class DepositPreReceivedReport(models.Model): } if rec.admin_id else "", }) idx += 1 + else: + for wizard in wizards: + for pay in wizard.pay_line_ids: + if not pay.date: + continue + if pay.date <= period_end: + amount = round(pay.amount, 2) + total_amount += amount + rows.append({ + "序号": idx, + "合同编号": { + 'model': 'property.lease.contract', + 'id': rec.contract_id.id, + 'display_name': rec.contract_id.contract_code, + } if rec.contract_id else "", + "物业名称": { + 'model': 'yuthon.property', + 'id': rec.contract_id.lease_ids[0].address_id.id, + 'display_name': rec.property_name, + } if rec.contract_id and rec.contract_id.lease_ids and rec.contract_id.lease_ids[0].address_id else rec.property_name or "", + "承租方名称": { + 'model': 'property.tenant.information', + 'id': rec.lessee_id.id, + 'display_name': rec.lessee_id.name, + } if rec.lessee_id else "", + "收款日期": pay.date.strftime("%Y-%m-%d"), + "金额": amount, + "所属公司": rec.company_id.name if rec.company_id else "", + "管理员": { + 'model': 'res.users', + 'id': rec.admin_id.id, + 'display_name': rec.admin_id.name, + } if rec.admin_id else "", + }) + idx += 1 stats = [ {'name': '记录总数', 'amount': len(rows)},