TorbatYar/backend/services/accounting/app/schemas/posting.py
Mortezakoohjani 12c8615615 Ship enterprise Accounting FE/API with CRUD parity and production wiring.
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>
2026-07-24 15:26:43 +03:30

82 lines
1.9 KiB
Python

"""Posting DTOs."""
from __future__ import annotations
from datetime import date, datetime
from decimal import Decimal
from uuid import UUID
from pydantic import BaseModel, Field
from app.models.types import VoucherStatus
from app.schemas.common import ORMBase
class VoucherLineCreate(BaseModel):
account_id: UUID
debit: Decimal = Decimal("0")
credit: Decimal = Decimal("0")
description: str | None = None
cost_center_id: UUID | None = None
project_id: UUID | None = None
class VoucherCreate(BaseModel):
fiscal_period_id: UUID
voucher_number: str = Field(max_length=50)
voucher_date: date
description: str | None = None
reference_number: str | None = None
source_module: str | None = None
lines: list[VoucherLineCreate] = Field(min_length=2)
class VoucherUpdate(BaseModel):
voucher_date: date | None = None
description: str | None = None
reference_number: str | None = None
lines: list[VoucherLineCreate] | None = Field(default=None, min_length=2)
class VoucherLineRead(ORMBase):
id: UUID
line_number: int
account_id: UUID
debit: Decimal
credit: Decimal
description: str | None
cost_center_id: UUID | None = None
project_id: UUID | None = None
class VoucherRead(ORMBase):
id: UUID
tenant_id: UUID
fiscal_period_id: UUID
voucher_number: str
voucher_date: date
status: VoucherStatus
description: str | None
total_debit: Decimal
total_credit: Decimal
posted_at: datetime | None
lines: list[VoucherLineRead] = []
class PostRequest(BaseModel):
source_module: str | None = None
class ReverseRequest(BaseModel):
reversal_date: date | None = None
class AuditLogRead(ORMBase):
id: UUID
tenant_id: UUID
operation: str
actor_user_id: str
voucher_number: str | None
resource_type: str
resource_id: str
created_at: datetime