]> src.bluestatic.org Git - ustaxlib.git/blob - src/fed2019/Form1099B.ts
Add Form 1116.
[ustaxlib.git] / src / fed2019 / Form1099B.ts
1 import Form from '../Form';
2 import Person from '../Person';
3 import TaxReturn from '../TaxReturn';
4 import { InputLine } from '../Line';
5
6 export enum GainType {
7 ShortTerm = 'ST',
8 LongTerm = 'LT',
9 Ordinary = 'O',
10 };
11
12 export interface SpecialProceeds {
13 collectibles?: boolean;
14 qof?: boolean;
15 };
16
17 export interface IRSReporting {
18 grossProceeds?: boolean;
19 netProceeds?: boolean;
20 };
21
22 export interface Form1099BInput {
23 payer: string;
24 payee: Person;
25 description: string;
26 dateAcquired?: string;
27 dateSold?: string;
28 proceeds: number;
29 costBasis: number;
30 accruedMarketDiscount?: number;
31 washSaleLossDisallowed?: number;
32 gainType: GainType;
33 specialProceeds?: SpecialProceeds;
34 fedIncomeTax?: number;
35 nonCoveredSecurity?: boolean;
36 irsReporting?: IRSReporting;
37 disallowedLoss?: boolean;
38 profitOnClosedContracts?: number;
39 unrealizedProfitOnOpenContractsCurrentTY?: number;
40 unrealizedProfitOnOpenContractsNextTY?: number;
41 aggregateProfitOnContracts?: number;
42 basisReportedToIRS?: boolean;
43 bartering?: number;
44 };
45
46 class Input<T extends keyof Form1099BInput> extends InputLine<Form1099BInput, T> {};
47
48 export default class Form1099B extends Form<Form1099B['_lines'], Form1099BInput> {
49 readonly name = '1099-B';
50
51 readonly supportsMultipleCopies = true;
52
53 protected readonly _lines = {
54 'payer': new Input('payer'),
55 'recipient': new Input('payee'),
56 '1a': new Input('description'),
57 '1b': new Input('dateAcquired'),
58 '1c': new Input('dateSold'),
59 '1d': new Input('proceeds'),
60 '1e': new Input('costBasis'),
61 '1f': new Input('accruedMarketDiscount'),
62 '1g': new Input('washSaleLossDisallowed'),
63 '2': new Input('gainType'),
64 '3': new Input('specialProceeds'),
65 '4': new Input('fedIncomeTax'),
66 '5': new Input('nonCoveredSecurity'),
67 '6': new Input('irsReporting'),
68 '7': new Input('disallowedLoss'),
69 '8': new Input('profitOnClosedContracts'),
70 '9': new Input('unrealizedProfitOnOpenContractsCurrentTY'),
71 '10': new Input('unrealizedProfitOnOpenContractsNextTY'),
72 '11': new Input('aggregateProfitOnContracts'),
73 '12': new Input('basisReportedToIRS'),
74 '13': new Input('bartering')
75 };
76 };