/**
 * 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