Wire DocumentNumberSequence allocator, ledger-based subsidiary/detail reports, and posted-voucher reopen flow without mock ops forms. Co-authored-by: Cursor <cursoragent@cursor.com>
82 lines
2.0 KiB
Python
82 lines
2.0 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 | None = Field(default=None, 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
|