@paro.io/expert-shared-components 1.14.79 → 1.14.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/tax-axis/components/intake/TaxAxisIntake.js +49 -3
- package/lib/tax-axis/components/intake/intakeSchema.d.ts +4 -0
- package/lib/tax-axis/components/intake/intakeSchema.js +114 -2
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.d.ts +23 -0
- package/lib/tax-axis/components/prospectReport/TaxAxisProspectReport.js +29 -3
- package/lib/tax-axis/lib/data/sidebarLookup.js +2 -2
- package/lib/tax-axis/lib/documentFieldCatalog.d.ts +10 -5
- package/lib/tax-axis/lib/documentFieldCatalog.js +321 -156
- package/package.json +1 -1
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
26
|
exports.TaxAxisIntake = TaxAxisIntake;
|
|
7
|
-
const react_1 =
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
8
28
|
const react_hook_form_1 = require("react-hook-form");
|
|
9
29
|
const yup_1 = require("@hookform/resolvers/yup");
|
|
10
30
|
const intakeSchema_1 = require("./intakeSchema");
|
|
@@ -13,6 +33,10 @@ const RefineAnalysisSection_1 = require("./RefineAnalysisSection");
|
|
|
13
33
|
const CpaIntakeQuestionsSection_1 = require("./CpaIntakeQuestionsSection");
|
|
14
34
|
const StrategyRadar_1 = require("./StrategyRadar");
|
|
15
35
|
const IntakeCtaCards_1 = require("./IntakeCtaCards");
|
|
36
|
+
/* Dev-only scenario selector: visible on localhost and parodev hostnames */
|
|
37
|
+
const isDev = typeof window !== "undefined" &&
|
|
38
|
+
(window.location.hostname === "localhost" ||
|
|
39
|
+
window.location.hostname.includes("parodev"));
|
|
16
40
|
function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, initialProfile, }) {
|
|
17
41
|
const methods = (0, react_hook_form_1.useForm)({
|
|
18
42
|
resolver: (0, yup_1.yupResolver)(intakeSchema_1.intakeSchema), // yupResolver generic incompatibility with RHF v7 — cast is intentional
|
|
@@ -20,6 +44,19 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
|
|
|
20
44
|
mode: "onChange",
|
|
21
45
|
});
|
|
22
46
|
const profile = methods.watch();
|
|
47
|
+
const [selectedScenario, setSelectedScenario] = (0, react_1.useState)("");
|
|
48
|
+
const handleLoadScenario = (key) => {
|
|
49
|
+
setSelectedScenario(key);
|
|
50
|
+
if (!key) {
|
|
51
|
+
// "Clear form" — reset to blank defaults
|
|
52
|
+
methods.reset(Object.assign(Object.assign({}, intakeSchema_1.intakeDefaultValues), initialProfile));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const scenario = intakeSchema_1.TEST_SCENARIOS[key];
|
|
56
|
+
if (scenario) {
|
|
57
|
+
methods.reset(Object.assign(Object.assign({}, intakeSchema_1.intakeDefaultValues), scenario.values));
|
|
58
|
+
}
|
|
59
|
+
};
|
|
23
60
|
const handleProspect = () => {
|
|
24
61
|
methods.handleSubmit((valid) => onProspect(valid), () => { })();
|
|
25
62
|
};
|
|
@@ -27,6 +64,15 @@ function TaxAxisIntake({ userContext = "expert", onProspect, onFullAnalysis, ini
|
|
|
27
64
|
methods.handleSubmit((valid) => onFullAnalysis(valid), () => { })();
|
|
28
65
|
};
|
|
29
66
|
return (react_1.default.createElement(react_hook_form_1.FormProvider, Object.assign({}, methods),
|
|
67
|
+
isDev && (react_1.default.createElement("div", { className: "mb-4 rounded-lg border border-amber-500/40 bg-amber-950/30 p-3" },
|
|
68
|
+
react_1.default.createElement("label", { className: "block text-[11px] font-semibold tracking-wide text-amber-400 mb-1" }, "DEV: Load Test Scenario"),
|
|
69
|
+
react_1.default.createElement("div", { className: "relative" },
|
|
70
|
+
react_1.default.createElement("select", { value: selectedScenario, onChange: (e) => handleLoadScenario(e.target.value), className: "w-full appearance-none rounded-md border border-amber-500/30 bg-tax-axis-surface px-3 py-2 pr-8 text-sm text-white focus:border-amber-400 focus:outline-none focus:ring-1 focus:ring-amber-400/50" },
|
|
71
|
+
react_1.default.createElement("option", { value: "" }, "\u2014 Clear / blank form \u2014"),
|
|
72
|
+
Object.entries(intakeSchema_1.TEST_SCENARIOS).map(([key, { label }]) => (react_1.default.createElement("option", { key: key, value: key }, label)))),
|
|
73
|
+
react_1.default.createElement("svg", { className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-amber-400/60", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
74
|
+
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))),
|
|
75
|
+
react_1.default.createElement("p", { className: "mt-1.5 text-[10px] text-amber-400/50" }, "Pre-fills all fields for testing. Not visible in production."))),
|
|
30
76
|
react_1.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-5" },
|
|
31
77
|
react_1.default.createElement("div", { className: "flex flex-col gap-4" },
|
|
32
78
|
react_1.default.createElement(ClientParametersSection_1.ClientParametersSection, { userContext: userContext }),
|
|
@@ -148,4 +148,8 @@ export declare const intakeSchema: Yup.ObjectSchema<import("yup/lib/object").Ass
|
|
|
148
148
|
familyEmployed: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
149
149
|
period: Yup.StringSchema<string, import("yup/lib/types").AnyObject, string>;
|
|
150
150
|
}>>>;
|
|
151
|
+
export declare const TEST_SCENARIOS: Record<string, {
|
|
152
|
+
label: string;
|
|
153
|
+
values: Partial<ClientProfile>;
|
|
154
|
+
}>;
|
|
151
155
|
export declare const intakeDefaultValues: Partial<ClientProfile>;
|
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.intakeDefaultValues = exports.intakeSchema = void 0;
|
|
26
|
+
exports.intakeDefaultValues = exports.TEST_SCENARIOS = exports.intakeSchema = void 0;
|
|
27
27
|
const Yup = __importStar(require("yup"));
|
|
28
28
|
exports.intakeSchema = Yup.object().shape({
|
|
29
29
|
bizName: Yup.string().required("Business name required").ensure(),
|
|
@@ -138,4 +138,116 @@ const _BLACKRIDGE_FIXTURE = {
|
|
|
138
138
|
familyEmployed: "No",
|
|
139
139
|
period: "Full Year",
|
|
140
140
|
};
|
|
141
|
-
|
|
141
|
+
/* ── Ironclad Systems, Inc. — C-Corp Test Fixture ── */
|
|
142
|
+
const _IRONCLAD_FIXTURE = {
|
|
143
|
+
bizName: "Ironclad Systems, Inc.",
|
|
144
|
+
cpaName: "Amar",
|
|
145
|
+
entity: "C-Corporation",
|
|
146
|
+
industry: "Technology",
|
|
147
|
+
revenue: "1850000",
|
|
148
|
+
netIncome: "420000",
|
|
149
|
+
ownerComp: "185000",
|
|
150
|
+
employees: "12",
|
|
151
|
+
year: "2023",
|
|
152
|
+
states: ["GA"],
|
|
153
|
+
filingStatus: "MFJ",
|
|
154
|
+
age: "48",
|
|
155
|
+
sstb: "No",
|
|
156
|
+
ownsRealEstate: "No",
|
|
157
|
+
itemizesDeductions: "No",
|
|
158
|
+
singleOwner: "Yes",
|
|
159
|
+
partners: [],
|
|
160
|
+
equipmentPurchased: "85000",
|
|
161
|
+
realEstateValue: "0",
|
|
162
|
+
capitalGains: "0",
|
|
163
|
+
federalRate: "21%",
|
|
164
|
+
stateRate: "5.39",
|
|
165
|
+
taxDataYears: "3 years",
|
|
166
|
+
riskTolerance: "3",
|
|
167
|
+
overtimePremium: "0",
|
|
168
|
+
tipIncomePct: "0",
|
|
169
|
+
retirementContributions: "0",
|
|
170
|
+
hdhpEnrolled: "No",
|
|
171
|
+
hsaContributions: "0",
|
|
172
|
+
wotcHires: "No",
|
|
173
|
+
familyEmployed: "No",
|
|
174
|
+
period: "Full Year",
|
|
175
|
+
};
|
|
176
|
+
/* ── Meridian Consulting Group, Inc. — S-Corp Test Fixture ── */
|
|
177
|
+
const _MERIDIAN_FIXTURE = {
|
|
178
|
+
bizName: "Meridian Consulting Group, Inc.",
|
|
179
|
+
cpaName: "Amar",
|
|
180
|
+
entity: "S-Corporation",
|
|
181
|
+
industry: "Professional Services",
|
|
182
|
+
revenue: "1240000",
|
|
183
|
+
netIncome: "310000",
|
|
184
|
+
ownerComp: "150000",
|
|
185
|
+
employees: "8",
|
|
186
|
+
year: "2023",
|
|
187
|
+
states: ["IL"],
|
|
188
|
+
filingStatus: "MFJ",
|
|
189
|
+
age: "52",
|
|
190
|
+
sstb: "Yes",
|
|
191
|
+
ownsRealEstate: "No",
|
|
192
|
+
itemizesDeductions: "No",
|
|
193
|
+
singleOwner: "Yes",
|
|
194
|
+
partners: [],
|
|
195
|
+
equipmentPurchased: "35000",
|
|
196
|
+
realEstateValue: "0",
|
|
197
|
+
capitalGains: "0",
|
|
198
|
+
federalRate: "32%",
|
|
199
|
+
stateRate: "4.95",
|
|
200
|
+
taxDataYears: "3 years",
|
|
201
|
+
riskTolerance: "3",
|
|
202
|
+
overtimePremium: "0",
|
|
203
|
+
tipIncomePct: "0",
|
|
204
|
+
retirementContributions: "0",
|
|
205
|
+
hdhpEnrolled: "No",
|
|
206
|
+
hsaContributions: "0",
|
|
207
|
+
wotcHires: "No",
|
|
208
|
+
familyEmployed: "No",
|
|
209
|
+
period: "Full Year",
|
|
210
|
+
};
|
|
211
|
+
/* ── Riverstone Creative Studio — Sole Prop Test Fixture ── */
|
|
212
|
+
const _RIVERSTONE_FIXTURE = {
|
|
213
|
+
bizName: "Riverstone Creative Studio",
|
|
214
|
+
cpaName: "Amar",
|
|
215
|
+
entity: "Sole Proprietor",
|
|
216
|
+
industry: "Professional Services",
|
|
217
|
+
revenue: "270400",
|
|
218
|
+
netIncome: "159457",
|
|
219
|
+
ownerComp: "0",
|
|
220
|
+
employees: "0",
|
|
221
|
+
year: "2023",
|
|
222
|
+
states: ["CO"],
|
|
223
|
+
filingStatus: "Single",
|
|
224
|
+
age: "38",
|
|
225
|
+
sstb: "No",
|
|
226
|
+
ownsRealEstate: "No",
|
|
227
|
+
itemizesDeductions: "No",
|
|
228
|
+
singleOwner: "Yes",
|
|
229
|
+
partners: [],
|
|
230
|
+
equipmentPurchased: "2900",
|
|
231
|
+
realEstateValue: "0",
|
|
232
|
+
capitalGains: "0",
|
|
233
|
+
federalRate: "24%",
|
|
234
|
+
stateRate: "4.40",
|
|
235
|
+
taxDataYears: "3 years",
|
|
236
|
+
riskTolerance: "3",
|
|
237
|
+
overtimePremium: "0",
|
|
238
|
+
tipIncomePct: "0",
|
|
239
|
+
retirementContributions: "0",
|
|
240
|
+
hdhpEnrolled: "No",
|
|
241
|
+
hsaContributions: "0",
|
|
242
|
+
wotcHires: "No",
|
|
243
|
+
familyEmployed: "No",
|
|
244
|
+
period: "Full Year",
|
|
245
|
+
};
|
|
246
|
+
exports.TEST_SCENARIOS = {
|
|
247
|
+
blackridge: { label: "Blackridge (Partnership, TX+CA)", values: _BLACKRIDGE_FIXTURE },
|
|
248
|
+
ironclad: { label: "Ironclad (C-Corp, GA)", values: _IRONCLAD_FIXTURE },
|
|
249
|
+
meridian: { label: "Meridian (S-Corp, IL)", values: _MERIDIAN_FIXTURE },
|
|
250
|
+
riverstone: { label: "Riverstone (Sole Prop, CO)", values: _RIVERSTONE_FIXTURE },
|
|
251
|
+
};
|
|
252
|
+
// Default to empty form — use TEST_SCENARIOS to load fixtures on demand
|
|
253
|
+
exports.intakeDefaultValues = _EMPTY_DEFAULTS;
|
|
@@ -14,6 +14,29 @@ export interface BackendComputePayload {
|
|
|
14
14
|
eligibleCount: number;
|
|
15
15
|
highPriorityCount: number;
|
|
16
16
|
quickWinCount: number;
|
|
17
|
+
top3?: Array<{
|
|
18
|
+
rank: number;
|
|
19
|
+
name: string;
|
|
20
|
+
code: string;
|
|
21
|
+
savingsLo: number;
|
|
22
|
+
savingsHi: number;
|
|
23
|
+
score: number;
|
|
24
|
+
priority: string;
|
|
25
|
+
timeline: string;
|
|
26
|
+
authority: string;
|
|
27
|
+
forms: string;
|
|
28
|
+
narrative: {
|
|
29
|
+
whyItMatters: string;
|
|
30
|
+
whatWeDo: string;
|
|
31
|
+
};
|
|
32
|
+
}>;
|
|
33
|
+
allEligible?: Array<{
|
|
34
|
+
rank: number;
|
|
35
|
+
name: string;
|
|
36
|
+
savingsLo: number;
|
|
37
|
+
savingsHi: number;
|
|
38
|
+
score: number;
|
|
39
|
+
}>;
|
|
17
40
|
gapBlock: {
|
|
18
41
|
currentTax: number;
|
|
19
42
|
optimizedTax: number;
|
|
@@ -44,7 +44,20 @@ function TaxAxisProspectReport({ profile, backendComputePayload, outputPayload,
|
|
|
44
44
|
const eligible = (0, react_1.useMemo)(() => (0, compute_1.filterEligibleStrategies)(profile), [profile]);
|
|
45
45
|
const high = eligible.filter(s => s.priority === "HIGH");
|
|
46
46
|
const quick = eligible.filter(s => s.priority === "QUICK WIN");
|
|
47
|
-
const top3 = (0, react_1.useMemo)(() =>
|
|
47
|
+
const top3 = (0, react_1.useMemo)(() => {
|
|
48
|
+
var _a;
|
|
49
|
+
// Prefer backend-determined top 3 order when available
|
|
50
|
+
if ((_a = backendComputePayload === null || backendComputePayload === void 0 ? void 0 : backendComputePayload.top3) === null || _a === void 0 ? void 0 : _a.length) {
|
|
51
|
+
const backendRanks = backendComputePayload.top3.map(s => s.rank);
|
|
52
|
+
const matched = backendRanks
|
|
53
|
+
.map(rank => eligible.find(s => s.rank === rank))
|
|
54
|
+
.filter((s) => !!s);
|
|
55
|
+
if (matched.length >= 3)
|
|
56
|
+
return matched;
|
|
57
|
+
}
|
|
58
|
+
// Fallback: client-side sort by static score (no backend data available)
|
|
59
|
+
return [...eligible].sort((a, b) => b.score - a.score).slice(0, 3);
|
|
60
|
+
}, [backendComputePayload, eligible]);
|
|
48
61
|
const remaining = eligible.length - top3.length;
|
|
49
62
|
const remainingNames = eligible.filter(s => !top3.includes(s)).slice(0, 4).map(s => s.name);
|
|
50
63
|
// ═══ SAVINGS RANGE — backend-authoritative when available ═══
|
|
@@ -82,8 +95,21 @@ function TaxAxisProspectReport({ profile, backendComputePayload, outputPayload,
|
|
|
82
95
|
const maxMid = Math.max(...barData.map(b => b.mid), 1);
|
|
83
96
|
// ═══ DOCUMENT GROUPING ═══
|
|
84
97
|
const allDocsNeeded = [...new Set(eligible.flatMap(s => { var _a; return ((_a = strategyProspect_1.STRATEGY_PROSPECT[s.rank]) === null || _a === void 0 ? void 0 : _a.docsNeeded) || []; }))];
|
|
85
|
-
|
|
86
|
-
const
|
|
98
|
+
// Entity-specific document names
|
|
99
|
+
const entityType = profile.entity || 'Sole Proprietor';
|
|
100
|
+
const isPartnership = entityType === 'Partnership';
|
|
101
|
+
const isSCorp = entityType === 'S-Corporation';
|
|
102
|
+
const isCCorp = entityType === 'C-Corporation';
|
|
103
|
+
const requiredDocs = isPartnership
|
|
104
|
+
? ["Form 1065 (Partnership Tax Return)", "Balance Sheet (current year)"]
|
|
105
|
+
: isSCorp
|
|
106
|
+
? ["Form 1120-S (S-Corp Tax Return)", "Balance Sheet (current year)"]
|
|
107
|
+
: isCCorp
|
|
108
|
+
? ["Form 1120 (C-Corp Tax Return)", "Balance Sheet (current year)"]
|
|
109
|
+
: ["Schedule C (Profit & Loss)", "Balance Sheet (current year)"];
|
|
110
|
+
const recommendedDocs = isPartnership
|
|
111
|
+
? ["Schedule K-1 (Partner's Share)", "Partnership Agreement"]
|
|
112
|
+
: ["Federal Tax Return (most recent)", "W-2 / Officer Compensation records"];
|
|
87
113
|
const conditionalDocs = allDocsNeeded.filter(d => !requiredDocs.includes(d) && !recommendedDocs.includes(d)).slice(0, 5);
|
|
88
114
|
const sectionNums = remaining > 0
|
|
89
115
|
? { recommended: "02", additional: "03", sample: "04", documents: "05", nextSteps: "06" }
|
|
@@ -72,8 +72,8 @@ exports.SIDEBAR_LOOKUP = {
|
|
|
72
72
|
body: "HSA contributions are deductible above the line and reduce AGI directly, regardless of whether the taxpayer itemizes. Eligibility is determined month-by-month based on HDHP coverage. The last-month rule allows full-year contributions if HDHP coverage is in place on December 1, subject to a 13-month testing period \u2014 coverage must continue through December 31 of the following year or contributions are recaptured plus a 10% additional tax."
|
|
73
73
|
},
|
|
74
74
|
"\u00A7401(k)": {
|
|
75
|
-
title: "Solo 401(k)
|
|
76
|
-
body: "Plan documents must
|
|
75
|
+
title: "Solo 401(k) — sole proprietors & single-owner entities only",
|
|
76
|
+
body: "Solo 401(k) plans are available only to sole proprietors and single-member LLCs with no common-law employees. Plan documents must be signed by December 31 of the contribution year. SECURE 2.0 \u00A7317 allows first-year employee deferrals to be made as late as the personal tax filing deadline (without extensions). Employer contributions can be made until the extended filing deadline. Partnerships, multi-member LLCs, S-Corps, and C-Corps must use other qualified retirement plans (SEP-IRA, SIMPLE IRA, 401(k))."
|
|
77
77
|
},
|
|
78
78
|
"\u00A71400Z": {
|
|
79
79
|
title: "Opportunity Zone timing",
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
label
|
|
1
|
+
export interface CatalogFieldDef {
|
|
2
|
+
label?: string;
|
|
3
3
|
sourceRef?: string;
|
|
4
4
|
}
|
|
5
5
|
export interface CatalogSection {
|
|
6
6
|
head: string;
|
|
7
7
|
fields: string[];
|
|
8
8
|
}
|
|
9
|
-
export interface
|
|
9
|
+
export interface CatalogEntry {
|
|
10
10
|
sections: CatalogSection[];
|
|
11
|
-
fields: Record<string,
|
|
11
|
+
fields: Record<string, CatalogFieldDef>;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Keyed by documentType string returned by the backend in parsedData.documentType.
|
|
15
|
+
* When DocumentReviewModal receives parsedData, it looks up the documentType here
|
|
16
|
+
* to get section groupings and field labels. Falls back to flat rendering if no entry.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DOCUMENT_FIELD_CATALOG: Record<string, CatalogEntry>;
|
|
@@ -1,245 +1,410 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//
|
|
3
|
-
//
|
|
2
|
+
// documentFieldCatalog — per-documentType section/field metadata for the Review modal.
|
|
3
|
+
// Sections group extracted fields into labeled categories (Revenue, Expenses, etc.).
|
|
4
|
+
// Field defs provide human-readable labels and source line references.
|
|
5
|
+
// Built from backend extraction schemas in paro-graphql-api/src/tax-axis/catalog/documentCatalog.ts.
|
|
4
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
7
|
exports.DOCUMENT_FIELD_CATALOG = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Keyed by documentType string returned by the backend in parsedData.documentType.
|
|
10
|
+
* When DocumentReviewModal receives parsedData, it looks up the documentType here
|
|
11
|
+
* to get section groupings and field labels. Falls back to flat rendering if no entry.
|
|
12
|
+
*/
|
|
6
13
|
exports.DOCUMENT_FIELD_CATALOG = {
|
|
7
|
-
|
|
14
|
+
// ── Profit & Loss ──
|
|
15
|
+
profit_loss: {
|
|
8
16
|
sections: [
|
|
17
|
+
{ head: "Revenue", fields: ["total_revenue", "cost_of_goods_sold", "gross_profit"] },
|
|
9
18
|
{
|
|
10
|
-
head: "
|
|
11
|
-
fields: [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
head: "Operating Expenses",
|
|
20
|
+
fields: [
|
|
21
|
+
"officer_compensation", "salaries_wages_staff", "employee_benefits",
|
|
22
|
+
"payroll_taxes_employer", "employer_retirement_contribution",
|
|
23
|
+
"rent_expense", "utilities", "software_subscriptions",
|
|
24
|
+
"professional_fees", "advertising_marketing", "travel",
|
|
25
|
+
"business_meals", "office_supplies", "insurance_nonhealth",
|
|
26
|
+
"repairs_maintenance", "bank_fees", "contract_labor",
|
|
27
|
+
"mortgage_interest", "business_interest_nonmortgage",
|
|
28
|
+
"depreciation_expense", "amortization_expense", "other_expenses",
|
|
29
|
+
"total_operating_expenses",
|
|
30
|
+
],
|
|
20
31
|
},
|
|
32
|
+
{ head: "Net Income", fields: ["net_operating_income", "income_tax_provision", "net_income"] },
|
|
21
33
|
],
|
|
22
34
|
fields: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
total_revenue: { label: "Total Revenue", sourceRef: "Line 1a" },
|
|
36
|
+
cost_of_goods_sold: { label: "Cost of Goods Sold", sourceRef: "Line 2" },
|
|
37
|
+
gross_profit: { label: "Gross Profit", sourceRef: "Computed" },
|
|
38
|
+
officer_compensation: { label: "Officer Compensation", sourceRef: "Line 7" },
|
|
39
|
+
salaries_wages_staff: { label: "Wages & Salaries", sourceRef: "Line 13" },
|
|
40
|
+
employee_benefits: { label: "Employee Benefits", sourceRef: "" },
|
|
41
|
+
payroll_taxes_employer: { label: "Payroll Taxes", sourceRef: "" },
|
|
42
|
+
employer_retirement_contribution: { label: "Retirement Contributions", sourceRef: "" },
|
|
43
|
+
rent_expense: { label: "Rent / Lease", sourceRef: "Line 15" },
|
|
44
|
+
utilities: { label: "Utilities", sourceRef: "" },
|
|
45
|
+
software_subscriptions: { label: "Software & Subscriptions", sourceRef: "" },
|
|
46
|
+
professional_fees: { label: "Professional Fees", sourceRef: "Line 17" },
|
|
47
|
+
advertising_marketing: { label: "Advertising & Marketing", sourceRef: "" },
|
|
48
|
+
travel: { label: "Travel", sourceRef: "" },
|
|
49
|
+
business_meals: { label: "Meals & Entertainment", sourceRef: "Line 19" },
|
|
50
|
+
office_supplies: { label: "Office Supplies", sourceRef: "" },
|
|
51
|
+
insurance_nonhealth: { label: "Insurance (Non-Health)", sourceRef: "" },
|
|
52
|
+
repairs_maintenance: { label: "Repairs & Maintenance", sourceRef: "" },
|
|
53
|
+
bank_fees: { label: "Bank Fees", sourceRef: "" },
|
|
54
|
+
contract_labor: { label: "Contract Labor", sourceRef: "" },
|
|
55
|
+
mortgage_interest: { label: "Mortgage Interest", sourceRef: "" },
|
|
56
|
+
business_interest_nonmortgage: { label: "Business Interest", sourceRef: "" },
|
|
57
|
+
depreciation_expense: { label: "Depreciation", sourceRef: "Line 14" },
|
|
58
|
+
amortization_expense: { label: "Amortization", sourceRef: "" },
|
|
59
|
+
other_expenses: { label: "Other Expenses", sourceRef: "" },
|
|
60
|
+
total_operating_expenses: { label: "Total Operating Expenses", sourceRef: "" },
|
|
61
|
+
net_operating_income: { label: "Net Operating Income", sourceRef: "Line 21" },
|
|
62
|
+
income_tax_provision: { label: "Income Tax Provision", sourceRef: "" },
|
|
63
|
+
net_income: { label: "Net Income", sourceRef: "Line 30" },
|
|
36
64
|
},
|
|
37
65
|
},
|
|
38
|
-
|
|
66
|
+
// ── Balance Sheet ──
|
|
67
|
+
balance_sheet: {
|
|
39
68
|
sections: [
|
|
40
69
|
{
|
|
41
|
-
head: "
|
|
42
|
-
fields: [
|
|
70
|
+
head: "Assets",
|
|
71
|
+
fields: [
|
|
72
|
+
"cash_and_equivalents", "accounts_receivable",
|
|
73
|
+
"allowance_for_doubtful_accounts", "prepaid_expenses", "inventory",
|
|
74
|
+
"total_current_assets", "property_equipment_gross",
|
|
75
|
+
"accumulated_depreciation", "property_equipment_net",
|
|
76
|
+
"intangible_assets_gross", "accumulated_amortization",
|
|
77
|
+
"intangible_assets_net", "security_deposits_held_as_asset", "total_assets",
|
|
78
|
+
],
|
|
43
79
|
},
|
|
44
80
|
{
|
|
45
|
-
head: "
|
|
81
|
+
head: "Liabilities",
|
|
46
82
|
fields: [
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"depreciation_expense",
|
|
51
|
-
"amortization_expense",
|
|
52
|
-
"advertising_marketing",
|
|
53
|
-
"professional_fees",
|
|
54
|
-
"insurance_nonhealth",
|
|
55
|
-
"business_meals",
|
|
56
|
-
"other_expenses",
|
|
83
|
+
"accounts_payable", "accrued_liabilities", "deferred_revenue",
|
|
84
|
+
"short_term_debt", "long_term_debt_current_portion",
|
|
85
|
+
"total_current_liabilities", "long_term_debt", "total_liabilities",
|
|
57
86
|
],
|
|
58
87
|
},
|
|
59
88
|
{
|
|
60
|
-
head: "
|
|
61
|
-
fields: [
|
|
89
|
+
head: "Equity",
|
|
90
|
+
fields: [
|
|
91
|
+
"common_stock_par_value", "additional_paid_in_capital",
|
|
92
|
+
"retained_earnings", "aaa_balance", "owners_equity",
|
|
93
|
+
"total_equity", "total_liabilities_and_equity",
|
|
94
|
+
],
|
|
62
95
|
},
|
|
63
96
|
],
|
|
64
97
|
fields: {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
98
|
+
cash_and_equivalents: { label: "Cash & Equivalents", sourceRef: "Line 1" },
|
|
99
|
+
accounts_receivable: { label: "Accounts Receivable", sourceRef: "Line 2" },
|
|
100
|
+
allowance_for_doubtful_accounts: { label: "Allowance for Doubtful Accts", sourceRef: "" },
|
|
101
|
+
prepaid_expenses: { label: "Prepaid Expenses", sourceRef: "" },
|
|
102
|
+
inventory: { label: "Inventory", sourceRef: "Line 3" },
|
|
103
|
+
total_current_assets: { label: "Total Current Assets", sourceRef: "" },
|
|
104
|
+
property_equipment_gross: { label: "Property & Equipment (Gross)", sourceRef: "" },
|
|
105
|
+
accumulated_depreciation: { label: "Accumulated Depreciation", sourceRef: "" },
|
|
106
|
+
property_equipment_net: { label: "Property & Equipment (Net)", sourceRef: "" },
|
|
107
|
+
intangible_assets_gross: { label: "Intangible Assets (Gross)", sourceRef: "" },
|
|
108
|
+
accumulated_amortization: { label: "Accumulated Amortization", sourceRef: "" },
|
|
109
|
+
intangible_assets_net: { label: "Intangible Assets (Net)", sourceRef: "" },
|
|
110
|
+
security_deposits_held_as_asset: { label: "Security Deposits", sourceRef: "" },
|
|
111
|
+
total_assets: { label: "Total Assets", sourceRef: "Line 11" },
|
|
112
|
+
accounts_payable: { label: "Accounts Payable", sourceRef: "Line 15" },
|
|
113
|
+
accrued_liabilities: { label: "Accrued Liabilities", sourceRef: "" },
|
|
114
|
+
deferred_revenue: { label: "Deferred Revenue", sourceRef: "" },
|
|
115
|
+
short_term_debt: { label: "Short-Term Debt", sourceRef: "" },
|
|
116
|
+
long_term_debt_current_portion: { label: "Current Portion of LT Debt", sourceRef: "" },
|
|
117
|
+
total_current_liabilities: { label: "Total Current Liabilities", sourceRef: "" },
|
|
118
|
+
long_term_debt: { label: "Long-Term Debt", sourceRef: "Line 17" },
|
|
119
|
+
total_liabilities: { label: "Total Liabilities", sourceRef: "Line 22" },
|
|
120
|
+
common_stock_par_value: { label: "Common Stock", sourceRef: "" },
|
|
121
|
+
additional_paid_in_capital: { label: "Additional Paid-in Capital", sourceRef: "" },
|
|
122
|
+
retained_earnings: { label: "Retained Earnings", sourceRef: "Line 24" },
|
|
123
|
+
aaa_balance: { label: "AAA Balance", sourceRef: "" },
|
|
124
|
+
owners_equity: { label: "Owner's Equity", sourceRef: "" },
|
|
125
|
+
total_equity: { label: "Total Equity", sourceRef: "Line 27" },
|
|
126
|
+
total_liabilities_and_equity: { label: "Total Liabilities & Equity", sourceRef: "" },
|
|
80
127
|
},
|
|
81
128
|
},
|
|
82
|
-
|
|
129
|
+
// ── Federal Tax Return (1120S, 1120, 1065, Schedule C) ──
|
|
130
|
+
federal_tax_return: {
|
|
83
131
|
sections: [
|
|
84
132
|
{
|
|
85
|
-
head: "
|
|
133
|
+
head: "Entity & Filing",
|
|
86
134
|
fields: [
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"accounts_receivable",
|
|
91
|
-
"inventory",
|
|
92
|
-
"prepaid_expenses",
|
|
93
|
-
"property_equipment_net",
|
|
94
|
-
"accumulated_depreciation",
|
|
135
|
+
"entity_tax_classification", "ein", "date_incorporated",
|
|
136
|
+
"accounting_method_box", "industry_naics",
|
|
137
|
+
"amended_return_flag", "initial_return_flag", "final_return_flag",
|
|
95
138
|
],
|
|
96
139
|
},
|
|
97
140
|
{
|
|
98
|
-
head: "
|
|
141
|
+
head: "Income",
|
|
99
142
|
fields: [
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"accounts_payable",
|
|
103
|
-
"accrued_liabilities",
|
|
104
|
-
"deferred_revenue",
|
|
105
|
-
"short_term_debt",
|
|
106
|
-
"long_term_debt",
|
|
107
|
-
"total_liabilities_and_equity",
|
|
143
|
+
"gross_receipts_L1a", "returns_and_allowances_L1b", "revenue",
|
|
144
|
+
"cost_of_goods_sold", "gross_profit", "total_income",
|
|
108
145
|
],
|
|
109
146
|
},
|
|
110
147
|
{
|
|
111
|
-
head: "
|
|
148
|
+
head: "Deductions",
|
|
112
149
|
fields: [
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
150
|
+
"compensation_of_officers_line", "salaries_wages_line",
|
|
151
|
+
"repairs_maintenance", "rent_expense_line",
|
|
152
|
+
"taxes_and_licenses_line", "interest_expense_line",
|
|
153
|
+
"charitable_contributions", "depreciation_line",
|
|
154
|
+
"advertising_expense", "pension_profit_sharing",
|
|
155
|
+
"employee_benefit_programs", "other_deductions_line",
|
|
156
|
+
"total_deductions",
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
head: "Tax Computation",
|
|
161
|
+
fields: [
|
|
162
|
+
"net_income", "nol_deduction", "total_tax",
|
|
163
|
+
"estimated_tax_payments", "tax_due_or_overpayment",
|
|
164
|
+
"self_emp_hi",
|
|
118
165
|
],
|
|
119
166
|
},
|
|
120
167
|
],
|
|
121
168
|
fields: {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
169
|
+
entity_tax_classification: { label: "Entity Classification", sourceRef: "Form Title" },
|
|
170
|
+
ein: { label: "EIN", sourceRef: "Box B" },
|
|
171
|
+
date_incorporated: { label: "Date Incorporated", sourceRef: "Box E" },
|
|
172
|
+
accounting_method_box: { label: "Accounting Method", sourceRef: "Sch B Q1" },
|
|
173
|
+
industry_naics: { label: "NAICS Code", sourceRef: "Box A" },
|
|
174
|
+
amended_return_flag: { label: "Amended Return", sourceRef: "Header" },
|
|
175
|
+
initial_return_flag: { label: "Initial Return", sourceRef: "Header" },
|
|
176
|
+
final_return_flag: { label: "Final Return", sourceRef: "Header" },
|
|
177
|
+
gross_receipts_L1a: { label: "Gross Receipts", sourceRef: "Line 1a" },
|
|
178
|
+
returns_and_allowances_L1b: { label: "Returns & Allowances", sourceRef: "Line 1b" },
|
|
179
|
+
revenue: { label: "Revenue", sourceRef: "Line 1c" },
|
|
180
|
+
cost_of_goods_sold: { label: "Cost of Goods Sold", sourceRef: "Line 2" },
|
|
181
|
+
gross_profit: { label: "Gross Profit", sourceRef: "Line 3" },
|
|
182
|
+
total_income: { label: "Total Income", sourceRef: "Line 6" },
|
|
183
|
+
compensation_of_officers_line: { label: "Officer Compensation", sourceRef: "Line 7" },
|
|
184
|
+
salaries_wages_line: { label: "Salaries & Wages", sourceRef: "Line 8" },
|
|
185
|
+
repairs_maintenance: { label: "Repairs & Maintenance", sourceRef: "Line 9" },
|
|
186
|
+
rent_expense_line: { label: "Rent Expense", sourceRef: "Line 11" },
|
|
187
|
+
taxes_and_licenses_line: { label: "Taxes & Licenses", sourceRef: "Line 12" },
|
|
188
|
+
interest_expense_line: { label: "Interest Expense", sourceRef: "Line 13" },
|
|
189
|
+
charitable_contributions: { label: "Charitable Contributions", sourceRef: "Line 19" },
|
|
190
|
+
depreciation_line: { label: "Depreciation", sourceRef: "Line 14" },
|
|
191
|
+
advertising_expense: { label: "Advertising", sourceRef: "Line 16" },
|
|
192
|
+
pension_profit_sharing: { label: "Pension & Profit Sharing", sourceRef: "Line 17" },
|
|
193
|
+
employee_benefit_programs: { label: "Employee Benefits", sourceRef: "Line 18" },
|
|
194
|
+
other_deductions_line: { label: "Other Deductions", sourceRef: "Line 19" },
|
|
195
|
+
total_deductions: { label: "Total Deductions", sourceRef: "Line 20" },
|
|
196
|
+
net_income: { label: "Net Income", sourceRef: "Line 21" },
|
|
197
|
+
nol_deduction: { label: "NOL Deduction", sourceRef: "Line 29a" },
|
|
198
|
+
total_tax: { label: "Total Tax", sourceRef: "Line 31" },
|
|
199
|
+
estimated_tax_payments: { label: "Estimated Tax Payments", sourceRef: "Line 32b" },
|
|
200
|
+
tax_due_or_overpayment: { label: "Tax Due / Overpayment", sourceRef: "" },
|
|
201
|
+
self_emp_hi: { label: "Self-Employed Health Insurance", sourceRef: "Sch 1 L17" },
|
|
143
202
|
},
|
|
144
203
|
},
|
|
145
|
-
|
|
204
|
+
// ── W-3 (Payroll Summary) ──
|
|
205
|
+
w3: {
|
|
146
206
|
sections: [
|
|
147
207
|
{
|
|
148
|
-
head: "
|
|
149
|
-
fields: [
|
|
208
|
+
head: "Wages & Withholding",
|
|
209
|
+
fields: [
|
|
210
|
+
"wages_tips_other_compensation_box1", "federal_income_tax_withheld_box2",
|
|
211
|
+
"social_security_wages_box3", "social_security_tax_withheld_box4",
|
|
212
|
+
"medicare_wages_box5", "medicare_tax_withheld_box6",
|
|
213
|
+
"social_security_tips_box7", "allocated_tips_box8",
|
|
214
|
+
],
|
|
150
215
|
},
|
|
151
216
|
{
|
|
152
|
-
head: "
|
|
153
|
-
fields: [
|
|
217
|
+
head: "Benefits & Other",
|
|
218
|
+
fields: [
|
|
219
|
+
"dependent_care_benefits_box10", "nonqualified_plans_box11",
|
|
220
|
+
"owner_w2_comp", "employees",
|
|
221
|
+
],
|
|
154
222
|
},
|
|
155
223
|
],
|
|
156
224
|
fields: {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
225
|
+
wages_tips_other_compensation_box1: { label: "Wages, Tips & Compensation", sourceRef: "Box 1" },
|
|
226
|
+
federal_income_tax_withheld_box2: { label: "Federal Income Tax Withheld", sourceRef: "Box 2" },
|
|
227
|
+
social_security_wages_box3: { label: "Social Security Wages", sourceRef: "Box 3" },
|
|
228
|
+
social_security_tax_withheld_box4: { label: "SS Tax Withheld", sourceRef: "Box 4" },
|
|
229
|
+
medicare_wages_box5: { label: "Medicare Wages", sourceRef: "Box 5" },
|
|
230
|
+
medicare_tax_withheld_box6: { label: "Medicare Tax Withheld", sourceRef: "Box 6" },
|
|
231
|
+
social_security_tips_box7: { label: "Social Security Tips", sourceRef: "Box 7" },
|
|
232
|
+
allocated_tips_box8: { label: "Allocated Tips", sourceRef: "Box 8" },
|
|
233
|
+
dependent_care_benefits_box10: { label: "Dependent Care Benefits", sourceRef: "Box 10" },
|
|
234
|
+
nonqualified_plans_box11: { label: "Nonqualified Plans", sourceRef: "Box 11" },
|
|
235
|
+
owner_w2_comp: { label: "Owner W-2 Compensation", sourceRef: "Box 1 (Officer)" },
|
|
236
|
+
employees: { label: "Number of Employees", sourceRef: "Box d" },
|
|
164
237
|
},
|
|
165
238
|
},
|
|
166
|
-
|
|
239
|
+
// ── Payroll Records ──
|
|
240
|
+
payroll_records: {
|
|
167
241
|
sections: [
|
|
168
242
|
{
|
|
169
|
-
head: "
|
|
170
|
-
fields: [
|
|
243
|
+
head: "Totals",
|
|
244
|
+
fields: [
|
|
245
|
+
"employees", "w2_wages_paid_total",
|
|
246
|
+
"total_federal_withholding", "total_ss_withholding",
|
|
247
|
+
"total_medicare_withholding",
|
|
248
|
+
],
|
|
171
249
|
},
|
|
172
250
|
{
|
|
173
|
-
head: "
|
|
174
|
-
fields: [
|
|
251
|
+
head: "Employer Costs",
|
|
252
|
+
fields: [
|
|
253
|
+
"employer_fica_match", "employer_futa_paid",
|
|
254
|
+
"employer_401k_match_total", "bonuses_paid_total",
|
|
255
|
+
"commissions_paid_total", "overtime_pay_total",
|
|
256
|
+
"tip_income_reported",
|
|
257
|
+
],
|
|
175
258
|
},
|
|
176
259
|
],
|
|
177
260
|
fields: {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
261
|
+
employees: { label: "Number of Employees", sourceRef: "" },
|
|
262
|
+
w2_wages_paid_total: { label: "Total W-2 Wages Paid", sourceRef: "" },
|
|
263
|
+
total_federal_withholding: { label: "Federal Withholding", sourceRef: "" },
|
|
264
|
+
total_ss_withholding: { label: "Social Security Withholding", sourceRef: "" },
|
|
265
|
+
total_medicare_withholding: { label: "Medicare Withholding", sourceRef: "" },
|
|
266
|
+
employer_fica_match: { label: "Employer FICA Match", sourceRef: "" },
|
|
267
|
+
employer_futa_paid: { label: "FUTA Paid", sourceRef: "" },
|
|
268
|
+
employer_401k_match_total: { label: "401(k) Match Total", sourceRef: "" },
|
|
269
|
+
bonuses_paid_total: { label: "Bonuses Paid", sourceRef: "" },
|
|
270
|
+
commissions_paid_total: { label: "Commissions Paid", sourceRef: "" },
|
|
271
|
+
overtime_pay_total: { label: "Overtime Pay", sourceRef: "" },
|
|
272
|
+
tip_income_reported: { label: "Tip Income Reported", sourceRef: "" },
|
|
185
273
|
},
|
|
186
274
|
},
|
|
275
|
+
// ── Fixed Asset Schedule ──
|
|
187
276
|
fixed_asset_schedule: {
|
|
188
277
|
sections: [
|
|
189
278
|
{
|
|
190
|
-
head: "
|
|
191
|
-
fields: [
|
|
279
|
+
head: "Summary",
|
|
280
|
+
fields: [
|
|
281
|
+
"total_original_cost", "total_accumulated_depreciation",
|
|
282
|
+
"total_net_book_value", "fixed_asset_additions_current_year",
|
|
283
|
+
"qualifying_asset_cost",
|
|
284
|
+
],
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
head: "Depreciation & Amortization",
|
|
288
|
+
fields: [
|
|
289
|
+
"total_section_179_claimed", "total_bonus_depreciation_claimed",
|
|
290
|
+
"qip_value", "ubia_total",
|
|
291
|
+
],
|
|
192
292
|
},
|
|
193
293
|
],
|
|
194
294
|
fields: {
|
|
195
|
-
|
|
196
|
-
total_accumulated_depreciation: { label: "
|
|
197
|
-
total_net_book_value: { label: "
|
|
198
|
-
|
|
199
|
-
|
|
295
|
+
total_original_cost: { label: "Total Original Cost", sourceRef: "" },
|
|
296
|
+
total_accumulated_depreciation: { label: "Accumulated Depreciation", sourceRef: "" },
|
|
297
|
+
total_net_book_value: { label: "Net Book Value", sourceRef: "" },
|
|
298
|
+
fixed_asset_additions_current_year: { label: "Current Year Additions", sourceRef: "" },
|
|
299
|
+
qualifying_asset_cost: { label: "Qualifying Asset Cost", sourceRef: "≤20yr life" },
|
|
300
|
+
total_section_179_claimed: { label: "Section 179 Claimed", sourceRef: "" },
|
|
301
|
+
total_bonus_depreciation_claimed: { label: "Bonus Depreciation Claimed", sourceRef: "" },
|
|
302
|
+
qip_value: { label: "QIP Value", sourceRef: "" },
|
|
303
|
+
ubia_total: { label: "UBIA Total", sourceRef: "" },
|
|
200
304
|
},
|
|
201
305
|
},
|
|
202
|
-
|
|
306
|
+
// ── State Tax Return ──
|
|
307
|
+
state_tax_return: {
|
|
203
308
|
sections: [
|
|
204
309
|
{
|
|
205
|
-
head: "
|
|
206
|
-
fields: ["
|
|
310
|
+
head: "Filing Summary",
|
|
311
|
+
fields: ["tax_type_by_state", "state_nexus_type", "state_apportionment_method"],
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
head: "Tax Computation",
|
|
315
|
+
fields: [
|
|
316
|
+
"apportionment_factor", "state_taxable_income", "state_tax_paid",
|
|
317
|
+
"state_estimated_payments_made", "pte_election_status", "pte_tax_paid",
|
|
318
|
+
"il_replacement_tax",
|
|
319
|
+
],
|
|
207
320
|
},
|
|
208
321
|
],
|
|
209
322
|
fields: {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
323
|
+
tax_type_by_state: { label: "Tax Type", sourceRef: "" },
|
|
324
|
+
state_nexus_type: { label: "Nexus Type", sourceRef: "" },
|
|
325
|
+
state_apportionment_method: { label: "Apportionment Method", sourceRef: "" },
|
|
326
|
+
apportionment_factor: { label: "Apportionment Factor", sourceRef: "" },
|
|
327
|
+
state_taxable_income: { label: "State Taxable Income", sourceRef: "" },
|
|
328
|
+
state_tax_paid: { label: "State Tax Paid", sourceRef: "Total" },
|
|
329
|
+
state_estimated_payments_made: { label: "Estimated Payments Made", sourceRef: "" },
|
|
330
|
+
pte_election_status: { label: "PTE Election Status", sourceRef: "" },
|
|
331
|
+
pte_tax_paid: { label: "PTE Tax Paid", sourceRef: "" },
|
|
332
|
+
il_replacement_tax: { label: "IL Replacement Tax", sourceRef: "" },
|
|
215
333
|
},
|
|
216
334
|
},
|
|
217
|
-
|
|
335
|
+
// ── Form 4562 (Depreciation & Amortization) ──
|
|
336
|
+
form_4562: {
|
|
218
337
|
sections: [
|
|
219
338
|
{
|
|
220
|
-
head: "
|
|
221
|
-
fields: [
|
|
339
|
+
head: "Section 179",
|
|
340
|
+
fields: [
|
|
341
|
+
"section_179_max_amount_L1", "section_179_cost_placed_L2",
|
|
342
|
+
"dollar_limitation_L5", "section_179_expense_L12",
|
|
343
|
+
"section_179_carryover_to_next_year_L13",
|
|
344
|
+
],
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
head: "MACRS & Bonus",
|
|
348
|
+
fields: [
|
|
349
|
+
"bonus_depreciation_claimed_L14", "bonus_elected_out_flag",
|
|
350
|
+
"macrs_prior_year_assets_L17", "macrs_current_year_gds",
|
|
351
|
+
"macrs_current_year_ads",
|
|
352
|
+
],
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
head: "Totals",
|
|
356
|
+
fields: [
|
|
357
|
+
"total_depreciation_L22", "fixed_asset_additions",
|
|
358
|
+
"qualifying_asset_cost", "qip_present",
|
|
359
|
+
],
|
|
222
360
|
},
|
|
223
361
|
],
|
|
224
362
|
fields: {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
363
|
+
section_179_max_amount_L1: { label: "§179 Maximum Amount", sourceRef: "Line 1" },
|
|
364
|
+
section_179_cost_placed_L2: { label: "§179 Cost of Property", sourceRef: "Line 2" },
|
|
365
|
+
dollar_limitation_L5: { label: "Dollar Limitation", sourceRef: "Line 5" },
|
|
366
|
+
section_179_expense_L12: { label: "§179 Expense Deduction", sourceRef: "Line 12" },
|
|
367
|
+
section_179_carryover_to_next_year_L13: { label: "§179 Carryover", sourceRef: "Line 13" },
|
|
368
|
+
bonus_depreciation_claimed_L14: { label: "Bonus Depreciation", sourceRef: "Line 14" },
|
|
369
|
+
bonus_elected_out_flag: { label: "Bonus Elected Out", sourceRef: "Election" },
|
|
370
|
+
macrs_prior_year_assets_L17: { label: "MACRS Prior Year Assets", sourceRef: "Line 17" },
|
|
371
|
+
macrs_current_year_gds: { label: "MACRS Current Year (GDS)", sourceRef: "Section B" },
|
|
372
|
+
macrs_current_year_ads: { label: "MACRS Current Year (ADS)", sourceRef: "Section C" },
|
|
373
|
+
total_depreciation_L22: { label: "Total Depreciation", sourceRef: "Line 22" },
|
|
374
|
+
fixed_asset_additions: { label: "Fixed Asset Additions", sourceRef: "" },
|
|
375
|
+
qualifying_asset_cost: { label: "Qualifying Asset Cost", sourceRef: "≤20yr" },
|
|
376
|
+
qip_present: { label: "QIP Present", sourceRef: "" },
|
|
228
377
|
},
|
|
229
378
|
},
|
|
230
|
-
|
|
379
|
+
// ── Form 8889 (HSA) ──
|
|
380
|
+
form_8889: {
|
|
231
381
|
sections: [
|
|
232
382
|
{
|
|
233
|
-
head: "
|
|
234
|
-
fields: [
|
|
383
|
+
head: "Coverage & Contributions",
|
|
384
|
+
fields: [
|
|
385
|
+
"hdhp_coverage_L1", "hsa_contributions_L2",
|
|
386
|
+
"age_55_catchup_contribution_L3", "employer_contributions_L9",
|
|
387
|
+
"deductible_hsa_contributions_L13",
|
|
388
|
+
],
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
head: "Distributions",
|
|
392
|
+
fields: [
|
|
393
|
+
"total_distributions_L14a", "qualified_medical_expenses_L15",
|
|
394
|
+
"taxable_hsa_distributions_L16", "additional_20pct_tax_L17b",
|
|
395
|
+
],
|
|
235
396
|
},
|
|
236
397
|
],
|
|
237
398
|
fields: {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
399
|
+
hdhp_coverage_L1: { label: "HDHP Coverage", sourceRef: "Line 1" },
|
|
400
|
+
hsa_contributions_L2: { label: "HSA Contributions", sourceRef: "Line 2" },
|
|
401
|
+
age_55_catchup_contribution_L3: { label: "Age 55+ Catch-Up", sourceRef: "Line 3" },
|
|
402
|
+
employer_contributions_L9: { label: "Employer Contributions", sourceRef: "Line 9" },
|
|
403
|
+
deductible_hsa_contributions_L13: { label: "Deductible HSA Contributions", sourceRef: "Line 13" },
|
|
404
|
+
total_distributions_L14a: { label: "Total Distributions", sourceRef: "Line 14a" },
|
|
405
|
+
qualified_medical_expenses_L15: { label: "Qualified Medical Expenses", sourceRef: "Line 15" },
|
|
406
|
+
taxable_hsa_distributions_L16: { label: "Taxable HSA Distributions", sourceRef: "Line 16" },
|
|
407
|
+
additional_20pct_tax_L17b: { label: "Additional 20% Tax", sourceRef: "Line 17b" },
|
|
243
408
|
},
|
|
244
409
|
},
|
|
245
410
|
};
|