feat(sub12c): chronological CoC body + body_style opt-in router (Task 3)
New template: fusion_plating_reports.coc_body_chronological.
Walks fp.job.step.move records in time order (chain-of-custody).
Per-move heading 'Step Name (Tank Code)' with 'Moved By / Time / Qty'
meta line + a 5-column measurement sub-table (Name / Description /
Target / Actual / Recorded By) when the destination step has captured
inputs. Heading-only when there are no inputs (gating moves).
New router template: coc_body_router. Picks chronological vs classic
based on fp.certificate.body_style. Existing certs default to 'classic'
so no regressions. Both English + French CoC templates rerouted.
fp.certificate.body_style ('classic' | 'chronological') exposed on
the cert form alongside certified_by_id. Operator picks per cert.
Sign-off block reuses the existing owner_user_id signature pattern +
x_fc_coc_signature_override fallback. Cert statement boilerplate is
inline (Sub 12d will move it to a configurable per-customer field).
The Actual column in the measurement sub-table is rendered blank
because Sub 12a/12b runtime captures step_input values via the
operator's per-step input form which lives in a model not yet wired
into this template — Sub 12d follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -70,6 +70,18 @@ class FpCertificate(models.Model):
|
||||
certified_by_id = fields.Many2one(
|
||||
'res.users', string='Certified By', help='Signing authority (e.g. Quality Manager).',
|
||||
)
|
||||
|
||||
# ===== Sub 12c — chronological CoC opt-in ===============================
|
||||
body_style = fields.Selection(
|
||||
[
|
||||
('classic', 'Classic (recipe-order)'),
|
||||
('chronological', 'Chronological (chain-of-custody)'),
|
||||
],
|
||||
string='CoC Body Style', default='classic',
|
||||
help='Chronological walks fp.job.step.move records in time order '
|
||||
'with measurement sub-tables per move, matching Steelhead\'s '
|
||||
'CoC PDF layout. Classic uses the existing recipe-order body.',
|
||||
)
|
||||
issue_date = fields.Date(string='Issue Date', default=fields.Date.today, tracking=True)
|
||||
attachment_id = fields.Many2one('ir.attachment', string='Certificate PDF')
|
||||
thickness_reading_ids = fields.One2many(
|
||||
|
||||
Reference in New Issue
Block a user