UNPKG

@accounter/server

Version:
406 lines (404 loc) • 14.9 kB
import type { UseCaseSpec } from '../../../fixtures/fixture-spec.js'; import { CountryCode, Currency } from '../../../shared/enums.js'; import { makeUUID } from '../../helpers/deterministic-uuid.js'; /** * Monthly Expense Use-Case: Foreign Currency Transaction * * Demonstrates a US-based supplier invoice paid via bank transfer with * exchange rate conversion from USD to ILS. This use-case validates: * - Foreign currency transaction handling * - Exchange rate application * - Cross-border payment processing * - Ledger generation with currency conversion */ export const monthlyExpenseForeignCurrency: UseCaseSpec = { id: 'monthly-expense-foreign-currency', name: 'Monthly Expense (Foreign Currency)', description: 'US-based supplier invoice paid via bank transfer with exchange rate conversion from USD to ILS. Validates foreign currency handling and ledger generation.', category: 'expenses', fixtures: { businesses: [ { id: makeUUID('business', 'us-supplier-acme-llc'), name: 'Acme Consulting LLC', country: CountryCode['United States of America (the)'], canSettleWithReceipt: false, ownerId: '{{ADMIN_BUSINESS_ID}}', }, ], taxCategories: [ { id: makeUUID('tax-category', 'consulting-expenses'), name: 'Consulting Expenses', ownerId: '{{ADMIN_BUSINESS_ID}}', }, ], financialAccounts: [ { id: makeUUID('financial-account', 'bank-usd-account'), accountNumber: '123-456-7890', type: 'BANK_ACCOUNT', currency: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', taxCategoryMappings: [ { taxCategoryId: makeUUID('tax-category', 'consulting-expenses'), currency: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, ], }, ], charges: [ { id: makeUUID('charge', 'consulting-invoice-2024-01'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'January consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-02'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'February consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-03'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'March consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-04'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'April consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-05'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'May consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-06'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'June consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-07'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'July consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-08'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'August consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-09'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'September consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-10'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'October consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-11'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'November consulting services', }, { id: makeUUID('charge', 'consulting-invoice-2024-12'), ownerId: '{{ADMIN_BUSINESS_ID}}', userDescription: 'December consulting services', }, ], transactions: [ { id: makeUUID('transaction', 'consulting-payment-usd-01'), chargeId: makeUUID('charge', 'consulting-invoice-2024-01'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-01-15', debitDate: '2024-01-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-02'), chargeId: makeUUID('charge', 'consulting-invoice-2024-02'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-02-15', debitDate: '2024-02-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-03'), chargeId: makeUUID('charge', 'consulting-invoice-2024-03'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-03-15', debitDate: '2024-03-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-04'), chargeId: makeUUID('charge', 'consulting-invoice-2024-04'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-04-15', debitDate: '2024-04-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-05'), chargeId: makeUUID('charge', 'consulting-invoice-2024-05'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-05-15', debitDate: '2024-05-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-06'), chargeId: makeUUID('charge', 'consulting-invoice-2024-06'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-06-15', debitDate: '2024-06-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-07'), chargeId: makeUUID('charge', 'consulting-invoice-2024-07'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-07-15', debitDate: '2024-07-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-08'), chargeId: makeUUID('charge', 'consulting-invoice-2024-08'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-08-15', debitDate: '2024-08-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-09'), chargeId: makeUUID('charge', 'consulting-invoice-2024-09'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-09-15', debitDate: '2024-09-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-10'), chargeId: makeUUID('charge', 'consulting-invoice-2024-10'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-10-15', debitDate: '2024-10-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-11'), chargeId: makeUUID('charge', 'consulting-invoice-2024-11'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-11-15', debitDate: '2024-11-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('transaction', 'consulting-payment-usd-12'), chargeId: makeUUID('charge', 'consulting-invoice-2024-12'), businessId: makeUUID('business', 'us-supplier-acme-llc'), amount: '-500.00', currency: Currency.Usd, eventDate: '2024-12-15', debitDate: '2024-12-15', accountNumber: '123-456-7890', ownerId: '{{ADMIN_BUSINESS_ID}}', }, ], documents: [ { id: makeUUID('document', 'consulting-invoice-inv-2024-01-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-01'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-01-15', type: 'INVOICE', date: '2024-01-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-02-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-02'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-02-15', type: 'INVOICE', date: '2024-02-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-03-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-03'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-03-15', type: 'INVOICE', date: '2024-03-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-04-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-04'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-04-15', type: 'INVOICE', date: '2024-04-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-05-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-05'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-05-15', type: 'INVOICE', date: '2024-05-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-06-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-06'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-06-15', type: 'INVOICE', date: '2024-06-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-07-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-07'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-07-15', type: 'INVOICE', date: '2024-07-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-08-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-08'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-08-15', type: 'INVOICE', date: '2024-08-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-09-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-09'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-09-15', type: 'INVOICE', date: '2024-09-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-10-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-10'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-10-15', type: 'INVOICE', date: '2024-10-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-11-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-11'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-11-15', type: 'INVOICE', date: '2024-11-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, { id: makeUUID('document', 'consulting-invoice-inv-2024-12-15'), chargeId: makeUUID('charge', 'consulting-invoice-2024-12'), creditorId: makeUUID('business', 'us-supplier-acme-llc'), debtorId: '{{ADMIN_BUSINESS_ID}}', serialNumber: 'INV-2024-12-15', type: 'INVOICE', date: '2024-12-01', totalAmount: '500.00', currencyCode: Currency.Usd, ownerId: '{{ADMIN_BUSINESS_ID}}', }, ], }, metadata: { author: 'demo-team', createdAt: '2024-01-01', updatedAt: '2024-01-01', }, expectations: { ledgerRecordCount: 24, }, };