Add zero-revenue 499-A filing at $179

New service slug fcc-499a-zero for carriers with no telecom revenue:
- $179 instead of $499 (no revenue analysis needed)
- Minimal intake: entity, officer, filer ID, filing type only
- Skips revenue schedules (blocks 3-4), USF calculations (block 5),
  traffic study upload, and revenue workbook generation
- Fills blocks 1-2 and 6 only, all revenue lines left as zero

Compliance checker: shows both options (mutually exclusive checkboxes)
Order page: maps form_499a_zero to fcc-499a-zero slug
Handler: detects slug and skips revenue pipeline
DC Agent shown when either 499-A variant is checked

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-05-03 02:04:18 -05:00
parent 5dabac856d
commit 3e04a8fc16
5 changed files with 98 additions and 37 deletions

View file

@ -32,6 +32,12 @@ const COMPLIANCE_SERVICES: Record<
erpnext_item: "FCC-499A",
discountable: true,
},
"fcc-499a-zero": {
name: "FCC Form 499-A Filing (Zero Revenue)",
price_cents: 17900,
erpnext_item: "FCC-499A-ZERO",
discountable: true,
},
"fcc-499a-499q": {
name: "FCC Form 499-A + 499-Q Bundle",
price_cents: 59900,
@ -284,6 +290,17 @@ const REQUIRED_FIELDS: Record<string, FieldSpec> = {
],
validators: ["lnpa_sums_100", "de_minimis_calc", "trs_base_nonnegative"],
},
// Zero-revenue 499-A: minimal intake — no revenue schedules, no traffic study
"fcc-499a-zero": {
required: [
"entity_structure",
"officer_1_name", "officer_1_title",
"officer_1_street", "officer_1_city", "officer_1_state", "officer_1_zip",
"filer_id_499",
"filing_type",
],
soft: ["ceo_name", "trade_names"],
},
"fcc-499a-499q": {
required: [
"line_105_primary", "line_105_categories",
@ -340,7 +357,7 @@ const REQUIRED_FIELDS: Record<string, FieldSpec> = {
// Entity-level requirements (e.g. "must have an FRN on file before this
// service can run"). Checked against the linked telecom_entity.
const REQUIRES_ENTITY_FRN: ReadonlySet<string> = new Set([
"rmd-filing", "cpni-certification", "fcc-499a", "fcc-499a-499q",
"rmd-filing", "cpni-certification", "fcc-499a", "fcc-499a-zero", "fcc-499a-499q",
"fcc-499-initial", "stir-shaken", "bdc-filing", "bdc-broadband",
"bdc-voice", "calea-ssi", "fcc-63-11-notification", "fcc-full-compliance",
]);
@ -393,7 +410,7 @@ function resolveOrderFeeCents(
// Compute the baseline per-year price for this order.
let perYearPrice = service.price_cents;
let baselineNote: string | undefined;
if (["fcc-499a", "fcc-499a-499q"].includes(slug)) {
if (["fcc-499a", "fcc-499a-zero", "fcc-499a-499q"].includes(slug)) {
if (waive_deminimis) {
// Waive → full price, overrides any de minimis discount
perYearPrice = service.price_cents;
@ -738,7 +755,7 @@ router.post("/api/v1/compliance-orders", async (req, res) => {
.map((y: unknown) => Number(y))
: null;
if (myf && myf.length > 0) {
if (!["fcc-499a", "fcc-499a-499q"].includes(service_slug)) {
if (!["fcc-499a", "fcc-499a-zero", "fcc-499a-499q"].includes(service_slug)) {
res.status(400).json({
error: "multi_year_filings only supported for fcc-499a / fcc-499a-499q.",
});