import { Amount } from '../../../commonStateTypes/amount'; import { FetchedState, ID } from '../../../commonStateTypes/common'; import { CreateInvoiceRequest } from './createInvoicePayload'; /** * A single line item in the create-invoice form draft. Amounts are USD values * (whole units, e.g. dollars) held via the `Amount` interface — never minor * units. `quantity` is kept as a raw string to mirror the form's numeric input. */ export interface InvoicingCreateInvoiceFormLineItem { description: string; quantity: string; taxAmount: Amount; unitAmount: Amount; } /** * Draft form state for the create-invoice form. Held in CES so the form flows * its data straight from here (camelCase, no snake_case rename in web-c). * Create-only, so there is a single draft. `invoiceDate` / `dueDate` are ISO * `YYYY-MM-DD` strings; amounts are USD via `Amount` (no cents conversion). */ export interface InvoicingCreateInvoiceFormLocalData { customerId: string; invoiceType: 'one_time'; lineItems: InvoicingCreateInvoiceFormLineItem[]; memo: string; netTermDays: number; poNumber: string; dueDate?: string; invoiceDate?: string; } export interface CreateInvoiceState extends FetchedState { formDraft: InvoicingCreateInvoiceFormLocalData; createdInvoiceId?: ID; request?: CreateInvoiceRequest; }