Database stores datetimes naive-UTC, but the dashboards and emails were
showing UTC strings to users in EST/EDT — making 9pm Toronto look like 1am
the next day. Adds a single helper module + auto-detection on install.
Core changes (fusion_plating):
- New fp_tz.py helper: fp_user_tz, fp_format, fp_isoformat_utc, fp_time_ago
Resolves user.tz → company.x_fc_default_tz → UTC.
- res.company.x_fc_default_tz Selection (full pytz IANA list)
- res.config.settings exposes the company tz under a new "Regional
Settings" block in Settings > Fusion Plating
- post_init_hook auto-populates the tz on first install: tries admin
user → server /etc/timezone → America/Toronto fallback
- fp_process_node._to_dict now sends create_date/write_date as ISO with
explicit +00:00 marker so JS new Date() parses it as UTC and the
recipe tree editor's "time ago" math works correctly
Shop-floor controllers:
- shopfloor_controller.py: every fields.Datetime.to_string() and naive
.strftime() swapped for fp_format(env, ...) — due_at, bake times,
last_log_date, gates, server_time all now in user's tz
- _time_ago() removed; replaced with fp_time_ago helper which compares
tz-aware datetimes (the local one was naive-vs-naive and could be
off by hours)
- manager_controller.py date_planned: str(...)[:10] slice replaced
with fp_format MM/DD in user's tz
Notifications + reports:
- mail_template_data.xml: 5 .strftime() calls in body_html → babel
format_datetime / format_date with tz=(user.tz or company tz)
- report_fp_job_traveller.xml: rec.received_date (Datetime) gets
t-options="{'widget':'datetime'}" so Odoo's QWeb renders in user tz
Settings view layout:
- fusion_plating now owns the Settings page "Fusion Plating" app shell
- fusion_plating_certificates xpaths into it instead of redefining
(prevents app-name collision)
Verified on odoo-entech (LXC 111): post_init_hook detects
America/Toronto from /etc/timezone, MO date_start 2026-04-17 05:28 UTC
correctly displays as 2026-04-17 01:28 EDT.
Module versions bumped: fusion_plating 19.0.3.0.0,
fusion_plating_shopfloor 19.0.9.0.0, plus certificates / notifications /
reports → 19.0.3.0.0.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
54 lines
1.8 KiB
Python
54 lines
1.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.3.0.0',
|
|
'category': 'Manufacturing/Plating',
|
|
'summary': 'PDF reports for Fusion Plating: quote, SO, WO, packing, BoL, CoC, invoice, receipt, quality + compliance.',
|
|
'depends': [
|
|
'sale',
|
|
'account',
|
|
'stock',
|
|
'mrp',
|
|
'fusion_plating',
|
|
'fusion_plating_quality',
|
|
'fusion_plating_compliance',
|
|
'fusion_plating_safety',
|
|
'fusion_plating_portal',
|
|
'fusion_plating_configurator',
|
|
'fusion_plating_bridge_mrp',
|
|
'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_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/report_fp_sale.xml',
|
|
'report/report_fp_work_order.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',
|
|
],
|
|
'installable': True,
|
|
'application': False,
|
|
'auto_install': False,
|
|
'license': 'OPL-1',
|
|
}
|