1 // Copyright 2020 Blue Static <https://www.bluestatic.org>
2 // This program is free software licensed under the GNU General Public License,
3 // version 3.0. The full text of the license can be found in LICENSE.txt.
4 // SPDX-License-Identifier: GPL-3.0-only
6 import { Form, Person, TaxReturn } from '../core';
7 import { InputLine } from '../core/Line';
9 export interface Form1099BRow {
11 dateAcquired?: string;
15 accruedMarketDiscount?: number;
16 washSaleLossDisallowed?: number;
17 fedIncomeTax?: number;
19 adjustments?: number; // Not reported on 1099-B, but entered as part of Form8994.
22 export interface Form1099BInput {
26 shortTermBasisReported?: Form1099BRow[]; // Box A checked.
27 shortTermBasisUnreported?: Form1099BRow[]; // Box B checked.
29 longTermBasisReported?: Form1099BRow[]; // Box D checked.
30 longTermBasisUnreported?: Form1099BRow[]; // Box E checked.
32 // For unreported securities, create your own 1099-B.
33 shortTermUnreported?: Form1099BRow[]; // Box C checked.
34 longTermUnreported?: Form1099BRow[]; // Box F checked.
37 class Input<T extends keyof Form1099BInput> extends InputLine<Form1099BInput, T> {};
39 export default class Form1099B extends Form<Form1099B['lines'], Form1099BInput> {
40 readonly name = '1099-B';
42 readonly supportsMultipleCopies = true;
44 person() { return this.getInput('payee'); }
47 'payer': new Input('payer'),
48 'recipient': new Input('payee'),
49 'shortTermBasisReported': new Input('shortTermBasisReported'),
50 'shortTermBasisUnreported': new Input('shortTermBasisUnreported'),
51 'longTermBasisReported': new Input('longTermBasisReported'),
52 'longTermBasisUnreported': new Input('longTermBasisUnreported'),
53 'shortTermUnreported': new Input('shortTermUnreported'),
54 'longTermUnreported': new Input('longTermUnreported'),