UNPKG

@accounter/server

Version:
154 lines (153 loc) 3.43 kB
import type { LedgerRecord } from '../demo-fixtures/validators/types.js'; import type { financial_account_type } from '../modules/financial-accounts/types.js'; import type { CountryCode, Currency } from '../shared/enums.js'; /** * Tax Category Mapping for Financial Accounts */ export interface TaxCategoryMapping { taxCategoryId: string; currency: Currency; ownerId: string; } /** * Business Entity Fixture */ export interface BusinessFixture { id: string; name: string; country: CountryCode; canSettleWithReceipt: boolean; ownerId: string; } /** * Tax Category Fixture */ export interface TaxCategoryFixture { id: string; name: string; ownerId: string; } /** * Financial Account Fixture */ export interface FinancialAccountFixture { id: string; accountNumber: string; type: financial_account_type; currency: Currency; taxCategoryMappings?: TaxCategoryMapping[]; ownerId: string; } /** * Charge Fixture */ export interface ChargeFixture { id: string; ownerId: string; userDescription: string; } /** * Transaction Fixture */ export interface TransactionFixture { id: string; chargeId: string; businessId: string; amount: string; currency: Currency; eventDate: string; debitDate: string; accountNumber: string; ownerId: string; } /** * Document Fixture */ export interface DocumentFixture { id: string; chargeId: string; creditorId: string; debtorId: string; serialNumber: string; type: string; date: string; totalAmount: string; currencyCode: Currency; ownerId: string; } /** * Tag Fixture (Optional) */ export interface TagFixture { id: string; name: string; description?: string; ownerId: string; } /** * Fixture Collection for a Use-Case */ export interface FixtureSpec { businesses: BusinessFixture[]; taxCategories: TaxCategoryFixture[]; financialAccounts: FinancialAccountFixture[]; charges: ChargeFixture[]; transactions: TransactionFixture[]; documents: DocumentFixture[]; tags?: TagFixture[]; } /** * Use-Case Metadata */ export interface UseCaseMetadata { author: string; createdAt: string; updatedAt: string; volumeMultiplier?: number; } /** * Ledger Expectations for Validation */ export interface UseCaseExpectations { ledgerRecordCount: number; totalDebitILS?: string; totalCreditILS?: string; } /** * Use-Case Category */ export type UseCaseCategory = 'expenses' | 'income' | 'equity' | 'payroll' | 'other'; /** * Complete Use-Case Specification */ export interface UseCaseSpec { id: string; name: string; description: string; category: UseCaseCategory; fixtures: FixtureSpec; metadata: UseCaseMetadata; expectations?: UseCaseExpectations; } /** * Fixture Collection for a Use-Case */ export interface ExtendedFixtureSpec { businesses: BusinessFixture[]; taxCategories: TaxCategoryFixture[]; financialAccounts: FinancialAccountFixture[]; charges: ChargeFixture[]; transactions: TransactionFixture[]; documents: DocumentFixture[]; meta?: { id: string; description?: string; version?: string; [key: string]: unknown; }; tags?: TagFixture[]; expectations?: UseCaseExpectations & { ledger?: LedgerRecord[]; }; placeholders?: Record<string, string>; }