Files
Odoo-Modules/fusion_plating/fusion_plating_reports/__manifest__.py
gsinghpal 83c4eb7ee1 feat(sticker): restore older 3-cell-header + right-Notes-panel layout
Per user request — the previous (now restored) layout is the one
operators were used to:

- Header: single row with 3 cells side-by-side (Logo | WO # | QR)
  instead of the stacked logo+WO# left / QR right.
- Body: 3-col layout (Label | Value | Notes-rowspan). Notes is a tall
  right-side panel spanning all 7 body rows — gives operators ~62mm
  of vertical space for multi-line notes (vs. the prior single-row
  Notes that capped at ~8.7mm).
- Fields: PO #, SN #, Customer, Part #, Due Date, Thickness, Qty.
  SN # joins x_fc_serial_ids; Thickness composes from the coating's
  thickness_min/max + uom.
- Header band 32% (was 40%), body band 68% — the header is shorter
  because there's no stacked logo/WO# anymore; body grows to absorb
  the freed space, but the 7-row grid already provided ample
  per-row height.
- Body text 17pt main / 13pt muted (down from 38pt). The big-font
  pass was for a 7-row equal-height grid; with the 3-col layout
  the per-row height is unchanged but the rows are now narrower
  (only ~70% of the page width minus the Notes panel), so a more
  conservative font keeps text from wrapping mid-cell.
- QR generation stays at 600x600 (sharper print at scan time).

Variable interface unchanged. mrp.production / mrp.workorder /
fp.job / sale.order all still call the same inner template; two
new variables (_serial_names, _thickness_str) get pre-set by the
defaults template and resolved by the inner.

Verified: 72-KB PDF renders cleanly on entech for WO-30019.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 21:58:02 -04:00

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.5.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',
}