Two changes to _fp_get_stage_timeline: 1. Format: 'May 16, 2026 \xb7 9:14 AM' (full year + space + uppercase AM/PM) instead of 'may 16 \xb7 9:14a'. Matches the mockup the user approved. Date-only render kicks in when the timestamp has no time component (backfilled/interpolated midnight values), so we don't show fake '12:00 AM' next to a date we only know to the day. 2. Linear interpolation: records that pre-date Task 16's per-stage Datetime hook had empty middle-stage timestamps. The new fallback spreads done stages evenly between received_at (or received_date) and now() so old records show a plausible progression instead of gap-toothed empty rows. Records created post-hook hit the real captured values and never reach the interpolation branch. Helper imports datetime + time at module level since we need datetime.combine for Date->Datetime conversion in the fallback chain. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fusion Plating — Customer Portal
Part of the Fusion Plating product family by Nexa Systems Inc.
Customer-facing portal that extends fusion_plating with a self-service area
inside Odoo's standard portal layout. Customers can:
- Submit Requests for Quote (RFQ) with drawings, target dates, and notes
- Track production jobs through Received → In Progress → QC → Ready → Shipped → Complete
- Download Certificates of Conformance (CoC) and packing lists
- Reference shipment tracking numbers and invoice references
Models
| Model | Purpose |
|---|---|
fusion.plating.quote.request |
Customer-submitted RFQ |
fusion.plating.portal.job |
Lightweight portal-facing job summary |
res.partner (extended) |
Adds portal-enabled flag and counts |
Routes
| Route | Purpose |
|---|---|
/my/quote_requests |
List quote requests |
/my/quote_requests/<id> |
RFQ detail |
/my/quote_requests/new |
New RFQ form |
/my/quote_requests/submit |
RFQ form submission |
/my/jobs |
List jobs |
/my/jobs/<id> |
Job detail |
/my/jobs/<id>/coc |
Download CoC PDF |
Conventions
- New
res.partnerfields prefixedx_fc_*. - All portal pages extend
portal.portal_layout. - SCSS theme-aware: uses Bootstrap CSS variables only, no hex values.
- Routes are
type='http'(not the deprecatedtype='json').
License
OPL-1 (Odoo Proprietary License v1.0). Copyright 2026 Nexa Systems Inc.