From 70524f4f2cb7875148cdf3d191465180f2fbe47b Mon Sep 17 00:00:00 2001 From: Mahdi Date: Sun, 15 Nov 2026 16:43:25 +0330 Subject: [PATCH] Allow treasury payments when account balance goes negative. Remove insufficient-balance blocks on document create, settle, and party collection so income/expense posting can overdraw an account. Co-authored-by: Cursor --- apps/api/src/treasury/treasury.service.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/apps/api/src/treasury/treasury.service.ts b/apps/api/src/treasury/treasury.service.ts index 6a3abc6..0899246 100644 --- a/apps/api/src/treasury/treasury.service.ts +++ b/apps/api/src/treasury/treasury.service.ts @@ -635,12 +635,6 @@ export class TreasuryService { if (input.accountId) { const account = await this.requireAccount(actor.organizationId, input.accountId, actor); if (!account.isActive) throw new BadRequestException('حساب غیرفعال است.'); - if (input.kind === 'expense' && settle.greaterThan(0)) { - const balance = await this.accountBalance(account.id); - if (balance.lessThan(settle)) { - throw new BadRequestException('موجودی حساب برای این پرداخت کافی نیست.'); - } - } } const bookedAt = startOfDay(input.bookedAt) ?? new Date(); const settlement = input.settlement === true; @@ -983,12 +977,6 @@ export class TreasuryService { if (amount.greaterThan(available)) { throw new BadRequestException('مبلغ از ماندهٔ سندهای باز این طرف حساب بیشتر است.'); } - if (input.kind === 'expense') { - const balance = await this.accountBalance(account.id); - if (balance.lessThan(amount)) { - throw new BadRequestException('موجودی حساب برای این پرداخت کافی نیست.'); - } - } const occurredAt = startOfDay(input.occurredAt) ?? new Date(); let left = amount; const touched: string[] = []; @@ -1128,12 +1116,6 @@ export class TreasuryService { } const account = await this.requireAccount(actor.organizationId, input.accountId, actor); if (!account.isActive) throw new BadRequestException('حساب غیرفعال است.'); - if (doc.kind === 'expense') { - const balance = await this.accountBalance(account.id); - if (balance.lessThan(amount)) { - throw new BadRequestException('موجودی حساب برای این پرداخت کافی نیست.'); - } - } const nextSettled = settled.plus(amount); const status = nextSettled.equals(doc.amount) ? 'settled' : 'partial'; await this.prisma.$transaction([