feat(sticker): restore customer-name secrecy cover (ABC-MANU)
Body Customer row now prints a 3-and-4 short code instead of the
full company name. Operators see "ABC-MANU" on the floor; visiting
customers / unauthorised passers-by can't immediately tell whose
parts are on which rack.
Rule (per user's reference design):
- First 3 chars of first word + "-" + first 4 chars of second word
- Single-word names → just first 3 chars
- All uppercase
- Strips non-alphanumeric per word so "St. John's Mfg." doesn't
leak punctuation into the slice
Logic lives in the shared inner template, so all 4 variants pick
it up automatically:
sale.order External + Internal Sticker
fp.job External + Internal Job Sticker
Verified on fp.job 2635: Customer row now reads "ABC-MANU" (was
"ABC Manufactoring").
Doesn't use the orphaned x_fc_short_code field on res.partner
(that field has no column or compute — broken Studio remnant).
A future spec can replace this inline computation with a proper
stored+inverse field if customers want per-partner overrides.
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)
|
||||
{
|
||||
'name': 'Fusion Plating — Reports',
|
||||
'version': '19.0.10.15.0',
|
||||
'version': '19.0.10.16.0',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'PDF reports for Fusion Plating: quote, SO, WO, packing, BoL, CoC, invoice, receipt, quality + compliance.',
|
||||
'depends': [
|
||||
|
||||
@@ -60,6 +60,22 @@
|
||||
else (_mo and _mo.product_qty) or 0"/>
|
||||
<t t-set="_po_number" t-value="_po_number or (_so and _so.x_fc_po_number) or '-'"/>
|
||||
<t t-set="_partner_name" t-value="_partner_name or (_so and _so.partner_id.name) or '-'"/>
|
||||
<!-- Customer short-code for shop-floor "secrecy cover" — operators
|
||||
see "ABC-MANU" instead of "ABC Manufacturing Inc", so visiting
|
||||
customers / unauthorised passers-by can't immediately tell whose
|
||||
parts are on which rack. Rule: first 3 chars of word[0] + "-"
|
||||
+ first 4 chars of word[1], all uppercase. Single-word names:
|
||||
just the first 3 chars. Strips non-alphanumeric per word so
|
||||
punctuation in "St. John's Mfg." doesn't poison the slice. -->
|
||||
<t t-set="_partner_words"
|
||||
t-value="[''.join(c for c in w if c.isalnum())
|
||||
for w in (_partner_name or '').split()
|
||||
if ''.join(c for c in w if c.isalnum())]"/>
|
||||
<t t-set="_partner_display" t-value="
|
||||
(_partner_words[0][:3].upper() + '-' + _partner_words[1][:4].upper())
|
||||
if len(_partner_words) >= 2
|
||||
else (_partner_words[0][:3].upper() if _partner_words else (_partner_name or '-'))
|
||||
"/>
|
||||
<!-- _mo_ref controls the muted "(WH/MO/00033)" suffix next to PO.
|
||||
Outer can pass '' to hide it (e.g. fp.job already shows its
|
||||
own name in the header). Defaults to _mo.name. -->
|
||||
@@ -309,7 +325,7 @@
|
||||
<tr>
|
||||
<td class="fp-sticker-label">Customer:</td>
|
||||
<td class="fp-sticker-value">
|
||||
<span t-esc="_partner_name"/>
|
||||
<span t-esc="_partner_display"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
Reference in New Issue
Block a user