UNPKG

@accounter/server

Version:
76 lines 2.8 kB
/** * Charge factory for test fixtures * * Creates minimal charge objects ready for database insertion. * * Based on charges table schema from migrations and charges.provider.ts: * - Required: owner_id * - Optional: type, accountant_status, user_description, tax_category_id, optional_vat, documents_optional_flag, is_property * * @see packages/server/src/modules/charges/providers/charges.provider.ts (generateCharge query) * @see packages/migrations/src/actions/*-charges-*.ts (migrations) */ import { makeUUID, makeUUIDLegacy } from '../../demo-fixtures/helpers/deterministic-uuid.js'; /** * Create a charge for test fixtures * * @param params - Required fields (owner_id, tax_category_id) and optional user_description * @param overrides - Optional overrides for any charge field * @returns Charge object ready for database insertion * * @remarks * - owner_id is required (must be a valid business UUID) * - tax_category_id defaults to deterministic UUID if not provided * - user_description defaults to null (will be auto-generated by database if needed) * - type defaults to null (database will determine based on related records) * - accountant_status defaults to 'PENDING' (database requires NOT NULL) * - optional_vat defaults to false (database requires NOT NULL) * - documents_optional_flag defaults to false (database requires NOT NULL) * - is_property defaults to null (property-related charges can override to true) * - id defaults to deterministic UUID if not provided * * @example * ```typescript * // Minimal charge with required fields * const charge = createCharge({ * owner_id: makeUUID('business', 'test-owner'), * tax_category_id: makeUUID('tax-category', 'tax-cat-1'), * }); * * // Charge with user description * const descCharge = createCharge( * { * owner_id: makeUUID('business', 'test-owner'), * tax_category_id: makeUUID('tax-category', 'tax-cat-1'), * user_description: 'Office supplies purchase', * } * ); * * // Charge with overrides * const customCharge = createCharge( * { * owner_id: makeUUID('business', 'test-owner'), * tax_category_id: makeUUID('tax-category', 'tax-cat-1'), * }, * { * type: 'PAYROLL', * accountant_status: 'REVIEWED', * optional_vat: true, * } * ); * ``` */ export function createCharge(params, overrides) { return { id: makeUUIDLegacy(), owner_id: params.owner_id, type: null, accountant_status: 'PENDING', user_description: params.user_description ?? null, tax_category_id: params.tax_category_id ?? makeUUID('tax-category', 'default-tax-category'), optional_vat: false, documents_optional_flag: false, ...overrides, }; } //# sourceMappingURL=charge.js.map