报表
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user