Add 499-Q intake page, 499-Q handler, and 499-A discontinuance handler

499-Q Quarterly Filing:
- Intake page at /order/fcc-499q with simplified revenue form
  (4 fields: carrier's carrier inter/intra, end-user inter/intra)
- Zero-revenue confirmation checkbox
- Handler creates admin todo with filing details + sends client email
- Registers as fcc-499q in SERVICE_HANDLERS

499-A Discontinuance:
- Handler creates admin todo with step-by-step USAC instructions
  (file zero-revenue 499-A, request account closure, confirm CPNI/RMD)
- Sends client confirmation email explaining the process
- Compliance checker CTA: when user selects "No — cancel registration"
  in the 499-A toggle, shows discontinuance option ($299) instead of
  standard filing
- Order page maps form_499a_disc to fcc-499a-discontinuance slug

Compliance checker intelligence:
- 499-A toggle tracks _499aVariant (null/zero/discontinuance)
- CTA adapts: revenue=standard 499-A, zero=zero-revenue, cancel=discontinuance
- Reset clears variant flag

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-05-03 02:34:18 -05:00
parent 572f0cbf93
commit 0fc318cb38
6 changed files with 514 additions and 3 deletions

View file

@ -18,6 +18,8 @@ from .fcc_compliance_checkup import FCCComplianceCheckupHandler
from .rmd_filing import RMDFilingHandler
from .cpni_certification import CPNIFilingHandler
from .form_499a import Form499AHandler, Form499ABundleHandler
from .form_499q import Form499QHandler
from .form_499a_discontinuance import Form499ADiscontinuanceHandler
from .stir_shaken import StirShakenHandler
from .bdc_filing import BDCFilingHandler
from .fcc_full_compliance import FullComplianceHandler
@ -63,6 +65,8 @@ SERVICE_HANDLERS: dict[str, type] = {
"fcc-499a": Form499AHandler,
"fcc-499a-zero": Form499AHandler, # same handler, zero_revenue flag set from slug
"fcc-499a-499q": Form499ABundleHandler,
"fcc-499q": Form499QHandler,
"fcc-499a-discontinuance": Form499ADiscontinuanceHandler,
"stir-shaken": StirShakenHandler,
# BDC triple — same handler, mode auto-resolved from slug
"bdc-filing": BDCFilingHandler, # legacy alias (both)
@ -100,6 +104,7 @@ FCC_SERVICE_SLUGS: frozenset[str] = frozenset({
"fcc-499a-zero",
"fcc-499a-499q",
"fcc-499q",
"fcc-499a-discontinuance",
"stir-shaken",
"bdc-filing",
"fcc-full-compliance",