feat(sticker): bigger field labels + values + notes text

Trimmed the header from 30% to 25% of page height to free up
vertical room for the body band's 7 rows. Each row is now
~10.45mm tall (was 9.88mm), so the field font fits comfortably
at the bigger size.

Size bumps:
- Body field text 26pt -> 30pt (label + value, +15%)
- Muted rev tag 18pt -> 22pt
- Notes label 26pt -> 30pt
- Notes content 19pt -> 22pt (+16%, wraps cleanly to 2 lines
  when the customer description runs long)

Header re-fit (smaller cells, same content):
- Header height 30% -> 25%
- WO# font 62pt -> 56pt
- Logo max-height 135 -> 105px
- QR wrapper 340 -> 280px (image 447 -> 368px, offset -53 ->
  -44px to keep the quiet-zone crop math right)
- High-def 600x600 QR source unchanged — still prints crisp
  at the smaller wrapper size

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-12 23:41:17 -04:00
parent 8aa817b1a0
commit 649b75d4a1
2 changed files with 27 additions and 22 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 — Reports', 'name': 'Fusion Plating — Reports',
'version': '19.0.10.6.0', 'version': '19.0.10.7.0',
'category': 'Manufacturing/Plating', 'category': 'Manufacturing/Plating',
'summary': 'PDF reports for Fusion Plating: quote, SO, WO, packing, BoL, CoC, invoice, receipt, quality + compliance.', 'summary': 'PDF reports for Fusion Plating: quote, SO, WO, packing, BoL, CoC, invoice, receipt, quality + compliance.',
'depends': [ 'depends': [

View File

@@ -112,11 +112,13 @@
page-break-inside: avoid; page-break-inside: avoid;
} }
/* ---- HEADER band: 3 horizontal cells, divided by vertical /* ---- HEADER band: 3 horizontal cells, divided by vertical
rules. Logo / WO# / QR. ---- */ rules. Logo / WO# / QR. Trimmed from 30% to 25% so
the body band (which holds 7 rows) gets more vertical
room — needed for the bigger field font. ---- */
.fp-sticker-head-wrap { .fp-sticker-head-wrap {
position: absolute; position: absolute;
left: 0; right: 0; top: 0; left: 0; right: 0; top: 0;
height: 30%; height: 25%;
border-bottom: 2px solid #000; border-bottom: 2px solid #000;
box-sizing: border-box; box-sizing: border-box;
} }
@@ -138,13 +140,13 @@
td.fp-sticker-head-logo { border-right: 2px solid #000; padding: 0 6px; } td.fp-sticker-head-logo { border-right: 2px solid #000; padding: 0 6px; }
td.fp-sticker-head-wo { border-right: 2px solid #000; } td.fp-sticker-head-wo { border-right: 2px solid #000; }
.fp-sticker-logo { .fp-sticker-logo {
max-height: 135px; max-height: 105px;
max-width: 95%; max-width: 95%;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
} }
.fp-sticker-wo { .fp-sticker-wo {
font-size: 62pt; font-size: 56pt;
font-weight: 900; font-weight: 900;
letter-spacing: 0.1mm; letter-spacing: 0.1mm;
line-height: 1; line-height: 1;
@@ -154,29 +156,32 @@
/* QR wrapper crops the ~12% quiet-zone the barcode generator /* QR wrapper crops the ~12% quiet-zone the barcode generator
adds around the QR pattern. We render the image larger than adds around the QR pattern. We render the image larger than
the wrapper and offset so the wrapper clips that border out. the wrapper and offset so the wrapper clips that border out.
Wrapper 340px = ~28.8mm at 300dpi → fits the 30% header Wrapper 280px = ~23.7mm at 300dpi → fits the 25% header
band with breathing room. ---- */ band. High-def source (600x600) means it still prints
crisp at this size. ---- */
.fp-sticker-qr-wrap { .fp-sticker-qr-wrap {
width: 340px; width: 280px;
height: 340px; height: 280px;
display: inline-block; display: inline-block;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.fp-sticker-qr { .fp-sticker-qr {
width: 447px; width: 368px;
height: 447px; height: 368px;
position: absolute; position: absolute;
top: -53px; top: -44px;
left: -53px; left: -44px;
margin: 0; margin: 0;
display: block; display: block;
} }
/* ---- BODY band: left fields region + right Notes region ---- */ /* ---- BODY band: left fields region + right Notes region.
75% of page height so the 7 rows can each be ~10.6mm
tall, fitting 30pt field text with breathing room. ---- */
.fp-sticker-body-wrap { .fp-sticker-body-wrap {
position: absolute; position: absolute;
left: 0; right: 0; left: 0; right: 0;
top: 30%; bottom: 0; top: 25%; bottom: 0;
} }
.fp-body-left { .fp-body-left {
position: absolute; position: absolute;
@@ -204,8 +209,8 @@
col.fp-col-value { width: 62%; } col.fp-col-value { width: 62%; }
table.fp-sticker-body td { table.fp-sticker-body td {
vertical-align: middle; vertical-align: middle;
padding: 0 12px; padding: 0 10px;
font-size: 26pt; font-size: 30pt;
line-height: 1.0; line-height: 1.0;
} }
td.fp-sticker-label { td.fp-sticker-label {
@@ -220,16 +225,16 @@
white-space: nowrap; white-space: nowrap;
} }
.fp-sticker-strong { font-weight: 700; } .fp-sticker-strong { font-weight: 700; }
.fp-sticker-muted { color: #555; font-size: 18pt; } .fp-sticker-muted { color: #555; font-size: 22pt; }
/* Notes column on the right side of the body. */ /* Notes column on the right side of the body. */
.fp-notes-label { .fp-notes-label {
font-weight: 700; font-weight: 700;
font-size: 26pt; font-size: 30pt;
margin: 0 0 6px 0; margin: 0 0 8px 0;
} }
.fp-notes-content { .fp-notes-content {
font-size: 19pt; font-size: 22pt;
line-height: 1.25; line-height: 1.2;
white-space: pre-line; white-space: pre-line;
word-wrap: break-word; word-wrap: break-word;
overflow: hidden; overflow: hidden;