The Bill of Lading template assigned a temp variable `<t t-set="dest" t-value="doc.delivery_address_id or doc.partner_id"/>` and then tried `<div t-field="dest" .../>`. Odoo 19 QWeb asserts t-field must be `record.field_name` (have a dot) — the temp variable form fails compilation and the report renders as a multi-page "Oops! Something went wrong" PDF stuffed with the traceback. Fix: branch with `t-if`/`t-else` and call `t-field="doc.delivery_address_id"` or `t-field="doc.partner_id"` directly. Same pattern in both header and second-page-header sections (lines 49/235). Verified: BoL render goes from 39 KB error page to 138 KB clean PDF. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
15 lines
585 B
Python
15 lines
585 B
Python
# Reproduce BoL render error
|
|
import traceback
|
|
env = env # noqa
|
|
report = env.ref('fusion_plating_reports.action_report_fp_bol_portrait')
|
|
print('report:', report.report_name, 'model:', report.model)
|
|
dlv = env['fusion.plating.delivery'].search([], order='id desc', limit=1)
|
|
print('rendering for:', dlv.name, 'id=', dlv.id, 'state=', dlv.state)
|
|
try:
|
|
pdf, _ = report.with_context(force_report_rendering=True
|
|
)._render_qweb_pdf(report.report_name, [dlv.id])
|
|
print('OK pdf size:', len(pdf), 'bytes')
|
|
except Exception:
|
|
print('--- TRACEBACK ---')
|
|
traceback.print_exc()
|