Inner sticker template gains two parameters that outer templates
pre-set:
_qty_total — total qty for the line/job. Inner wraps the body
in t-foreach="range(int(_qty_total or 1))" so a qty=5 line
produces 5 consecutive single-box stickers. Qty row in the
body switches from "5" to "1 / 5", "2 / 5", ... "5 / 5".
When _qty_total is missing/0/1, the Qty row keeps showing
the plain integer (regression-free).
_notes_content — Notes column source. Existing inner code
hard-read _line.name; new code accepts an outer override
and falls back to _line.name. External outers don't set it
(unchanged behaviour); the new Internal outers (Task 4+5)
pre-set it to x_fc_internal_description.
Defaults template initialises both new vars to False so the
inner's "outer-supplied OR fallback" pattern doesn't NameError
when called from existing outers that haven't been updated yet.
Verified regression-free: fp.job 2635 (qty=1) renders identically
to its pre-Task baseline — Qty row shows plain "1", Notes from
line.name as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
{
|
|
'name': 'Fusion Plating — Reports',
|
|
'version': '19.0.10.12.0',
|
|
'category': 'Manufacturing/Plating',
|
|
'summary': 'PDF reports for Fusion Plating: quote, SO, WO, packing, BoL, CoC, invoice, receipt, quality + compliance.',
|
|
'depends': [
|
|
'sale',
|
|
'sale_pdf_quote_builder',
|
|
'account',
|
|
'stock',
|
|
# 'mrp' dep dropped post-Sub 11 (MRP cutout). Plating uses fp.job
|
|
# exclusively now. Re-introducing this dep silently pulls mrp +
|
|
# cascade back to `installed` on any -u base rescan.
|
|
'fusion_plating',
|
|
'fusion_plating_quality',
|
|
'fusion_plating_compliance',
|
|
'fusion_plating_safety',
|
|
'fusion_plating_portal',
|
|
'fusion_plating_configurator',
|
|
# NB: fusion_plating_jobs intentionally NOT depended on. Jobs depends
|
|
# on us (uses report_fp_wo_sticker_inner). Adding the reverse dep
|
|
# creates a cycle. Our only fp.job touchpoint is wo_scan.py which
|
|
# uses runtime env.get('fp.job') — safe without the manifest dep.
|
|
'fusion_plating_logistics',
|
|
],
|
|
'data': [
|
|
'security/ir.model.access.csv',
|
|
'report/report_base_styles.xml',
|
|
'report/report_actions.xml',
|
|
# Quality + compliance reports
|
|
'report/report_coc.xml',
|
|
'report/report_coc_chronological.xml',
|
|
'report/report_fp_rack_travel.xml',
|
|
'report/report_ncr.xml',
|
|
'report/report_capa.xml',
|
|
'report/report_bath_chemistry_log.xml',
|
|
'report/report_calibration_cert.xml',
|
|
'report/report_fair.xml',
|
|
'report/report_audit.xml',
|
|
'report/report_incident.xml',
|
|
'report/report_spill.xml',
|
|
'report/report_waste_manifest.xml',
|
|
'report/report_discharge_sample.xml',
|
|
'report/report_wo_margin.xml',
|
|
# Quote-to-cash reports (portrait + landscape)
|
|
'report/customer_line_header.xml',
|
|
'report/report_fp_sale.xml',
|
|
'report/report_fp_work_order.xml',
|
|
'report/report_fp_wo_sticker.xml',
|
|
'report/report_fp_job_traveller.xml',
|
|
'report/report_fp_packing_slip.xml',
|
|
'report/report_fp_bol.xml',
|
|
'report/report_fp_invoice.xml',
|
|
'report/report_fp_receipt.xml',
|
|
# Sub 12 Phase E — quality/RMA reports.
|
|
'report/report_fp_rma_authorisation.xml',
|
|
'report/report_fp_8d.xml',
|
|
'report/report_fp_quality_monthly.xml',
|
|
# Hide Odoo's default reports from the Print menu wherever FP
|
|
# ships an equivalent (loaded last so it overrides any earlier
|
|
# binding declarations from base modules).
|
|
'data/fp_hide_default_reports.xml',
|
|
],
|
|
'installable': True,
|
|
'application': False,
|
|
'auto_install': False,
|
|
'license': 'OPL-1',
|
|
}
|