UNPKG

@accounter/server

Version:
105 lines 3.6 kB
/** * Document factory for test fixtures * * Creates minimal document objects ready for database insertion. * * Based on documents table schema from migrations: * - Required: charge_id, creditor_id, debtor_id, type, total_amount, currency_code, date * - Optional: serial_number, vat_amount, image_url, file_url, and other metadata * * @see packages/migrations/src/actions/2024-01-29T13-15-23.initial.ts (documents table) * @see packages/server/src/modules/documents/providers/documents.provider.ts (insertDocuments query) */ import { makeUUIDLegacy } from '../../demo-fixtures/helpers/deterministic-uuid.js'; /** * Create a document for test fixtures * * @param params - Required document fields * @param overrides - Optional overrides for any document field * @returns Document object ready for database insertion * * @remarks * - charge_id is required (links document to a charge) * - creditor_id is required (who receives money) * - debtor_id is required (who pays money) * - type is required (INVOICE, RECEIPT, INVOICE_RECEIPT, CREDIT_INVOICE, etc.) * - total_amount is required (document total amount, numeric/double precision) * - currency_code is required (e.g., 'ILS', 'USD', 'EUR') * - date is required (document date) * - serial_number defaults to null (document reference number) * - vat_amount defaults to null (will be calculated if needed) * - image_url defaults to null (scanned document image) * - file_url defaults to null (PDF or other file) * - id defaults to deterministic UUID if not provided * * @example * ```typescript * // Minimal invoice document * const invoice = createDocument({ * charge_id: makeUUID('charge', 'charge-1'), * creditor_id: makeUUID('business', 'supplier-1'), * debtor_id: makeUUID('business', 'my-business'), * type: 'INVOICE', * total_amount: 1000.0, * currency_code: 'ILS', * date: '2024-01-15', * }); * * // Receipt with VAT * const receipt = createDocument({ * charge_id: makeUUID('charge', 'charge-2'), * creditor_id: makeUUID('business', 'customer-1'), * debtor_id: makeUUID('business', 'my-business'), * type: 'RECEIPT', * total_amount: 500.0, * currency_code: 'USD', * date: new Date('2024-02-20'), * }, { * vat_amount: 85.47, * serial_number: 'RCP-2024-001', * }); * * // Invoice with full metadata * const detailedInvoice = createDocument( * { * charge_id: makeUUID('charge', 'charge-3'), * creditor_id: makeUUID('business', 'supplier-2'), * debtor_id: makeUUID('business', 'my-business'), * type: 'INVOICE', * total_amount: 2500.0, * currency_code: 'EUR', * date: '2024-03-10', * }, * { * serial_number: 'INV-2024-0123', * vat_amount: 427.35, * file_url: 'https://storage.example.com/invoices/inv-123.pdf', * exchange_rate_override: 3.85, * } * ); * ``` */ export function createDocument(params, overrides) { return { id: makeUUIDLegacy(), image_url: null, file_url: null, type: params.type, serial_number: null, date: params.date, total_amount: params.total_amount, currency_code: params.currency_code, vat_amount: null, charge_id: params.charge_id, debtor_id: params.debtor_id, creditor_id: params.creditor_id, vat_report_date_override: null, no_vat_amount: null, allocation_number: null, exchange_rate_override: null, file_hash: null, owner_id: params.owner_id, ...overrides, }; } //# sourceMappingURL=document.js.map