new-carrier wizard: flag corp-favorable states (CA/TN/NY) in the entity step

When forming or operating in CA (gross-receipts fee >$250k), TN ($300 vs $20
report), or NY (LLC publication + filing fee), show an advisory with the reason
and a one-click 'Use a corporation'. Keyed off wiz.entityState/baseState.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-05-31 01:47:42 -05:00
parent ffe6f34bc8
commit d85fdd36d9

View file

@ -365,6 +365,20 @@ Sign out
</div>
</div>
<div class="q-block" id="entity-corp-flag" style="display:none">
<div style="background:#fffbeb;border:2px solid #fbbf24;border-radius:10px;padding:16px">
<div style="display:flex;gap:10px;align-items:flex-start">
<span style="font-size:18px;line-height:1.2">&#9888;&#65039;</span>
<div style="flex:1">
<div class="flag-lead" style="font-size:14px;font-weight:700;color:#92400e;margin-bottom:4px"></div>
<div class="flag-reason" style="font-size:13px;color:#78350f;line-height:1.6"></div>
<button type="button" id="flag-pick-corp" style="margin-top:10px;padding:8px 16px;background:#16a34a;color:#fff;font-weight:700;border:none;border-radius:8px;font-size:13px;cursor:pointer">Use a corporation</button>
<p style="font-size:11px;color:#a16207;margin:8px 0 0">Not tax advice - we'll confirm the best fit with you before filing.</p>
</div>
</div>
</div>
</div>
<div class="q-block">
<p class="q-label">Entity type</p>
<div class="q-grid" id="q-entity-type">
@ -685,6 +699,7 @@ document.getElementById("q-cargo").addEventListener("change", function(e) {
document.getElementById("q-base-state").addEventListener("change", function() {
wiz.baseState = this.value || null;
updateOperatingStates();
if (typeof updateEntityFlag === "function") updateEntityFlag();
validateStep0();
});
@ -748,6 +763,7 @@ document.getElementById("q-has-entity").addEventListener("click", function(e) {
selectEntityStrategy("home");
}
}
updateEntityFlag();
validateStep1();
});
@ -760,9 +776,43 @@ function selectEntityStrategy(val) {
document.querySelectorAll("#entity-new .entity-opt").forEach(function(o) { o.classList.remove("selected"); });
document.getElementById("entity-opt-" + (val === "wyoming" ? "wy" : "home")).classList.add("selected");
wiz.entityState = val === "wyoming" ? "WY" : wiz.baseState;
updateEntityFlag();
validateStep1();
}
// States where a corporation is concretely more favorable than an LLC (verified).
var CORP_FAVOR = {
CA: { name: "California", reason: "California charges LLCs an extra gross-receipts fee of $900 to $11,790 per year once your California income passes $250,000 - a fee corporations don't pay. Most active trucks gross over $250k, so a corporation is often the cheaper structure here." },
TN: { name: "Tennessee", reason: "Tennessee's LLC annual report fee is $300/yr (up to $3,000), versus just $20 for a corporation. A corporation is far cheaper to keep in good standing here." },
NY: { name: "New York", reason: "New York makes LLCs (not corporations) publish formation notices in two newspapers - often $600 to $2,000+ in NYC - plus pay a yearly LLC filing fee. A corporation skips both." }
};
function updateEntityFlag() {
var box = document.getElementById("entity-corp-flag");
if (!box) return;
if (wiz.hasEntity !== "no") { box.style.display = "none"; return; }
var formSt = wiz.entityState, baseSt = wiz.baseState;
var hit = null, via = null;
["CA", "TN", "NY"].forEach(function(s) {
if (hit) return;
if (formSt === s) { hit = s; via = "form"; }
else if (baseSt === s) { hit = s; via = "operate"; }
});
if (!hit) { box.style.display = "none"; return; }
var info = CORP_FAVOR[hit];
box.querySelector(".flag-lead").textContent =
(via === "form" ? "Forming in " : "Operating in ") + info.name + "? Consider a corporation.";
box.querySelector(".flag-reason").textContent = info.reason +
(via === "operate" ? " Even with a Wyoming LLC, " + info.name + " applies this to any LLC registered to do business there." : "");
box.style.display = "block";
}
document.getElementById("flag-pick-corp").addEventListener("click", function() {
var corpBtn = document.querySelector('#q-entity-type .btn-opt[data-val="corp"]');
if (corpBtn) corpBtn.click();
this.textContent = "Corporation selected";
});
// Entity type buttons
document.getElementById("q-entity-type").addEventListener("click", function(e) {
var btn = e.target.closest(".btn-opt");