diff --git a/scripts/document_gen/templates/fcc_499a_checklist_generator.py b/scripts/document_gen/templates/fcc_499a_checklist_generator.py
deleted file mode 100644
index 935a9d6..0000000
--- a/scripts/document_gen/templates/fcc_499a_checklist_generator.py
+++ /dev/null
@@ -1,1326 +0,0 @@
-"""
-Generate the FCC Form 499-A Filing Preparation Checklist.
-
-Produces a pre-filled checklist based on the carrier's classification
-(filer type, infrastructure type, service categories, de minimis / LIRE
-status, VoIP safe harbor election, and revenue details) that tells the
-carrier exactly which parts of the 499-A apply to them and what data to
-gather.
-
-This is NOT a 499-A filing — it's a preparation guide.
-
-Usage:
- from scripts.document_gen.templates.fcc_499a_checklist_generator import (
- generate_499a_checklist,
- )
- path = generate_499a_checklist(
- entity_name="Falcon Broadband LLC",
- frn="0027160886",
- filer_type="interconnected_voip",
- infra_type="facilities",
- service_categories=["interconnected_voip", "long_distance"],
- is_deminimis=False,
- contribution_factor_pct=35.8,
- uses_voip_safe_harbor=True,
- output_path="/tmp/499a_checklist.docx",
- )
-"""
-from __future__ import annotations
-
-import logging
-from datetime import datetime
-from pathlib import Path
-from typing import Optional
-
-LOG = logging.getLogger("document_gen.fcc_499a_checklist")
-
-try:
- from docx import Document
- from docx.shared import Pt, Inches, RGBColor, Emu
- from docx.enum.text import WD_ALIGN_PARAGRAPH
- from docx.enum.table import WD_TABLE_ALIGNMENT
- from docx.oxml.ns import qn, nsdecls
- from docx.oxml import parse_xml
-except ImportError:
- LOG.warning("python-docx not installed — 499-A checklist generation unavailable")
- Document = None
-
-
-# ── Constants ───────────────────────────────────────────────────────
-
-NAVY = RGBColor(0x1A, 0x27, 0x44)
-DARK_GRAY = RGBColor(0x33, 0x33, 0x33)
-MEDIUM_GRAY = RGBColor(0x66, 0x66, 0x66)
-LIGHT_GRAY_BG = "F2F4F7" # for info-box shading
-WHITE = RGBColor(0xFF, 0xFF, 0xFF)
-
-CHECK_EMPTY = "\u2610"
-CHECK_FILLED = "\u2611"
-
-# De minimis threshold: $10,000 in combined interstate + international
-# end-user telecom revenue.
-DE_MINIMIS_THRESHOLD_CENTS = 10_000_00
-
-# LIRE threshold: 12% of total end-user telecom revenue from
-# international services.
-LIRE_THRESHOLD_PCT = 12.0
-
-
-# ── Service category labels ────────────────────────────────────────
-
-_CATEGORY_LABELS = {
- "interconnected_voip": "Interconnected VoIP",
- "non_interconnected_voip": "Non-Interconnected VoIP",
- "local_exchange": "Local Exchange Service",
- "long_distance": "Long Distance / Interexchange",
- "wireless": "Wireless / CMRS",
- "dedicated_line": "Dedicated Line / Private Line",
- "resale": "Resale Services",
- "other_telecom": "Other Telecommunications Services",
- "toll_free": "Toll Free / 8XX Service",
- "payphone": "Payphone Service",
- "une": "Unbundled Network Elements (UNE)",
-}
-
-
-# ── Revenue line mappings by infrastructure type ───────────────────
-#
-# Block labels verified against the 2026 Form 499-A (November 2025 release,
-# reporting 2025 revenues). The 2025/2026 form structure is identical:
-# Block 3 = Carrier's Carrier Revenue (Lines 301–315) — revenues from
-# sales to other contributing carriers for resale
-# Block 4-A = End-User and Non-Telecom Revenue (Lines 401–418)
-# Block 4-B = Total Revenue + Uncollectibles (Lines 419–423)
-# Block 5 = Regional percentage breakouts + TRS contribution base
-# + reseller exclusions (Lines 501–514) — NOT a revenue bucket
-#
-# Resale revenue = reseller selling to end-users goes on Block 4-A line 418.x
-# (bundled); there is no "Block 5 resale" bucket on the form.
-
-_REVENUE_LINES = {
- "facilities": {
- "sections": [
- "Block 3: Carrier\u2019s Carrier Revenue (Lines 301\u2013315)",
- "Block 4-A: End-User and Non-Telecom Revenue (Lines 401\u2013418)",
- "Block 4-B: Total Revenue and Uncollectible Revenue (Lines 419\u2013423)",
- "Block 5: Additional Revenue Breakouts and Regional Percentages (Lines 501\u2013514)",
- ],
- "description": (
- "As a facilities-based provider, report revenues from sales to "
- "other contributing carriers in Block 3 (Lines 301\u2013315), and "
- "end-user + non-telecom revenues in Block 4-A (Lines 401\u2013418). "
- "Totals and uncollectibles go in Block 4-B. Block 5 is regional "
- "percentage breakouts + TRS contribution base \u2014 not a revenue bucket."
- ),
- },
- "reseller": {
- "sections": [
- "Block 4-A: End-User and Non-Telecom Revenue (Lines 401\u2013418)",
- "Block 4-B: Total Revenue and Uncollectible Revenue (Lines 419\u2013423)",
- "Block 5: Additional Revenue Breakouts and Regional Percentages (Lines 501\u2013514)",
- ],
- "description": (
- "As a reseller selling to end-users, report all revenues in "
- "Block 4-A (Lines 401\u2013418). You may deduct resold service costs "
- "(amounts paid to your upstream contributing provider) from gross "
- "revenues via Lines 511/513 in Block 5 (reseller exclusions)."
- ),
- },
- "both": {
- "sections": [
- "Block 3: Carrier\u2019s Carrier Revenue (Lines 301\u2013315)",
- "Block 4-A: End-User and Non-Telecom Revenue (Lines 401\u2013418)",
- "Block 4-B: Total Revenue and Uncollectible Revenue (Lines 419\u2013423)",
- "Block 5: Additional Revenue Breakouts and Regional Percentages (Lines 501\u2013514)",
- ],
- "description": (
- "As a facilities-based provider that also resells, report sales "
- "to other contributing carriers in Block 3, and end-user + resold-"
- "to-end-user revenues in Block 4-A."
- ),
- },
-}
-
-
-def generate_499a_checklist(
- # Entity identity
- entity_name: str,
- frn: str = "",
- filer_id_499: str = "",
- # Block 1 — identifying info beyond legal name
- dba_name: str = "", # Line 104
- ein: str = "", # Line 103
- trade_names: list[str] | None = None, # Line 112
- affiliated_filer_name: str = "", # Line 106.1
- affiliated_filer_ein: str = "", # Line 106.2
- management_company_name: str = "", # Line 108
- # Address (Line 109 corporate HQ)
- address_street: str = "",
- address_city: str = "",
- address_state: str = "",
- address_zip: str = "",
- # Block 2-A — regulatory contact / worksheet correspondence / billing
- regulatory_contact_name: str = "Justin Hannah", # Line 203
- regulatory_contact_email: str = "filings@performancewest.net",
- regulatory_contact_phone: str = "888-411-0383",
- worksheet_office_company: str = "Performance West Inc", # Line 207
- worksheet_office_street: str = "30 N Gould St, Ste N",
- worksheet_office_city: str = "Sheridan",
- worksheet_office_state: str = "WY",
- worksheet_office_zip: str = "82801",
- billing_contact_name: str = "", # Line 208
- billing_contact_email: str = "",
- itsp_regulatory_fee_email: str = "", # Line 208.1
- # Block 2-B — D.C. Agent (defaults to Northwest Registered Agent)
- dc_agent_company: str = "Northwest Registered Agent Service Inc.",
- dc_agent_street: str = "1717 N Street NW STE 1",
- dc_agent_city: str = "Washington",
- dc_agent_state: str = "DC",
- dc_agent_zip: str = "20036",
- dc_agent_phone: str = "509-768-2249",
- dc_agent_email: str = "support@northwestregisteredagent.com",
- # Block 2-C — Officers + jurisdictions + first service (Lines 221-228)
- officer_1_name: str = "", officer_1_title: str = "Chief Executive Officer",
- officer_1_street: str = "", officer_1_city: str = "",
- officer_1_state: str = "", officer_1_zip: str = "",
- officer_2_name: str = "", officer_2_title: str = "",
- officer_2_street: str = "", officer_2_city: str = "",
- officer_2_state: str = "", officer_2_zip: str = "",
- officer_3_name: str = "", officer_3_title: str = "",
- officer_3_street: str = "", officer_3_city: str = "",
- officer_3_state: str = "", officer_3_zip: str = "",
- jurisdictions_served: list[str] | None = None, # Line 227
- first_telecom_service_year: int = 0, # Line 228
- first_telecom_service_month: int = 0,
- first_telecom_service_pre_1999: bool = False,
- # Block 6 — exemptions + filing type
- exempt_usf: bool = False, # Line 603
- exempt_trs: bool = False,
- exempt_nanpa: bool = False,
- exempt_lnp: bool = False,
- exemption_explanation: str = "",
- is_state_local_gov: bool = False, # Line 604
- is_tax_exempt_501c: bool = False,
- filing_type: str = "original", # Line 612
- # Alternative Billing Arrangements Worksheet (Page 9, optional)
- use_alt_billing: bool = False,
- alt_billing_trs: dict | None = None,
- alt_billing_nanp: dict | None = None,
- alt_billing_lnp: dict | None = None,
- alt_billing_fcc: dict | None = None,
- # Classification
- filer_type: str = "interconnected_voip",
- infra_type: str = "facilities",
- service_categories: list[str] | None = None,
- is_deminimis: bool = False,
- is_lire: bool = False,
- # Revenue (if known)
- total_revenue_cents: int = 0,
- interstate_pct: float = 0,
- international_pct: float = 0,
- last_filing_year: int = 0,
- # USF contribution
- contribution_factor_pct: float = 0.0,
- # VoIP safe harbor
- uses_voip_safe_harbor: bool = False,
- voip_safe_harbor_pct: float = 64.9,
- # Deductions
- uncollectible_revenue_cents: int = 0,
- resold_service_costs_cents: int = 0,
- # Red Light Rule
- has_outstanding_fcc_debt: bool = False,
- # Output
- output_path: str = "/tmp/fcc_499a_checklist.docx",
-) -> Optional[str]:
- """
- Generate a Form 499-A Filing Preparation Checklist as a DOCX file.
-
- Returns the output file path on success, None on failure.
- """
- if Document is None:
- LOG.error("python-docx not installed")
- return None
-
- categories = service_categories or []
- trade_names = trade_names or []
- jurisdictions_served = jurisdictions_served or []
- filing_year = datetime.now().year
- today = datetime.now().strftime("%B %d, %Y")
- doc = Document()
-
- # ── Page setup ───────────────────────────────────────────────
- for section in doc.sections:
- section.top_margin = Inches(0.8)
- section.bottom_margin = Inches(0.8)
- section.left_margin = Inches(1.0)
- section.right_margin = Inches(1.0)
-
- # ── Style defaults ───────────────────────────────────────────
- style = doc.styles["Normal"]
- style.font.size = Pt(10)
- style.font.color.rgb = DARK_GRAY
- style.paragraph_format.space_after = Pt(2)
- style.paragraph_format.space_before = Pt(0)
-
- # ── Helpers ──────────────────────────────────────────────────
-
- def _heading(text: str, level: int = 1) -> None:
- p = doc.add_paragraph()
- p.paragraph_format.space_before = Pt(14 if level == 1 else 8)
- p.paragraph_format.space_after = Pt(4)
- run = p.add_run(text)
- run.font.size = Pt(14 if level == 1 else 11)
- run.bold = True
- run.font.color.rgb = NAVY
-
- def _para(text: str, size: int = 10, bold: bool = False,
- color: RGBColor = DARK_GRAY, italic: bool = False,
- space_after: int = 2) -> None:
- p = doc.add_paragraph()
- p.paragraph_format.space_after = Pt(space_after)
- run = p.add_run(text)
- run.font.size = Pt(size)
- run.bold = bold
- run.font.color.rgb = color
- run.italic = italic
-
- def _checkbox(text: str, checked: bool = False) -> None:
- p = doc.add_paragraph()
- p.paragraph_format.space_after = Pt(1)
- p.paragraph_format.left_indent = Inches(0.25)
- mark = CHECK_FILLED if checked else CHECK_EMPTY
- run = p.add_run(f" {mark} {text}")
- run.font.size = Pt(10)
- run.font.color.rgb = DARK_GRAY
-
- def _info_box(text: str) -> None:
- """Render a light-gray shaded info/guidance box."""
- p = doc.add_paragraph()
- p.paragraph_format.space_before = Pt(4)
- p.paragraph_format.space_after = Pt(6)
- p.paragraph_format.left_indent = Inches(0.25)
- p.paragraph_format.right_indent = Inches(0.25)
- # Apply shading to the paragraph
- shading = parse_xml(
- f''
- )
- p.paragraph_format.element.get_or_add_pPr().append(shading)
- run = p.add_run(f" {text}")
- run.font.size = Pt(9)
- run.font.color.rgb = MEDIUM_GRAY
- run.italic = True
-
- def _spacer() -> None:
- p = doc.add_paragraph()
- p.paragraph_format.space_before = Pt(0)
- p.paragraph_format.space_after = Pt(0)
- run = p.add_run("")
- run.font.size = Pt(4)
-
- def _add_table(headers: list[str], rows: list[list[str]],
- col_widths: list[float] | None = None) -> None:
- """Add a formatted table."""
- table = doc.add_table(rows=1 + len(rows), cols=len(headers))
- table.alignment = WD_TABLE_ALIGNMENT.CENTER
- table.autofit = True
-
- # Header row
- for i, header in enumerate(headers):
- cell = table.rows[0].cells[i]
- cell.text = ""
- p = cell.paragraphs[0]
- run = p.add_run(header)
- run.bold = True
- run.font.size = Pt(9)
- run.font.color.rgb = WHITE
- p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- shading = parse_xml(
- f''
- )
- cell._tc.get_or_add_tcPr().append(shading)
-
- # Data rows
- for r_idx, row_data in enumerate(rows):
- for c_idx, cell_text in enumerate(row_data):
- cell = table.rows[r_idx + 1].cells[c_idx]
- cell.text = ""
- p = cell.paragraphs[0]
- run = p.add_run(cell_text)
- run.font.size = Pt(9)
- run.font.color.rgb = DARK_GRAY
- # Alternate row shading
- if r_idx % 2 == 0:
- shading = parse_xml(
- f''
- )
- cell._tc.get_or_add_tcPr().append(shading)
-
- # Set column widths if provided
- if col_widths:
- for row in table.rows:
- for i, width in enumerate(col_widths):
- if i < len(row.cells):
- row.cells[i].width = Inches(width)
-
- def _fmt_dollars(cents: int) -> str:
- return f"${cents / 100:,.2f}"
-
- def _add_page_number_footer() -> None:
- """Add page numbers to the footer."""
- for section in doc.sections:
- footer = section.footer
- footer.is_linked_to_previous = False
- p = footer.paragraphs[0] if footer.paragraphs else footer.add_paragraph()
- p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- # Page number field
- run = p.add_run()
- fld_char_begin = parse_xml(
- f''
- )
- run._r.append(fld_char_begin)
- run2 = p.add_run()
- instr = parse_xml(
- f' PAGE '
- )
- run2._r.append(instr)
- run3 = p.add_run()
- fld_char_end = parse_xml(
- f''
- )
- run3._r.append(fld_char_end)
- for r in [run, run2, run3]:
- r.font.size = Pt(8)
- r.font.color.rgb = MEDIUM_GRAY
-
- # ── Page numbers ─────────────────────────────────────────────
- _add_page_number_footer()
-
- # ── Header / Title Block ─────────────────────────────────────
- title_p = doc.add_paragraph()
- title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- title_p.paragraph_format.space_after = Pt(2)
- title_run = title_p.add_run("FCC Form 499-A")
- title_run.font.size = Pt(18)
- title_run.bold = True
- title_run.font.color.rgb = NAVY
-
- subtitle_p = doc.add_paragraph()
- subtitle_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- subtitle_p.paragraph_format.space_after = Pt(2)
- sub_run = subtitle_p.add_run("Filing Preparation Checklist")
- sub_run.font.size = Pt(14)
- sub_run.bold = True
- sub_run.font.color.rgb = NAVY
-
- # Confidential subtitle
- conf_p = doc.add_paragraph()
- conf_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- conf_p.paragraph_format.space_after = Pt(6)
- conf_run = conf_p.add_run("CONFIDENTIAL \u2014 FILING PREPARATION")
- conf_run.font.size = Pt(9)
- conf_run.bold = True
- conf_run.font.color.rgb = MEDIUM_GRAY
- conf_run.font.all_caps = True
-
- # Entity name and date
- entity_p = doc.add_paragraph()
- entity_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- entity_p.paragraph_format.space_after = Pt(1)
- er = entity_p.add_run(entity_name)
- er.font.size = Pt(13)
- er.bold = True
- er.font.color.rgb = DARK_GRAY
-
- date_p = doc.add_paragraph()
- date_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- date_p.paragraph_format.space_after = Pt(2)
- dr = date_p.add_run(f"Prepared: {today}")
- dr.font.size = Pt(10)
- dr.font.color.rgb = MEDIUM_GRAY
-
- _spacer()
-
- # ── Red Light Rule Warning ───────────────────────────────────
- if has_outstanding_fcc_debt:
- warn_p = doc.add_paragraph()
- warn_p.paragraph_format.space_before = Pt(6)
- warn_p.paragraph_format.space_after = Pt(6)
- warn_p.paragraph_format.left_indent = Inches(0.25)
- warn_p.paragraph_format.right_indent = Inches(0.25)
- shading = parse_xml(
- f''
- )
- warn_p.paragraph_format.element.get_or_add_pPr().append(shading)
- warn_run = warn_p.add_run(
- "\u26a0 RED LIGHT RULE WARNING: This entity has outstanding "
- "FCC debt on record. Under the Red Light Rule (47 C.F.R. "
- "\u00a7 1.1910), entities with delinquent debts owed to the FCC "
- "cannot receive new authorizations, licenses, or other benefits "
- "until the debt is resolved. Contact the FCC immediately to "
- "arrange payment or a payment plan before filing."
- )
- warn_run.font.size = Pt(9)
- warn_run.bold = True
- warn_run.font.color.rgb = RGBColor(0xB7, 0x1C, 0x1C)
- _spacer()
-
- # ── Introduction ─────────────────────────────────────────────
- _para(
- "This checklist identifies the sections of FCC Form 499-A that apply "
- "to your filing based on your carrier classification. Use it to gather "
- "the required data before filing electronically via the USAC E-File "
- "system (https://forms.universalservice.org). This is a preparation "
- "guide, not a filing submission.",
- size=9,
- color=MEDIUM_GRAY,
- )
-
- _info_box(
- "E-FILE REQUIREMENT: FCC Form 499-A must be filed electronically "
- "through the USAC E-File portal. Paper filings are not accepted. "
- "Ensure you have valid E-File credentials before the filing deadline."
- )
-
- # ── Quick Reference Summary Table ────────────────────────────
- _heading("Quick Reference Summary")
-
- filer_label = _CATEGORY_LABELS.get(filer_type, filer_type.replace("_", " ").title())
- infra_label = {
- "facilities": "Facilities-Based",
- "reseller": "Reseller",
- "both": "Facilities-Based + Reseller",
- }.get(infra_type, infra_type.title())
-
- de_minimis_label = "Yes" if is_deminimis else "No"
- lire_label = "Yes" if is_lire else "No"
- quarterly_required = "No (de minimis exempt)" if is_deminimis else "Yes"
-
- summary_rows = [
- ["Entity Name", entity_name],
- ["FRN", frn or "Not provided"],
- ["499 Filer ID", filer_id_499 or "Not provided"],
- ["Primary Filer Type", filer_label],
- ["Infrastructure Type", infra_label],
- ["De Minimis", de_minimis_label],
- ["LIRE", lire_label],
- ["499-A Due Date", f"April 1, {filing_year}"],
- ["499-Q Required", quarterly_required],
- ]
- if contribution_factor_pct > 0:
- summary_rows.append(
- ["USF Contribution Factor", f"{contribution_factor_pct:.1f}%"]
- )
- if uses_voip_safe_harbor:
- summary_rows.append(
- ["VoIP Safe Harbor", f"Yes ({voip_safe_harbor_pct:.1f}% interstate)"]
- )
- if total_revenue_cents > 0:
- summary_rows.append(
- ["Total Revenue (Prior Year)", _fmt_dollars(total_revenue_cents)]
- )
-
- _add_table(["Field", "Value"], summary_rows, col_widths=[2.5, 4.0])
- _spacer()
-
- # ── Section 1: Filer Identification (Block 1) ────────────────
- _heading("1. Filer Identification (Block 1)")
-
- _info_box(
- "Block 1 of Form 499-A collects basic identifying information. "
- "All fields must match your FCC Registration Number (FRN) record "
- "in CORES. File via USAC E-File at https://forms.universalservice.org."
- )
-
- _checkbox(f"Legal Name: {entity_name}", checked=bool(entity_name))
- _checkbox(f"FRN: {frn or '_______________'}", checked=bool(frn))
- _checkbox(
- f"499 Filer ID: {filer_id_499 or '_______________'}",
- checked=bool(filer_id_499),
- )
-
- addr = ", ".join(
- filter(None, [address_street, address_city, address_state, address_zip])
- )
- _checkbox(
- f"Principal Address: {addr or '_______________'}",
- checked=bool(addr.strip(", ")),
- )
-
- # Block 1 identifying lines beyond the legal name
- _checkbox(f"IRS EIN (Line 103): {ein or '_______________'}", checked=bool(ein))
- _checkbox(f"DBA name (Line 104): {dba_name or '_______________'}", checked=bool(dba_name))
- _checkbox("Contact Name: _______________", checked=False)
- _checkbox("Contact Phone: _______________", checked=False)
- _checkbox("Contact Email: _______________", checked=False)
- _checkbox("USAC E-File login credentials verified", checked=False)
-
- # Line 106 — affiliated filer / holding company
- if affiliated_filer_name or affiliated_filer_ein:
- _checkbox(
- f"Affiliated Filer / Holding Company (Line 106.1): {affiliated_filer_name}",
- checked=bool(affiliated_filer_name),
- )
- _checkbox(
- f"Holding Company EIN (Line 106.2): {affiliated_filer_ein}",
- checked=bool(affiliated_filer_ein),
- )
- else:
- _checkbox(
- "Line 106: no affiliated filers (check \u201cno affiliates\u201d on form)",
- checked=True,
- )
-
- # Line 108 — management company (optional)
- _checkbox(
- f"Management Company (Line 108): {management_company_name or 'N/A'}",
- checked=True,
- )
-
- # Line 112 — trade names used in past 3 years
- if trade_names:
- _para("Trade Names (Line 112) used in past 3 years:", bold=True)
- for tn in trade_names:
- _checkbox(tn, checked=True)
- else:
- _checkbox("Trade Names (Line 112): none \u2014 confirm no prior names", checked=False)
- _spacer()
-
- # ── Section 2: Contacts, Agents & Officers (Block 2) ─────────
- _heading("2. Contacts, Agents and Officers (Block 2)")
-
- # 2-A Regulatory contact (Lines 203-206)
- _heading("2-A. Regulatory Contact (Lines 203\u2013206)", level=2)
- _para(
- "The person who completed the Worksheet. Will be the first point "
- "of contact for USAC or FCC inquiries. Defaults to Performance "
- "West Inc. when we prepare the filing on the carrier's behalf."
- )
- _checkbox(f"Name: {regulatory_contact_name}", checked=bool(regulatory_contact_name))
- _checkbox(f"Phone: {regulatory_contact_phone}", checked=bool(regulatory_contact_phone))
- _checkbox(f"Email: {regulatory_contact_email}", checked=bool(regulatory_contact_email))
-
- # Line 207 corporate office for future worksheets
- _heading("2-A continued. Corporate Office for Future Worksheets (Line 207)", level=2)
- ws_addr = ", ".join(filter(None, [
- worksheet_office_street, worksheet_office_city,
- f"{worksheet_office_state} {worksheet_office_zip}".strip(),
- ]))
- _checkbox(f"Attn: {worksheet_office_company}", checked=bool(worksheet_office_company))
- _checkbox(f"Address: {ws_addr}", checked=bool(ws_addr.strip(", ")))
-
- # Line 208 billing address + 208.1 ITSP regulatory fee email
- _heading("2-A continued. Billing Contact (Lines 208 and 208.1)", level=2)
- _para(
- "USAC sends USF contribution bills to this address. A separate "
- "ITSP regulatory fee email (Line 208.1) may differ from Line 208."
- )
- _checkbox(
- f"Billing contact name: {billing_contact_name or '_______________'}",
- checked=bool(billing_contact_name),
- )
- _checkbox(
- f"Billing contact email: {billing_contact_email or '_______________'}",
- checked=bool(billing_contact_email),
- )
- _checkbox(
- f"ITSP regulatory fee email (Line 208.1): {itsp_regulatory_fee_email or '(same as Line 208)'}",
- checked=True,
- )
- _spacer()
-
- # 2-B D.C. Agent for Service of Process (Lines 209-218)
- _heading("2-B. D.C. Agent for Service of Process (Lines 209\u2013213)", level=2)
- _para(
- "All carriers and VoIP providers must designate a D.C. agent for "
- "service of process \u2014 required under 47 U.S.C. \u00a7 413. "
- "Performance West provides this via Northwest Registered Agent."
- )
- dc_addr = ", ".join(filter(None, [
- dc_agent_street, dc_agent_city, f"{dc_agent_state} {dc_agent_zip}".strip(),
- ]))
- _checkbox(f"D.C. Agent Company: {dc_agent_company}", checked=True)
- _checkbox(f"D.C. Agent Address: {dc_addr}", checked=True)
- _checkbox(f"D.C. Agent Phone: {dc_agent_phone}", checked=True)
- _checkbox(f"D.C. Agent Email: {dc_agent_email}", checked=True)
- _info_box(
- "IMPORTANT: If the D.C. Agent contact information changes, you "
- "must notify USAC within ONE WEEK. Updates after filing go on a "
- "revised Block 2 (Line 612 \u201crevised filing with updated registration\u201d)."
- )
- _spacer()
-
- # 2-C Officers + jurisdictions + first service (Lines 221-228)
- _heading("2-C. FCC Registration Information (Lines 219\u2013228)", level=2)
- _para(
- "An \u201cofficer\u201d for purposes of this filing is an occupant "
- "of a position listed in the articles of incorporation, articles "
- "of formation, or other similar legal document. Officers on Lines "
- "221, 223, and 225 must be three DIFFERENT individuals."
- )
-
- for idx, (n, t, s, c, st, z) in enumerate([
- (officer_1_name, officer_1_title, officer_1_street, officer_1_city, officer_1_state, officer_1_zip),
- (officer_2_name, officer_2_title, officer_2_street, officer_2_city, officer_2_state, officer_2_zip),
- (officer_3_name, officer_3_title, officer_3_street, officer_3_city, officer_3_state, officer_3_zip),
- ], start=1):
- line = 221 + (idx - 1) * 2
- label = {1: "CEO / highest-ranking officer", 2: "Second-ranking officer",
- 3: "Third-ranking officer"}[idx]
- _para(f"Officer {idx} \u2014 {label} (Line {line})", bold=True)
- _checkbox(f"Name: {n or '_______________'}", checked=bool(n))
- if t:
- _checkbox(f"Title: {t}", checked=True)
- oaddr = ", ".join(filter(None, [s, c, f"{st} {z}".strip()]))
- _checkbox(
- f"Business address (Line {line+1}): {oaddr or 'same as Line 109'}",
- checked=bool(oaddr.strip(", ")),
- )
-
- # Line 227 — jurisdictions
- _para("Jurisdictions where service is/will be provided (Line 227):", bold=True)
- if jurisdictions_served:
- _checkbox(", ".join(sorted(jurisdictions_served)), checked=True)
- else:
- _checkbox("_________________ (multi-select on the E-File form)", checked=False)
-
- # Line 228 — first telecom service year/month
- _para("Year and month filer first provided service (Line 228):", bold=True)
- if first_telecom_service_pre_1999:
- _checkbox("Prior to 1/1/1999 (check pre-1999 box)", checked=True)
- elif first_telecom_service_year:
- mo = f"{first_telecom_service_month:02d}" if first_telecom_service_month else "__"
- _checkbox(f"{first_telecom_service_year}-{mo}", checked=True)
- else:
- _checkbox("YYYY-MM: ______________", checked=False)
- _spacer()
-
- # ── Section 3: Service Categories (Block 1 / Line 105) ───────
- _heading("3. Service Categories (Line 105)")
-
- _para(
- "Check all service categories that apply to your operations. "
- "These determine which revenue lines you must complete and which "
- "contribution mechanisms apply to you."
- )
-
- for slug, label in _CATEGORY_LABELS.items():
- _checkbox(label, checked=(slug in categories))
-
- _info_box(
- "NON-TELECOM REVENUE: Revenue from services that are not "
- "telecommunications or interconnected VoIP (e.g., information "
- "services, equipment sales, inside wiring, web hosting, managed "
- "IT services) should be EXCLUDED from Form 499-A reporting. Only "
- "report revenue from services classified as telecommunications "
- "under 47 U.S.C. \u00a7 153(50) or interconnected VoIP under "
- "47 C.F.R. \u00a7 9.3."
- )
- _spacer()
-
- # ── Section 3: Revenue Reporting (Blocks 3, 4-A, 4-B, 5) ─────
- _heading("4. Revenue Reporting (Blocks 3, 4-A, 4-B, 5)")
-
- rev_info = _REVENUE_LINES.get(infra_type, _REVENUE_LINES["facilities"])
- _para(rev_info["description"])
- _spacer()
-
- _para("Applicable revenue blocks:", bold=True)
- for block in rev_info["sections"]:
- _checkbox(block, checked=True)
- _spacer()
-
- # -- Revenue allocation guidance --
- _heading("4a. Revenue Allocation Methodology", level=2)
-
- _para(
- "Revenue must be allocated into three jurisdictional categories. "
- "The allocation method must be consistently applied and supportable."
- )
-
- _info_box(
- "REVENUE ALLOCATION: You must categorize all telecommunications "
- "revenue as interstate, intrastate, or international. Acceptable "
- "methods include: (1) traffic studies based on actual call records, "
- "(2) safe harbor percentages (for eligible VoIP providers), or "
- "(3) other reasonable and consistently applied methodologies. "
- "Document your allocation method \u2014 USAC may request supporting data."
- )
-
- _checkbox("Interstate revenue identified and allocated", checked=False)
- _checkbox("Intrastate revenue identified (informational only \u2014 "
- "not assessed for USF but must be reported)", checked=False)
- _checkbox("International revenue identified and allocated", checked=False)
- _spacer()
-
- # -- VoIP safe harbor --
- if uses_voip_safe_harbor or filer_type == "interconnected_voip":
- _heading("4b. VoIP Safe Harbor Election", level=2)
-
- if uses_voip_safe_harbor:
- _para(
- f"{CHECK_FILLED} VoIP Safe Harbor ELECTED \u2014 "
- f"{voip_safe_harbor_pct:.1f}% of VoIP revenue will be "
- f"treated as interstate/international and subject to USF "
- f"contribution.",
- bold=True,
- )
- else:
- _para(
- f"{CHECK_EMPTY} VoIP Safe Harbor NOT elected \u2014 a traffic "
- f"study or other allocation method will be used to determine "
- f"the interstate/international portion of VoIP revenue."
- )
-
- _info_box(
- f"SAFE HARBOR: Interconnected VoIP providers may elect to treat "
- f"{voip_safe_harbor_pct:.1f}% of their VoIP revenue as "
- f"interstate/international (the FCC safe harbor percentage) "
- f"instead of conducting a traffic study. This election is made "
- f"on Form 499-A and applies for the full reporting year. Once "
- f"elected, it cannot be changed mid-year."
- )
- _spacer()
-
- # -- Carrier's carrier revenue --
- _heading("4c. Carrier\u2019s Carrier Revenue (Block 3)", level=2)
- _para(
- "If you provide services to other contributing telecommunications "
- "carriers for resale (wholesale), report those revenues in Block 3 "
- "(Lines 301\u2013315). This includes revenues from interconnection, "
- "transport, termination, and other carrier-to-carrier services."
- )
- _checkbox("Carrier\u2019s carrier revenue identified (Block 3)", checked=False)
- _spacer()
-
- # -- UNE revenue --
- if "une" in categories or infra_type in ("facilities", "both"):
- _heading("4d. Unbundled Network Element (UNE) Revenue", level=2)
- _para(
- "Revenue from the sale of unbundled network elements to other "
- "contributing carriers is reported in Block 3 (Lines 303.1 and "
- "304.2). UNE-Platform (UNE-P) combinations that constitute "
- "resale are also Block 3 entries."
- )
- _checkbox("UNE revenue identified and categorized", checked=False)
- _spacer()
-
- # -- Revenue deductions --
- _heading("4e. Revenue Deductions", level=2)
-
- _para("The following deductions may be applied to reduce assessable revenue:")
-
- # Uncollectibles / bad debt
- if uncollectible_revenue_cents > 0:
- _checkbox(
- f"Uncollectible Revenue / Bad Debt Deduction: "
- f"{_fmt_dollars(uncollectible_revenue_cents)}",
- checked=True,
- )
- else:
- _checkbox(
- "Uncollectible Revenue / Bad Debt Deduction: $_______",
- checked=False,
- )
- _info_box(
- "UNCOLLECTIBLES: You may deduct revenue that has been billed but "
- "determined to be uncollectible (bad debt). This must be based on "
- "actual write-offs, not estimates. Report the amount on the "
- "applicable deduction line. Previously deducted amounts that are "
- "later collected must be added back in the year of collection."
- )
-
- # Resold service costs
- if resold_service_costs_cents > 0:
- _checkbox(
- f"Resold Service Cost Deduction: "
- f"{_fmt_dollars(resold_service_costs_cents)}",
- checked=True,
- )
- else:
- _checkbox(
- "Resold Service Cost Deduction: $_______",
- checked=False,
- )
- _info_box(
- "RESOLD SERVICES: If you resell another carrier\u2019s services, "
- "you may deduct the amounts paid to the underlying carrier for "
- "those services to avoid double-assessment. The upstream carrier "
- "is responsible for USF contributions on that revenue. Retain "
- "invoices from your upstream provider as supporting documentation."
- )
- _spacer()
-
- # -- Revenue summary table (if data provided) --
- if total_revenue_cents > 0:
- _heading("4f. Revenue Summary (Prior Year Data)", level=2)
-
- interstate_cents = int(total_revenue_cents * interstate_pct / 100)
- international_cents = int(total_revenue_cents * international_pct / 100)
- intrastate_pct = max(0, 100.0 - interstate_pct - international_pct)
- intrastate_cents = int(total_revenue_cents * intrastate_pct / 100)
-
- gross_assessable = interstate_cents + international_cents
- net_assessable = max(
- 0,
- gross_assessable - uncollectible_revenue_cents - resold_service_costs_cents,
- )
-
- rev_rows = [
- ["Total Reported Revenue", "100.0%", _fmt_dollars(total_revenue_cents)],
- ["Interstate Revenue", f"{interstate_pct:.1f}%", _fmt_dollars(interstate_cents)],
- ["International Revenue", f"{international_pct:.1f}%", _fmt_dollars(international_cents)],
- ["Intrastate Revenue (informational)", f"{intrastate_pct:.1f}%", _fmt_dollars(intrastate_cents)],
- ["", "", ""],
- ["Gross Assessable (Interstate + Int'l)", "", _fmt_dollars(gross_assessable)],
- ]
- if uncollectible_revenue_cents > 0:
- rev_rows.append(
- ["Less: Uncollectibles", "", f"({_fmt_dollars(uncollectible_revenue_cents)})"]
- )
- if resold_service_costs_cents > 0:
- rev_rows.append(
- ["Less: Resold Service Costs", "", f"({_fmt_dollars(resold_service_costs_cents)})"]
- )
- rev_rows.append(["Net Assessable Revenue", "", _fmt_dollars(net_assessable)])
-
- _add_table(
- ["Description", "Percentage", "Amount"],
- rev_rows,
- col_widths=[3.2, 1.3, 2.0],
- )
-
- if last_filing_year:
- _para(
- f"Based on data from filing year {last_filing_year}.",
- size=8,
- italic=True,
- color=MEDIUM_GRAY,
- )
- _spacer()
-
- # ── Section 4: USF Contribution Calculation ──────────────────
- _heading("5. USF Contribution Calculation")
-
- if contribution_factor_pct > 0:
- _para(
- f"Current USF Contribution Factor: {contribution_factor_pct:.1f}%",
- bold=True,
- )
- _para(
- "The contribution factor is set quarterly by the FCC and applied "
- "to your net assessable interstate and international end-user "
- "telecommunications revenue to determine your USF contribution "
- "obligation."
- )
-
- if total_revenue_cents > 0:
- interstate_cents = int(total_revenue_cents * interstate_pct / 100)
- international_cents = int(total_revenue_cents * international_pct / 100)
- gross_assessable = interstate_cents + international_cents
- net_assessable = max(
- 0,
- gross_assessable
- - uncollectible_revenue_cents
- - resold_service_costs_cents,
- )
- estimated_contribution = int(
- net_assessable * contribution_factor_pct / 100
- )
-
- calc_rows = [
- ["Net Assessable Revenue", _fmt_dollars(net_assessable)],
- [
- f"Contribution Factor",
- f"\u00d7 {contribution_factor_pct:.1f}%",
- ],
- [
- "Estimated Quarterly USF Contribution",
- _fmt_dollars(estimated_contribution),
- ],
- ]
- _add_table(
- ["Component", "Value"],
- calc_rows,
- col_widths=[3.5, 3.0],
- )
- _para(
- "Note: This is an estimate based on prior-year revenue and the "
- "current contribution factor. Actual contributions are calculated "
- "quarterly on Form 499-Q using projected revenues.",
- size=8,
- italic=True,
- color=MEDIUM_GRAY,
- )
- else:
- _para(
- "The USF contribution factor was not provided. The factor is set "
- "quarterly by the FCC and published in FCC Public Notices. Apply "
- "the current factor to your net assessable interstate and "
- "international end-user revenue to estimate your contribution."
- )
-
- _info_box(
- "PASS-THROUGH SURCHARGES: Carriers may (but are not required to) "
- "recover USF contribution costs from end-user customers via a "
- "line-item surcharge on customer bills. If you pass through the "
- "USF charge, it must be labeled clearly (e.g., \u201cFederal Universal "
- "Service Fund\u201d or \u201cUSF Surcharge\u201d). The pass-through amount is "
- "not itself assessable revenue."
- )
- _spacer()
-
- # ── Section 5: De Minimis / LIRE Classification ──────────────
- _heading("6. De Minimis / LIRE Classification")
-
- # De Minimis
- _para("De Minimis Carrier Determination:", bold=True)
- if is_deminimis:
- _para(
- f"{CHECK_FILLED} De Minimis: YES \u2014 Your combined interstate "
- f"and international end-user telecommunications revenues are "
- f"below the $10,000 threshold. You are required to file Form "
- f"499-A annually but are EXEMPT from quarterly Form 499-Q "
- f"filings and USF contribution payments.",
- bold=True,
- )
- else:
- _para(
- f"{CHECK_EMPTY} De Minimis: NO \u2014 You must file both "
- f"Form 499-A (annual) and Form 499-Q (quarterly) and make "
- f"quarterly USF contribution payments."
- )
-
- _info_box(
- f"DE MINIMIS THRESHOLD: A carrier qualifies as de minimis if its "
- f"combined interstate and international end-user telecommunications "
- f"revenue is less than $10,000 for the reporting year. De minimis "
- f"carriers must still file Form 499-A but are exempt from 499-Q "
- f"filings and contribution obligations."
- )
- _spacer()
-
- # LIRE
- _para("Limited International Revenue Entity (LIRE) Determination:", bold=True)
- if is_lire:
- _para(
- f"{CHECK_FILLED} LIRE: YES \u2014 Your international revenue is "
- f"less than {LIRE_THRESHOLD_PCT:.0f}% of total end-user "
- f"telecommunications revenue. Simplified international revenue "
- f"reporting applies.",
- bold=True,
- )
- else:
- _para(
- f"{CHECK_EMPTY} LIRE: NO \u2014 Your international revenue "
- f"equals or exceeds {LIRE_THRESHOLD_PCT:.0f}% of total end-user "
- f"telecommunications revenue. Full international revenue detail "
- f"is required."
- )
-
- _info_box(
- f"LIRE THRESHOLD: An entity qualifies as a Limited International "
- f"Revenue Entity if its international end-user telecommunications "
- f"revenue is less than {LIRE_THRESHOLD_PCT:.0f}% of its total "
- f"end-user telecommunications revenue. LIRE entities receive "
- f"simplified reporting for international revenue categories."
- )
- _spacer()
-
- # ── Section 6: Filing Obligations Summary ────────────────────
- _heading("7. Filing Obligations Summary")
-
- _para(
- "Form 499-A and Form 499-Q are related filings. The 499-A reports "
- "actual prior-year revenue, while the 499-Q projects current-quarter "
- "revenue for contribution calculation purposes.",
- size=9,
- color=MEDIUM_GRAY,
- )
- _spacer()
-
- _para("Annual Filing:", bold=True)
- _checkbox(
- f"Form 499-A (Annual Revenue Report) \u2014 Due April 1, {filing_year}",
- checked=True,
- )
- _para(
- " Reports actual telecommunications revenue for the prior "
- "calendar year. Used to true-up contributions.",
- size=9,
- color=MEDIUM_GRAY,
- )
- _spacer()
-
- _para("Quarterly Filings:", bold=True)
- _checkbox(
- f"Form 499-Q (Quarterly Revenue Projection) \u2014 "
- f"Due Feb 1, May 1, Aug 1, Nov 1",
- checked=(not is_deminimis),
- )
- _para(
- " Projects current-quarter revenue to calculate quarterly USF "
- "contribution payments. Based on projected (not actual) revenue.",
- size=9,
- color=MEDIUM_GRAY,
- )
-
- _info_box(
- "499-A vs 499-Q RELATIONSHIP: The 499-A is an annual report of "
- "actual revenue from the prior calendar year. The 499-Q is a "
- "quarterly projection of current revenue used to calculate interim "
- "USF contributions. When the 499-A is filed, USAC compares actual "
- "revenue to projected revenue and calculates a true-up adjustment "
- "(credit or additional payment)."
- )
- _spacer()
-
- if not is_deminimis:
- quarterly_rows = [
- ["Q1 (Jan\u2013Mar)", f"February 1, {filing_year}"],
- ["Q2 (Apr\u2013Jun)", f"May 1, {filing_year}"],
- ["Q3 (Jul\u2013Sep)", f"August 1, {filing_year}"],
- ["Q4 (Oct\u2013Dec)", f"November 1, {filing_year}"],
- ]
- _add_table(
- ["Quarter", "499-Q Due Date"],
- quarterly_rows,
- col_widths=[3.0, 3.5],
- )
- _spacer()
-
- if last_filing_year and last_filing_year < filing_year - 1:
- _para(
- f"\u26a0 WARNING: Last filing year on record is {last_filing_year}. "
- f"You may have missed filings for intervening years. Contact USAC "
- f"to determine if back-filings are required.",
- bold=True,
- color=RGBColor(0xB7, 0x1C, 0x1C),
- )
- _spacer()
-
- # ── Section 8: Alternative Billing Arrangements (Page 9) ─────
- _heading("8. Alternative Billing Arrangements (Page 9 Worksheet)")
-
- _para(
- "Use the Alternative Billing Arrangements Worksheet (Page 9 of "
- "Form 499-A) if any of the four contribution programs \u2014 TRS, "
- "NANP, LNP, or the FCC ITSP regulatory fee \u2014 should bill a "
- "different contact or address than the one on Line 208. Programs "
- "left blank on the worksheet default to Line 208."
- )
-
- def _alt_block(label: str, program_abbr: str, data: dict | None) -> None:
- _heading(f"8.{program_abbr} {label}", level=2)
- if not data:
- _checkbox(
- "Use Line 208 default (no separate billing contact for this program)",
- checked=True,
- )
- return
- for field_label, key in [
- ("First name", "first_name"), ("Last name", "last_name"),
- ("Phone", "phone"), ("Extension", "phone_ext"),
- ("Fax", "fax"), ("Email", "email"),
- ("Address line 1", "address_1"), ("Address line 2", "address_2"),
- ("City", "city"), ("State", "state"), ("ZIP", "zip"),
- ]:
- val = (data or {}).get(key, "")
- _checkbox(
- f"{field_label}: {val or '_______________'}",
- checked=bool(val),
- )
-
- if use_alt_billing:
- _info_box(
- "You have elected alternative billing arrangements for at least "
- "one program. Complete the fields below for each program that "
- "differs from Line 208. Missing data defaults to Line 208."
- )
- _alt_block("TRS (Telecommunications Relay Services)", "TRS", alt_billing_trs)
- _alt_block("NANP (North American Numbering Plan)", "NANP", alt_billing_nanp)
- _alt_block("LNP (Local Number Portability)", "LNP", alt_billing_lnp)
- _alt_block("FCC ITSP Regulatory Fees", "FCC", alt_billing_fcc)
- else:
- _checkbox(
- "Alt billing NOT needed \u2014 all programs use the Line 208 contact",
- checked=True,
- )
- _spacer()
-
- # ── Section 9: Documents to Gather ───────────────────────────
- _heading("9. Documents to Gather Before Filing")
-
- _para(
- "Collect the following documents and data aligned to the 499-A "
- "line items before beginning your filing.",
- size=9,
- color=MEDIUM_GRAY,
- )
- _spacer()
-
- _para("Identity and Registration:", bold=True)
- _checkbox("FCC Registration Number (FRN) confirmation from CORES")
- _checkbox("499 Filer ID from prior year filing or USAC assignment letter")
- _checkbox("USAC E-File portal login credentials")
- _checkbox("Current FCC licenses and authorizations")
- _spacer()
-
- _para("Revenue Documentation (Lines 301\u2013509):", bold=True)
- _checkbox("General ledger / revenue reports for the reporting year")
- _checkbox("Revenue breakdown: interstate, intrastate, international")
- _checkbox("End-user revenue detail by service category (Lines 301\u2013309)")
- _checkbox("Carrier\u2019s carrier revenue detail (Lines 401\u2013409)")
- if infra_type in ("reseller", "both"):
- _checkbox("Resale revenue detail (Lines 501\u2013509)")
- _checkbox("Upstream provider invoices for resold service cost deduction")
- _checkbox("Revenue from non-telecommunications services (to exclude)")
- _checkbox("Bad debt / uncollectible accounts write-off records")
- _spacer()
-
- _para("Allocation and Classification:", bold=True)
- _checkbox("Traffic study or jurisdictional allocation methodology documentation")
- if uses_voip_safe_harbor:
- _checkbox(
- f"VoIP safe harbor election documentation "
- f"({voip_safe_harbor_pct:.1f}% interstate)",
- checked=True,
- )
- _checkbox("Service category classification for each revenue stream")
- if "une" in categories or infra_type in ("facilities", "both"):
- _checkbox("UNE revenue records and categorization")
- _spacer()
-
- _para("Prior Filings and Supporting Data:", bold=True)
- _checkbox("Prior year Form 499-A (for comparison and consistency)")
- _checkbox("Prior year Form 499-Q filings (all four quarters)")
- _checkbox("USAC true-up notices or correspondence")
- _checkbox("State PUC/PSC certificates (if CLEC or state-regulated)")
- _spacer()
-
- _para("Interconnection and Wholesale:", bold=True)
- _checkbox("Interconnection agreements (if facilities-based)")
- _checkbox("Wholesale billing statements and settlement records")
- if "international" in " ".join(categories) or international_pct > 0:
- _checkbox("International revenue breakdown by country/route")
- _checkbox("International settlement records")
- _spacer()
-
- # ── Section 8: Key Deadlines ─────────────────────────────────
- _heading("10. Key Deadlines")
-
- deadline_rows = [
- ["Form 499-A (Annual)", f"April 1, {filing_year}", "Annual actual revenue report"],
- ]
- if not is_deminimis:
- deadline_rows.extend([
- ["Form 499-Q \u2014 Q1", f"February 1, {filing_year}", "Quarterly revenue projection"],
- ["Form 499-Q \u2014 Q2", f"May 1, {filing_year}", "Quarterly revenue projection"],
- ["Form 499-Q \u2014 Q3", f"August 1, {filing_year}", "Quarterly revenue projection"],
- ["Form 499-Q \u2014 Q4", f"November 1, {filing_year}", "Quarterly revenue projection"],
- ])
-
- _add_table(
- ["Filing", "Due Date", "Description"],
- deadline_rows,
- col_widths=[2.2, 2.0, 2.3],
- )
- _spacer()
-
- _para(
- "Late filing penalties: Up to $100,000 per day per violation "
- "under 47 U.S.C. \u00a7 503(b). Additional enforcement actions may "
- "include license revocation or Red Light holds.",
- bold=True,
- size=9,
- )
- _spacer()
-
- # ── Section 9: Important Notes ───────────────────────────────
- _heading("11. Important Notes")
-
- _para("Electronic Filing Requirement:", bold=True)
- _para(
- "Form 499-A must be filed electronically through the USAC E-File "
- "system at https://forms.universalservice.org. Paper filings are "
- "not accepted. If you do not have E-File credentials, register at "
- "the USAC website well in advance of the filing deadline.",
- size=9,
- )
- _spacer()
-
- _para("Red Light Rule (47 C.F.R. \u00a7 1.1910):", bold=True)
- _para(
- "Entities with delinquent debts owed to the FCC will be placed "
- "on \u201cRed Light\u201d status. While on Red Light, the entity cannot "
- "receive new or modified authorizations, licenses, or other "
- "benefits from the FCC. Outstanding debts must be paid or a "
- "payment plan must be established to remove Red Light status.",
- size=9,
- )
- _spacer()
-
- _para("Pass-Through Surcharges:", bold=True)
- _para(
- "Carriers may recover their USF contribution costs by adding a "
- "line-item surcharge to customer bills. This surcharge must be "
- "clearly labeled (e.g., \u201cFederal Universal Service Fund\u201d). "
- "The surcharge amount collected from customers is not itself "
- "assessable revenue for USF purposes. Carriers may not charge "
- "customers more than the actual USF contribution amount.",
- size=9,
- )
- _spacer()
-
- _para("Non-Telecommunications Revenue:", bold=True)
- _para(
- "Revenue from services that do not constitute telecommunications "
- "or interconnected VoIP must be excluded from Form 499-A. This "
- "includes: information services, equipment sales and leases, "
- "inside wiring installation and maintenance, web hosting, managed "
- "IT services, dark fiber leases, and directory advertising. Maintain "
- "clear records separating telecom from non-telecom revenue.",
- size=9,
- )
- _spacer()
-
- if contribution_factor_pct > 0:
- _para("USF Contribution Factor:", bold=True)
- _para(
- f"The current USF contribution factor is "
- f"{contribution_factor_pct:.1f}%. This factor is updated "
- f"quarterly by the FCC based on projected USF demand and "
- f"projected industry revenue. The factor for each quarter "
- f"is announced via FCC Public Notice approximately one month "
- f"before the quarter begins. Monitor FCC Public Notices for "
- f"factor updates.",
- size=9,
- )
- _spacer()
-
- # ── Footer / Disclaimer ──────────────────────────────────────
- # Divider line
- divider_p = doc.add_paragraph()
- divider_p.paragraph_format.space_before = Pt(12)
- divider_p.paragraph_format.space_after = Pt(4)
- dr = divider_p.add_run("\u2500" * 70)
- dr.font.size = Pt(6)
- dr.font.color.rgb = MEDIUM_GRAY
-
- _para(
- "This checklist was prepared by Performance West Inc. for "
- "informational purposes only. It does not constitute legal or "
- "regulatory compliance advice. Consult directly with USAC and "
- "the FCC for authoritative filing guidance. Filing requirements "
- "may change; verify current rules at https://www.usac.org and "
- "https://www.fcc.gov before filing.",
- size=8,
- italic=True,
- color=MEDIUM_GRAY,
- )
-
- # Save
- output = Path(output_path)
- output.parent.mkdir(parents=True, exist_ok=True)
- doc.save(str(output))
- LOG.info("499-A checklist generated: %s", output)
- return str(output)
diff --git a/scripts/workers/services/form_499a.py b/scripts/workers/services/form_499a.py
index 9a44470..20226c6 100644
--- a/scripts/workers/services/form_499a.py
+++ b/scripts/workers/services/form_499a.py
@@ -387,38 +387,6 @@ class Form499AHandler(BaseServiceHandler):
) -> list[str]:
generated: list[str] = []
- from scripts.document_gen.templates.fcc_499a_checklist_generator import (
- generate_499a_checklist,
- )
- checklist_docx = os.path.join(
- work_dir, f"fcc_499a_checklist_{order_number}_{date_str}.docx",
- )
- checklist = generate_499a_checklist(
- entity_name=entity.get("legal_name", ""),
- frn=entity.get("frn", ""),
- filer_id_499=entity.get("filer_id_499", ""),
- address_street=entity.get("address_street", ""),
- address_city=entity.get("address_city", ""),
- address_state=entity.get("address_state", ""),
- address_zip=entity.get("address_zip", ""),
- filer_type=entity.get("carrier_category", "interconnected_voip"),
- infra_type=entity.get("infra_type", "facilities"),
- service_categories=entity.get("service_categories", []) or [],
- is_deminimis=entity.get("is_deminimis", False),
- is_lire=entity.get("is_lire", False),
- total_revenue_cents=entity.get("total_revenue_cents", 0),
- interstate_pct=entity.get("interstate_pct", 0),
- international_pct=entity.get("international_pct", 0),
- last_filing_year=entity.get("last_filing_year", 0),
- output_path=checklist_docx,
- )
- if checklist:
- generated.append(checklist)
- try:
- generated.append(self._convert_to_pdf(checklist))
- except Exception as exc:
- logger.warning("499-A checklist PDF conversion failed: %s", exc)
-
# Skip revenue workbook for zero-revenue filings
if order_data.get("service_slug") != "fcc-499a-zero":
try: