feat(fusion_plating_jobs): internal sticker — add factory logo, customer→row 2, bigger 4-field row 3

Internal Job Sticker (Layout A) redesign per operator feedback:
- Factory (ENTECH) logo added to the black header band on a white chip
  (mirrors the external sticker; visible on the dark band + thermal print).
- Customer moved out of row 3 up next to Part# in row 2. Part# keeps the
  dominant width (stripped customer name is short + consistent), MASK/BAKE
  flags still float at the Part# edge.
- Row 3 now PO# / Qty / Due / Thk (4 fields, customer removed) with bigger
  values (13/14/12/11pt) spread across the full width.
- Internal header QR trimmed 30→27mm so the QR-driven band is shorter; the
  freed height flows to the NOTES block.
Rendered + verified on entech (WO-30072 / AMP-CANA).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-04 11:19:17 -04:00
parent 489312365e
commit b23eaa5695

View File

@@ -107,9 +107,11 @@
.qffull { line-height: 36mm; } .qffull { line-height: 36mm; }
.qfwrap-full { display: inline-block; position: relative; overflow: hidden; width: 33mm; height: 33mm; vertical-align: middle; } .qfwrap-full { display: inline-block; position: relative; overflow: hidden; width: 33mm; height: 33mm; vertical-align: middle; }
.qfwrap-full img { position: absolute; width: 41mm; height: 41mm; top: -4.1mm; left: -4.1mm; } .qfwrap-full img { position: absolute; width: 41mm; height: 41mm; top: -4.1mm; left: -4.1mm; }
/* Internal (Layout A) header QR — same ~10% quiet-zone crop, bigger box. */ /* Internal (Layout A) header QR — same ~10% quiet-zone crop. Trimmed
.qfwrap-int { display: inline-block; position: relative; overflow: hidden; width: 30mm; height: 30mm; vertical-align: middle; } 30mm -> 27mm so the QR-driven black band is shorter and the freed
.qfwrap-int img { position: absolute; width: 37.5mm; height: 37.5mm; top: -3.75mm; left: -3.75mm; } height flows to the NOTES block below. Still well above scan size. */
.qfwrap-int { display: inline-block; position: relative; overflow: hidden; width: 27mm; height: 27mm; vertical-align: middle; }
.qfwrap-int img { position: absolute; width: 33.75mm; height: 33.75mm; top: -3.375mm; left: -3.375mm; }
.r-fld { padding: 1mm 2.2mm; } .r-fld { padding: 1mm 2.2mm; }
.gtbl { border-collapse: collapse; width: 100%; height: 100%; } .gtbl { border-collapse: collapse; width: 100%; height: 100%; }
.gtbl td { padding: 1mm 2.2mm; vertical-align: middle; } .gtbl td { padding: 1mm 2.2mm; vertical-align: middle; }
@@ -122,34 +124,47 @@
<template id="fp_job_internal_body"> <template id="fp_job_internal_body">
<div class="label-page"><div class="label"> <div class="label-page"><div class="label">
<table class="fpt"> <table class="fpt">
<tr style="height:22mm" class="rule"> <tr style="height:20mm" class="rule">
<td class="band pad"> <td class="band pad">
<span style="float:right"><span class="tag">INTERNAL</span></span> <span style="float:right;text-align:right">
<t t-if="_logo"><span style="display:inline-block;background:#fff;padding:0.8mm 1.6mm;border-radius:1mm"><img t-att-src="image_data_uri(_logo)" style="max-height:8mm;max-width:38mm;vertical-align:middle"/></span></t>
<div style="margin-top:1.6mm"><span class="tag">INTERNAL</span></div>
</span>
<span class="lbl" style="color:#fff">Work Order</span> <span class="lbl" style="color:#fff">Work Order</span>
<div style="font-size:30pt;font-weight:900;line-height:0.95"><t t-esc="d['wo']"/></div> <div style="font-size:30pt;font-weight:900;line-height:0.95"><t t-esc="d['wo']"/></div>
</td> </td>
<td style="width:34mm;border-left:0.9mm solid #000;text-align:center;vertical-align:middle;padding:1mm"> <td style="width:31mm;border-left:0.9mm solid #000;text-align:center;vertical-align:middle;padding:1mm">
<span class="qfwrap-int"><img t-att-src="_qr"/></span> <span class="qfwrap-int"><img t-att-src="_qr"/></span>
</td> </td>
</tr> </tr>
<tr style="height:12mm" class="rule"> <!-- Part# (dominant) + Customer moved up here. Customer is short +
<td class="pad" colspan="2"> consistent (name stripped for privacy) so it needs little room;
<span class="lbl">Part#</span> Part# gets the bulk. MASK/BAKE flags float at the Part# edge. -->
<span style="font-size:18pt;font-weight:900"> <t t-esc="d['part'] or '-'"/></span> <tr style="height:13mm" class="rule">
<t t-if="d['rev']"><span style="font-size:11pt;font-weight:bold"> Rev <t t-esc="d['rev']"/></span></t>
<span style="float:right">
<t t-if="d['mask']"><span class="badge">MASK</span></t>
<t t-if="d['bake']"><span class="badge">BAKE</span></t>
</span>
</td>
</tr>
<tr style="height:10mm" class="rule">
<td style="padding:0" colspan="2"><table class="fpt"><tr> <td style="padding:0" colspan="2"><table class="fpt"><tr>
<td class="pad vrule" style="width:25%"><span class="lbl">Customer</span><br/><span style="font-size:12pt;font-weight:900"><t t-esc="d['customer']"/></span></td> <td class="pad vrule" style="width:72%">
<td class="pad vrule" style="width:21%"><span class="lbl">PO#</span><br/><span style="font-size:11pt;font-weight:bold"><t t-esc="d['po'] or '-'"/></span></td> <span style="float:right">
<td class="pad vrule" style="width:13%"><span class="lbl">Qty</span><br/><span style="font-size:12pt;font-weight:900"><t t-esc="d['qty']"/></span></td> <t t-if="d['mask']"><span class="badge">MASK</span></t>
<td class="pad vrule" style="width:22%"><span class="lbl">Due</span><br/><span style="font-size:10pt;font-weight:bold"><t t-esc="d['due'] or '-'"/></span></td> <t t-if="d['bake']"><span class="badge">BAKE</span></t>
<td class="pad"><span class="lbl">Thk</span><br/><span style="font-size:9.5pt;font-weight:bold"><t t-esc="d['thk'] or '-'"/></span></td> </span>
<span class="lbl">Part#</span>
<span style="font-size:18pt;font-weight:900"> <t t-esc="d['part'] or '-'"/></span>
<t t-if="d['rev']"><span style="font-size:11pt;font-weight:bold"> Rev <t t-esc="d['rev']"/></span></t>
</td>
<td class="pad" style="width:28%">
<span class="lbl">Customer</span>
<span style="font-size:13pt;font-weight:900;display:block;line-height:1.05"><t t-esc="d['customer']"/></span>
</td>
</tr></table></td>
</tr>
<!-- PO# / Qty / Due / Thk — Customer removed, 4 fields share the row
with bigger values; freed vertical room flows to NOTES. -->
<tr style="height:12mm" class="rule">
<td style="padding:0" colspan="2"><table class="fpt"><tr>
<td class="pad vrule" style="width:34%"><span class="lbl">PO#</span><br/><span style="font-size:13pt;font-weight:900"><t t-esc="d['po'] or '-'"/></span></td>
<td class="pad vrule" style="width:16%"><span class="lbl">Qty</span><br/><span style="font-size:14pt;font-weight:900"><t t-esc="d['qty']"/></span></td>
<td class="pad vrule" style="width:30%"><span class="lbl">Due</span><br/><span style="font-size:12pt;font-weight:bold"><t t-esc="d['due'] or '-'"/></span></td>
<td class="pad" style="width:20%"><span class="lbl">Thk</span><br/><span style="font-size:11pt;font-weight:bold"><t t-esc="d['thk'] or '-'"/></span></td>
</tr></table></td> </tr></table></td>
</tr> </tr>
<t t-if="d['bake']"> <t t-if="d['bake']">
@@ -242,6 +257,7 @@
<t t-set="_note_pt" t-value="job._fp_note_pt(_note)"/> <t t-set="_note_pt" t-value="job._fp_note_pt(_note)"/>
<t t-set="_base" t-value="job.env['ir.config_parameter'].sudo().get_param('web.base.url', '')"/> <t t-set="_base" t-value="job.env['ir.config_parameter'].sudo().get_param('web.base.url', '')"/>
<t t-set="_qr" t-value="job.env['ir.actions.report'].sudo().barcode_data_uri('QR', _base + '/fp/job/' + str(job.id), width=1000, height=1000)"/> <t t-set="_qr" t-value="job.env['ir.actions.report'].sudo().barcode_data_uri('QR', _base + '/fp/job/' + str(job.id), width=1000, height=1000)"/>
<t t-set="_logo" t-value="job.env.company.logo or job.env.company.logo_web or job.env.company.partner_id.image_1920 or False"/>
<t t-call="fusion_plating_jobs.fp_job_internal_body"/> <t t-call="fusion_plating_jobs.fp_job_internal_body"/>
</t> </t>
</t> </t>