1 import Form, { SupportsMultipleCopies } from '../Form';
2 import { Line, InputLine } from '../Line';
3 import Person from '../Person';
11 export interface CodeAndAmount {
16 export interface W2Input {
20 fedIncomeTax?: number;
21 socialSecurityWages?: number;
22 socialSecuirtyTax?: number;
23 medicareWages?: number;
25 socialSecurityTips?: number;
26 allocatedTips?: number;
27 dependentCareBenefits?: number;
28 nonqualifiedPlans?: number;
29 box12?: CodeAndAmount[];
31 box14?: CodeAndAmount[];
34 class Input<T extends keyof W2Input> extends InputLine<W2Input, T> {};
36 export default class W2 extends Form<W2Input> implements SupportsMultipleCopies {
37 get name(): string { return 'W-2'; }
39 aggregate(f: Form[]): this { return null; }
41 protected getLines(): Line<any>[] {
43 new Input('c', 'employer', 'Employer name'),
44 new Input('e', 'employee', 'Emplyee name'),
45 new Input('1', 'wages', 'Wages, tips, other compensation'),
46 new Input('2', 'fedIncomeTax', 'Federal income tax withheld'),
47 new Input('3', 'socialSecurityWages', 'Social security wages'),
48 new Input('4', 'socialSecuirtyTax', 'Social security tax withheld'),
49 new Input('5', 'medicareWages', 'Medicare wages and tips'),
50 new Input('6', 'medicareTax', 'Medicare tax withheld'),
51 new Input('7', 'socialSecurityTips', 'Social security tips'),
52 new Input('8', 'allocatedTips', 'Allocated tips'),
53 new Input('10', 'dependentCareBenefits', 'Dependent care benefits'),
54 new Input('11', 'nonqualifiedPlans','Nonqualified plans'),
55 new Input('12', 'box12', 'Box 12'),
56 new Input('13', 'box13', 'Box 13'),
57 new Input('14', 'box14', 'Other'),