feat(sc-coc): SCDMV Certificate of Compliance PDF filler + correct $25 state fee

SC for-hire PROPERTY carriers (not passenger/HHG/hazwaste) register intrastate
via the SCDMV Certificate of Compliance (COC), not a PSC certificate. This adds:
  - sc_coc_pdf_filler.fill_sc_coc(): fills the official SCDMV Form COC from
    intake (business name, officers, physical/mailing address, phone), picks
    New vs Renewal, and stamps the coverage class (E-L low-value / E-LC).
    Field names in the source PDF are auto-generated + offset from their labels;
    mapped here by verified on-page geometry. Verified by render.
  - suggest_coverage_class(): E-L for low-value cargo (scrap/dump/aggregate),
    else E-LC (safer default).
  - gov_fee: SC intrastate fee corrected from $0 placeholder to the real $25
    COC new-application fee (renewals $0), billed at cost.

The carrier's INSURER files the Form E (liability) + Form H (cargo, E-LC only)
directly with SCDMV; we collect the COC app + $25 and submit it.
This commit is contained in:
justin 2026-06-16 09:08:50 -05:00
parent 01b3e1d234
commit ad590aab7c
3 changed files with 189 additions and 1 deletions

View file

@ -43,8 +43,14 @@ IFTA_DECAL_FEE_PER_UNIT_CENTS = int(os.getenv("IFTA_DECAL_FEE_PER_UNIT_CENTS", "
# Intrastate authority: state filing fee, fixed per state. Conservative
# defaults; refine per state as we confirm exact amounts. Cents.
#
# SC: for-hire PROPERTY carriers (not passenger/HHG/hazwaste) register intrastate
# via the SCDMV Certificate of Compliance (COC), $25 new application / $0 renewal.
# The carrier's INSURER files a Form E (liability) and, for class E-LC, a Form H
# (cargo) directly with SCDMV. The COC class (E-L low-value vs E-LC) is what the
# state fee attaches to, so we collect the exact $25 at cost once class is set.
INTRASTATE_AUTHORITY_FEE_CENTS = {
"SC": 0, # SC intrastate handled via federal authority; nominal/none
"SC": 2500, # SCDMV COC new-application fee ($25); renewals are $0
"TX": 10000, # TxDMV intrastate
"CA": 0, # MCP handled separately
"FL": 5000,