'9': new ComputedLine((): number => {
// TODO - Itemized deductions.
- switch (this.getInput('filingStatus')) {
+ switch (this.filingStatus) {
case FilingStatus.Single:
case FilingStatus.MarriedFilingSeparate:
return 12200;
'10': new ComputedLine((tr): number => {
const taxableIncome = this.getValue(tr, '8b');
let use8995a = false;
- switch (this.getInput('filingStatus')) {
+ switch (this.filingStatus) {
case FilingStatus.Single: use8995a = taxableIncome <= 160700; break;
case FilingStatus.MarriedFilingSeparate: use8995a = taxableIncome <= 160725; break;
case FilingStatus.MarriedFilingJoint: use8995a = taxableIncome <= 321400; break;
if (schedD)
return schedD.getValue(tr, '47');
- return computeTax(taxableIncome, this.getInput('filingStatus'));
+ return computeTax(taxableIncome, this.filingStatus);
}, 'Tax'),
'12b': new ComputedLine((tr): number => {
'23': new ComputedLine((tr): number => {
return clampToZero(this.getValue(tr, '16') - this.getValue(tr, '19'));
}, 'Amount you owe'),
- };
+ }
+
+ get filingStatus(): FilingStatus {
+ return this.getInput('filingStatus');
+ }
};
export function computeTax(income: number, filingStatus: FilingStatus): number {
return this.getValue(tr, '1');
}),
'5': new ComputedLine((tr): number => {
- return Form8959.filingStatusLimit(tr.getForm(Form1040).getInput('filingStatus'));
+ return Form8959.filingStatusLimit(tr.getForm(Form1040).filingStatus);
}),
'6': new ComputedLine((tr): number => {
return clampToZero(this.getValue(tr, '4') - this.getValue(tr, '5'));
'12': new ComputedLine((tr): number => this.getValue(tr, '8') - this.getValue(tr, '11'), 'Net investment income'),
'13': new ReferenceLine(Form1040, '8b', 'Modified adjusted gross income'),
'14': new ComputedLine((tr): number => {
- return Form8960.filingStatusLimit(tr.getForm(Form1040).getInput('filingStatus'));
+ return Form8960.filingStatusLimit(tr.getForm(Form1040).filingStatus);
}, 'Threshold'),
'15': new ComputedLine((tr): number => clampToZero(this.getValue(tr, '13') - this.getValue(tr, '14'))),
'16': new ComputedLine((tr): number => Math.min(this.getValue(tr, '12'), this.getValue(tr, '15'))),
// income
const f1040 = tr.getForm(Form1040);
const taxableIncome = f1040.getValue(tr, '11b');
- switch (f1040.getInput('filingStatus')) {
+ switch (f1040.filingStatus) {
case FilingStatus.Single:
if (taxableIncome < 510300)
return 0;
'8': new ComputedLine((tr): number => {
const f1040 = tr.getForm(Form1040);
const wages = f1040.getLine('1').value(tr);
- const filingStatus = f1040.getInput('filingStatus');
+ const filingStatus = f1040.filingStatus;
let value = 0;
const totalForeignTax = (new AccumulatorLine(Form1099DIV, '7')).value(tr) +
(new AccumulatorLine(Form1099INT, '6')).value(tr);
- const limit = f1040.getInput('filingStatus') == FilingStatus.MarriedFilingJoint ? 600 : 300;
+ const limit = f1040.filingStatus == FilingStatus.MarriedFilingJoint ? 600 : 300;
if (totalForeignTax < limit) {
const sched2l2 = new ReferenceLine(Schedule2, '2', undefined, 0);
'21': new ComputedLine((tr): number | undefined => {
if (!this.getValue(tr, '17') || !this.getValue(tr, '20'))
return undefined;
- const filingStatus = tr.getForm(Form1040).getInput('filingStatus');
+ const filingStatus = tr.getForm(Form1040).filingStatus;
const limit = filingStatus == FilingStatus.MarriedFilingSeparate ? -1500 : -3000;
return Math.min(this.getValue(tr, '16'), limit);
}, 'Net capital loss'),
'13': new ComputedLine((tr): number => this.getValue(tr, '10') - this.getValue(tr, '12')),
'14': new ComputedLine((tr): number => clampToZero(this.getValue(tr, '1') - this.getValue(tr, '13'))),
'15': new ComputedLine((tr): number => {
- switch (tr.getForm(Form1040).getInput('filingStatus')) {
+ switch (tr.getForm(Form1040).filingStatus) {
case FilingStatus.Single:
case FilingStatus.MarriedFilingSeparate:
return 39375;
'18': new ComputedLine((tr): number => clampToZero(this.getValue(tr, '1') - this.getValue(tr, '10'))),
'19': new ComputedLine((tr): number => {
let threshold: number;
- switch (tr.getForm(Form1040).getInput('filingStatus')) {
+ switch (tr.getForm(Form1040).filingStatus) {
case FilingStatus.Single:
case FilingStatus.MarriedFilingSeparate:
threshold = 160725;
'24': new ReferenceLine(ScheduleDTaxWorksheet as any, '22'),
'25': new ComputedLine((tr): number => clampToZero(this.getValue(tr, '23') - this.getValue(tr, '24'))),
'26': new ComputedLine((tr): number => {
- switch (tr.getForm(Form1040).getInput('filingStatus')) {
+ switch (tr.getForm(Form1040).filingStatus) {
case FilingStatus.Single:
return 434550;
case FilingStatus.MarriedFilingSeparate:
}),
'44': new ComputedLine((tr): number => {
const income = this.getValue(tr, '21');
- return computeTax(income, tr.getForm(Form1040).getInput('filingStatus'));
+ return computeTax(income, tr.getForm(Form1040).filingStatus);
}),
'45': new ComputedLine((tr): number => {
return this.getValue(tr, '31') +
}),
'46': new ComputedLine((tr): number => {
const income = this.getValue(tr, '1');
- return computeTax(income, tr.getForm(Form1040).getInput('filingStatus'));
+ return computeTax(income, tr.getForm(Form1040).filingStatus);
}),
'47': new ComputedLine((tr): number => Math.min(this.getValue(tr, '45'), this.getValue(tr, '46'))),
};
get year() { return 2019; }
get includeJointPersonForms() {
- return this.getForm(Form1040).getInput('filingStatus') == FilingStatus.MarriedFilingJoint;
+ return this.getForm(Form1040).filingStatus == FilingStatus.MarriedFilingJoint;
}
};