Implement Form.person() on fed2019 forms.
[ustaxlib.git] / src / fed2019 / Form1099INT.ts
1 import { Form, Person } from '../core';
2 import { InputLine } from '../core/Line';
3
4 export interface Form1099INTInput {
5 payer: string;
6 payee: Person;
7 interest: number;
8 earlyWithdrawalPenalty?: number;
9 interestOnUsSavingsBondOrTreas?: number;
10 fedIncomeTax?: number;
11 investmentExpenses?: number;
12 foreignTaxPaid?: number;
13 foreignCountryOrPosession?: string;
14 taxExemptInterest?: number;
15 privateActivityBondInterest?: number;
16 marketDiscount?: number;
17 bondPremium?: number;
18 bondPremiumOnTreas?: number;
19 bondPremiumOnTaxExempt?: number;
20 };
21
22 class Input<T extends keyof Form1099INTInput> extends InputLine<Form1099INTInput, T> {};
23
24 export default class Form1099INT extends Form<Form1099INT['_lines'], Form1099INTInput> {
25 readonly name = '1099-INT';
26
27 readonly supportsMultipleCopies = true;
28
29 person() { return this.getInput('payee'); }
30
31 protected readonly _lines = {
32 'payer': new Input('payer'),
33 'recipient': new Input('payee'),
34 '1': new Input('interest'),
35 '2': new Input('earlyWithdrawalPenalty'),
36 '3': new Input('interestOnUsSavingsBondOrTreas'),
37 '4': new Input('fedIncomeTax'),
38 '5': new Input('investmentExpenses'),
39 '6': new Input('foreignTaxPaid'),
40 '7': new Input('foreignCountryOrPosession'),
41 '8': new Input('taxExemptInterest'),
42 '9': new Input('privateActivityBondInterest'),
43 '10': new Input('marketDiscount'),
44 '11': new Input('bondPremium'),
45 '12': new Input('bondPremiumOnTreas'),
46 '13': new Input('bondPremiumOnTaxExempt')
47 };
48 };