feat(certificates): partner toggles for Nadcap / MTR / Customer-Specific

Adds three Boolean fields (x_fc_send_nadcap_cert, x_fc_send_mill_test,
x_fc_send_customer_specific) to res.partner, default False. Wires
aerospace/defence customers into the existing cert resolver so the
three orphan fp.certificate.certificate_type values become reachable.

Post-migrate idempotently backfills NULL -> FALSE on existing rows.

Sub: docs/superpowers/specs/2026-05-27-recipe-cert-toggles-design.md
Task: T1 of the implementation plan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-27 01:56:36 -04:00
parent e599daf4d9
commit 89267a9f41
3 changed files with 68 additions and 1 deletions

View File

@@ -49,6 +49,35 @@ class ResPartner(models.Model):
'for commercial customers.',
)
# Aerospace / Defence cert toggles (2026-05-27 — sub
# docs/superpowers/specs/2026-05-27-recipe-cert-toggles-design.md).
# Default False — opt-in for aerospace/defence customers only.
# Resolver _resolve_required_cert_types reads these alongside the
# existing x_fc_send_coc / x_fc_send_thickness_report. The three
# cert types (nadcap_cert / mill_test / customer_specific) are
# manual-attach: operator uploads the PDF, no QWeb auto-render.
x_fc_send_nadcap_cert = fields.Boolean(
string='Send Nadcap Certificate',
default=False, tracking=True,
help='Auto-spawn a Nadcap-type fp.certificate when a job for '
'this customer reaches awaiting_cert. Operator attaches '
'the supplier/PRI-issued PDF before clicking Issue — '
'there is no QWeb auto-render for this type.',
)
x_fc_send_mill_test = fields.Boolean(
string='Send Mill Test Report (MTR)',
default=False, tracking=True,
help='Auto-spawn a Mill Test Report cert. Operator attaches '
"the steel supplier's MTR PDF before issuing.",
)
x_fc_send_customer_specific = fields.Boolean(
string='Send Customer-Specific Cert',
default=False, tracking=True,
help='Auto-spawn a customer-specific cert. Operator fills the '
'customer-supplied template PDF and attaches before '
'issuing.',
)
# ---- Sub 6 — Per-contact communication routing -----------------------
# These five flags live on CHILD contacts under a company partner.
# When every contact under a company leaves them blank, the resolver