fix(reports): WO Margin PDF — t-field requires dot-notation on Odoo 19
The template used 't-field="step['rate']"' for monetary values pulled from dict rows. Odoo 19's QWeb asserts t-field has at least one dot (it's strictly for record.field_name lookups). Replaced six bare-dict t-field usages with t-esc; the existing t-options widget=monetary + display_currency still applies for currency formatting. Verified by rendering report for WO-30019 — 1229-byte valid PDF, no QWeb error. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||||
{
|
{
|
||||||
'name': 'Fusion Plating — Native Jobs',
|
'name': 'Fusion Plating — Native Jobs',
|
||||||
'version': '19.0.8.22.8',
|
'version': '19.0.8.22.9',
|
||||||
'category': 'Manufacturing/Plating',
|
'category': 'Manufacturing/Plating',
|
||||||
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
||||||
'author': 'Nexa Systems Inc.',
|
'author': 'Nexa Systems Inc.',
|
||||||
|
|||||||
@@ -45,8 +45,8 @@
|
|||||||
<td><span t-esc="step['work_centre']"/></td>
|
<td><span t-esc="step['work_centre']"/></td>
|
||||||
<td class="text-end"><span t-esc="step['duration_expected']"/></td>
|
<td class="text-end"><span t-esc="step['duration_expected']"/></td>
|
||||||
<td class="text-end"><span t-esc="step['duration_actual']"/></td>
|
<td class="text-end"><span t-esc="step['duration_actual']"/></td>
|
||||||
<td class="text-end"><span t-field="step['rate']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
<td class="text-end"><span t-esc="step['rate']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
||||||
<td class="text-end"><span t-field="step['cost']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
<td class="text-end"><span t-esc="step['cost']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</t>
|
</t>
|
||||||
<tr style="font-weight: bold; background: #f3f3f3;">
|
<tr style="font-weight: bold; background: #f3f3f3;">
|
||||||
@@ -54,16 +54,16 @@
|
|||||||
<td></td>
|
<td></td>
|
||||||
<td class="text-end"><span t-esc="row['total_minutes']"/></td>
|
<td class="text-end"><span t-esc="row['total_minutes']"/></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td class="text-end"><span t-field="row['total_labour']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
<td class="text-end"><span t-esc="row['total_labour']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3 style="margin-top: 1.5em;">Margin Summary</h3>
|
<h3 style="margin-top: 1.5em;">Margin Summary</h3>
|
||||||
<table class="table table-sm" style="max-width: 400px;">
|
<table class="table table-sm" style="max-width: 400px;">
|
||||||
<tr><th>Quoted Revenue</th><td class="text-end"><span t-field="row['quoted_revenue']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
<tr><th>Quoted Revenue</th><td class="text-end"><span t-esc="row['quoted_revenue']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
||||||
<tr><th>Actual Cost</th><td class="text-end"><span t-field="row['actual_cost']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
<tr><th>Actual Cost</th><td class="text-end"><span t-esc="row['actual_cost']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
||||||
<tr style="font-weight: bold;"><th>Margin</th><td class="text-end"><span t-field="row['margin']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
<tr style="font-weight: bold;"><th>Margin</th><td class="text-end"><span t-esc="row['margin']" t-options="{'widget': 'monetary', 'display_currency': row['job'].currency_id}"/></td></tr>
|
||||||
<tr><th>Margin %</th><td class="text-end"><span t-esc="round(row['margin_pct'], 1)"/>%</td></tr>
|
<tr><th>Margin %</th><td class="text-end"><span t-esc="round(row['margin_pct'], 1)"/>%</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user