Three bugs combined to make CTR-00008 (and likely others) land silently:
1. Fallback was count-based, not outcome-based.
_fireFlowTrigger returned >0 when a broken Flow Template (FT-00005)
"matched" on_contract_signed but did nothing. We took that as success
and skipped the built-in install chain. Now we ALWAYS run the built-in
chain; the idempotency check inside (look up existing Issue linked to
contract) lets a healthy Flow Template short-circuit us naturally.
2. scheduled_date was null on all chained jobs.
createDeferredJobs passed '' when no step.scheduled_date was set, and
the fiber_install template doesn't set one. Jobs with null dates are
filtered out of most dispatch board views, giving the user-visible
"Aucune job disponible pour dispatch" symptom even after the chain was
built. Default to today (via ctx.scheduled_date) so jobs appear on the
board; dispatcher reschedules per capacity.
3. No post-sign acknowledgment to the customer.
Previously the Flow Template was expected to send the confirmation SMS;
since the template was broken, the customer got nothing after signing.
Add _sendPostSignAcknowledgment that sends a "Bon de commande reçu"
SMS with contract ref + service details + next steps. Fires only when
the chain is actually created (not on idempotent skip) so we never
double-notify.
Also:
- Resolve phone/email from cell_phone + email_billing (legacy-migrated
Customer records use those fields, not Frappe defaults mobile_no /
email_id) — otherwise we'd keep skipping SMS with "no phone on file".
- _createBuiltInInstallChain now returns { created, issue, jobs,
scheduled_date, reason } so callers can branch on outcome.
- Export sendPostSignAcknowledgment so one-shot backfill scripts can
re-notify customers whose contracts were signed during the broken
window.
- Set order_source='Contract' (existing Select options patched separately
to include 'Contract' alongside Manual/Online/Quotation).
Backfilled CTR-00008: ISS-0000250003 + 4 chained Dispatch Jobs all with
scheduled_date=2026-04-23, ack SMS delivered to Louis-Paul's cell.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>