diff --git a/packages/application/src/finance-command-service.test.ts b/packages/application/src/finance-command-service.test.ts index 1f3e452..4aae997 100644 --- a/packages/application/src/finance-command-service.test.ts +++ b/packages/application/src/finance-command-service.test.ts @@ -450,4 +450,36 @@ describe('createFinanceCommandService', () => { 102000n ]) }) + + test('generateDashboard prefers the open cycle over a later latest cycle', async () => { + const repository = new FinanceRepositoryStub() + repository.members = [ + { + id: 'stas', + telegramUserId: '100', + displayName: 'Stas', + rentShareWeight: 1, + isAdmin: true + } + ] + repository.openCycleRecord = { + id: 'cycle-2026-03', + period: '2026-03', + currency: 'GEL' + } + repository.latestCycleRecord = { + id: 'cycle-2026-04', + period: '2026-04', + currency: 'GEL' + } + repository.rentRule = { + amountMinor: 70000n, + currency: 'USD' + } + + const service = createService(repository) + const dashboard = await service.generateDashboard() + + expect(dashboard?.period).toBe('2026-03') + }) }) diff --git a/packages/application/src/finance-command-service.ts b/packages/application/src/finance-command-service.ts index 8afbeb5..5182f02 100644 --- a/packages/application/src/finance-command-service.ts +++ b/packages/application/src/finance-command-service.ts @@ -58,7 +58,7 @@ async function getCycleByPeriodOrLatest( return repository.getCycleByPeriod(BillingPeriod.fromString(periodArg).toString()) } - return repository.getLatestCycle() + return (await repository.getOpenCycle()) ?? repository.getLatestCycle() } function billingPeriodLockDate(period: BillingPeriod, day: number): Temporal.PlainDate {