Adds accounting-service PATCH/archive, fiscal helpers, COA templates and setup status, plus SuperApp Accounting UI (DS, scoreboard, masters, vouchers, ledger, ops modules) with session refresh and HTTPS public API URLs. Co-authored-by: Cursor <cursoragent@cursor.com>
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
"""Ledger repositories."""
|
|
from __future__ import annotations
|
|
|
|
from uuid import UUID
|
|
|
|
from sqlalchemy import select
|
|
|
|
from app.models.ledger import (
|
|
GeneralLedger,
|
|
LedgerBalance,
|
|
TrialBalanceSnapshot,
|
|
)
|
|
from app.repositories.base import TenantBaseRepository
|
|
|
|
|
|
class GeneralLedgerRepository(TenantBaseRepository[GeneralLedger]):
|
|
model = GeneralLedger
|
|
|
|
async def list_by_account_period(
|
|
self, tenant_id: UUID, account_id: UUID, fiscal_period_id: UUID
|
|
):
|
|
stmt = (
|
|
select(GeneralLedger)
|
|
.where(
|
|
GeneralLedger.tenant_id == tenant_id,
|
|
GeneralLedger.account_id == account_id,
|
|
GeneralLedger.fiscal_period_id == fiscal_period_id,
|
|
)
|
|
.order_by(GeneralLedger.entry_date)
|
|
)
|
|
result = await self.session.execute(stmt)
|
|
return result.scalars().all()
|
|
|
|
|
|
class LedgerBalanceRepository(TenantBaseRepository[LedgerBalance]):
|
|
model = LedgerBalance
|
|
|
|
async def get_by_account_period(
|
|
self, tenant_id: UUID, account_id: UUID, fiscal_period_id: UUID
|
|
) -> LedgerBalance | None:
|
|
stmt = select(LedgerBalance).where(
|
|
LedgerBalance.tenant_id == tenant_id,
|
|
LedgerBalance.account_id == account_id,
|
|
LedgerBalance.fiscal_period_id == fiscal_period_id,
|
|
)
|
|
result = await self.session.execute(stmt)
|
|
return result.scalar_one_or_none()
|
|
|
|
async def list_by_period(self, tenant_id: UUID, fiscal_period_id: UUID):
|
|
stmt = select(LedgerBalance).where(
|
|
LedgerBalance.tenant_id == tenant_id,
|
|
LedgerBalance.fiscal_period_id == fiscal_period_id,
|
|
)
|
|
result = await self.session.execute(stmt)
|
|
return result.scalars().all()
|
|
|
|
|
|
class TrialBalanceSnapshotRepository(TenantBaseRepository[TrialBalanceSnapshot]):
|
|
model = TrialBalanceSnapshot
|