This commit is contained in:
李鹏宇
2026-03-24 14:33:42 +08:00
parent 01e38822a0
commit 7c2a8d4f35
+16 -16
View File
@@ -86,19 +86,6 @@ class ReceivableFlowReport(models.Model):
pay_line_map = {} # {wizard_id: [pay_lines]}
for pl in all_pay_lines:
pay_line_map.setdefault(pl.penalty_id.id, []).append(pl)
# 3. 批量查违约金应收记录(按合同分组)
contract_ids = list(set(rec.contract_id.id for rec in receivables if rec.contract_id))
penalty_type = self.env['yuthon.management.type'].sudo().search([('name', '=', '违约金')], limit=1)
all_penalty_recs = self.env['property.accounts.receivable'].sudo().search([
('contract_id', 'in', contract_ids),
('management_type_id', '=', penalty_type.id),
('is_invalid', '=', False),
], order='due_date asc') if penalty_type else self.env['property.accounts.receivable']
# 按 contract_id 分组 {contract_id: [charging_range, ...]}
penalty_range_map = {} # {contract_id: [charging_range]}
for pr in all_penalty_recs:
if pr.charging_range:
penalty_range_map.setdefault(pr.contract_id.id, []).append(pr.charging_range)
# ===== 预加载结束 =====
rows = []
@@ -188,9 +175,22 @@ class ReceivableFlowReport(models.Model):
)
penalty_payment_date = latest_penalty_payment[0].date if latest_penalty_payment else None
# 取该合同下所有违约金记录的 charging_range
penalty_ranges = penalty_range_map.get(rec.contract_id.id, []) if rec.contract_id else []
penalty_range_str = "\n".join(penalty_ranges) if penalty_ranges else ""
# 从 wizard 的 penalty_line_ids.remake 解析违约金时间区间
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')}"
# ==== 应收租金行 ====
rows.append({