feat(fusion_plating_jobs): crop QR quiet-zone so the pattern fills the box (bigger)

The barcode bakes a ~12% white quiet-zone border around the QR. Render the QR
oversized inside an overflow:hidden wrapper offset to clip ~10% off each edge
(under the quiet zone — finder patterns stay intact), so the black pattern
fills the box and reads bigger. Applied to both the full-width (no-tags) and
shared (with-tags) QR. White label cell around the wrapper preserves the scan
margin. Verified live (WO-30072, WO-30090) — finders intact.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-03 14:16:48 -04:00
parent f00a039fc2
commit 2b0add3a2e
2 changed files with 13 additions and 5 deletions

View File

@@ -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.12.1.3', 'version': '19.0.12.1.4',
'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.',

View File

@@ -94,11 +94,19 @@
.qftbl { border-collapse: collapse; width: 100%; height: 100%; } .qftbl { border-collapse: collapse; width: 100%; height: 100%; }
.qftbl td { vertical-align: middle; text-align: center; } .qftbl td { vertical-align: middle; text-align: center; }
.qfqr { width: 66%; } .qfqr { width: 66%; }
.qfqr img { width: 32mm; height: 32mm; vertical-align: middle; } <!-- QR quiet-zone crop: the barcode bakes a ~12% white border
around the pattern. Render the image oversized in an
overflow:hidden wrapper, offset so the wrapper clips ~10% off
each edge (under the quiet zone, so no modules are lost) — the
black pattern then fills the box. White label cell around the
wrapper still provides the scan margin. CLAUDE.md rule 14. -->
.qfwrap-qr { display: inline-block; position: relative; overflow: hidden; width: 31mm; height: 31mm; vertical-align: middle; }
.qfwrap-qr img { position: absolute; width: 39mm; height: 39mm; top: -3.9mm; left: -3.9mm; }
.qftags { width: 34%; border-left: 0.5mm solid #000; } .qftags { width: 34%; border-left: 0.5mm solid #000; }
.qftags .badge { display: block; width: 15mm; margin: 1.4mm auto; font-size: 9.5pt; padding: 0.8mm 0; } .qftags .badge { display: block; width: 15mm; margin: 1.4mm auto; font-size: 9.5pt; padding: 0.8mm 0; }
.qffull { line-height: 36mm; } .qffull { line-height: 36mm; }
.qffull img { width: 34mm; height: 34mm; 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; }
.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; }
@@ -182,7 +190,7 @@
<div class="r-qrflags rule"> <div class="r-qrflags rule">
<t t-if="d['mask'] or d['bake']"> <t t-if="d['mask'] or d['bake']">
<table class="qftbl"><tr> <table class="qftbl"><tr>
<td class="qfqr"><img t-att-src="_qr"/></td> <td class="qfqr"><span class="qfwrap-qr"><img t-att-src="_qr"/></span></td>
<td class="qftags"> <td class="qftags">
<t t-if="d['mask']"><span class="badge">MASK</span></t> <t t-if="d['mask']"><span class="badge">MASK</span></t>
<t t-if="d['bake']"><span class="badge">BAKE</span></t> <t t-if="d['bake']"><span class="badge">BAKE</span></t>
@@ -190,7 +198,7 @@
</tr></table> </tr></table>
</t> </t>
<t t-else=""> <t t-else="">
<div class="qffull"><img t-att-src="_qr"/></div> <div class="qffull"><span class="qfwrap-full"><img t-att-src="_qr"/></span></div>
</t> </t>
</div> </div>
<div class="r-fld rule"> <div class="r-fld rule">