Integrate UDIN controls into final document workflow
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from datetime import date, datetime, timezone
|
||||
from decimal import Decimal
|
||||
|
||||
from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, String, Text, UniqueConstraint
|
||||
from sqlalchemy import Boolean, Date, DateTime, ForeignKey, Integer, Numeric, String, Text, UniqueConstraint
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.core.db.common import CommonBase
|
||||
@@ -38,6 +39,29 @@ class EngagementDocument(CommonBase):
|
||||
description: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
current_version_no: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
status: Mapped[str] = mapped_column(String(30), nullable=False, default="active", index=True)
|
||||
|
||||
# Phase 1 - UDIN and final document release controls.
|
||||
# These fields convert the existing engagement document table into the UDIN
|
||||
# source register. A separate manual UDIN register is intentionally avoided:
|
||||
# partner-wise/client-wise/FY-wise reports are generated from these workflow
|
||||
# fields.
|
||||
udin_required: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, index=True)
|
||||
udin_status: Mapped[str] = mapped_column(String(30), nullable=False, default="not_required", index=True)
|
||||
udin_number: Mapped[str | None] = mapped_column(String(30), nullable=True, index=True)
|
||||
udin_date: Mapped[date | None] = mapped_column(Date, nullable=True, index=True)
|
||||
udin_document_date: Mapped[date | None] = mapped_column(Date, nullable=True)
|
||||
udin_document_type: Mapped[str | None] = mapped_column(String(120), nullable=True)
|
||||
udin_financial_year: Mapped[str | None] = mapped_column(String(9), nullable=True, index=True)
|
||||
udin_amount: Mapped[Decimal | None] = mapped_column(Numeric(14, 2), nullable=True)
|
||||
udin_generated_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True, index=True)
|
||||
udin_verified_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
udin_notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
final_release_status: Mapped[str] = mapped_column(String(30), nullable=False, default="draft", index=True)
|
||||
released_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True, index=True)
|
||||
released_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
release_notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
is_deleted: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, index=True)
|
||||
deleted_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
deleted_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True)
|
||||
@@ -244,6 +268,29 @@ class PermanentClientDocument(CommonBase):
|
||||
description: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
current_version_no: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
status: Mapped[str] = mapped_column(String(30), nullable=False, default="active", index=True)
|
||||
|
||||
# Phase 1 - UDIN and final document release controls.
|
||||
# These fields convert the existing engagement document table into the UDIN
|
||||
# source register. A separate manual UDIN register is intentionally avoided:
|
||||
# partner-wise/client-wise/FY-wise reports are generated from these workflow
|
||||
# fields.
|
||||
udin_required: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, index=True)
|
||||
udin_status: Mapped[str] = mapped_column(String(30), nullable=False, default="not_required", index=True)
|
||||
udin_number: Mapped[str | None] = mapped_column(String(30), nullable=True, index=True)
|
||||
udin_date: Mapped[date | None] = mapped_column(Date, nullable=True, index=True)
|
||||
udin_document_date: Mapped[date | None] = mapped_column(Date, nullable=True)
|
||||
udin_document_type: Mapped[str | None] = mapped_column(String(120), nullable=True)
|
||||
udin_financial_year: Mapped[str | None] = mapped_column(String(9), nullable=True, index=True)
|
||||
udin_amount: Mapped[Decimal | None] = mapped_column(Numeric(14, 2), nullable=True)
|
||||
udin_generated_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True, index=True)
|
||||
udin_verified_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
udin_notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
final_release_status: Mapped[str] = mapped_column(String(30), nullable=False, default="draft", index=True)
|
||||
released_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True, index=True)
|
||||
released_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
release_notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
is_deleted: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, index=True)
|
||||
deleted_at_utc: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
deleted_by_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id", ondelete="SET NULL"), nullable=True)
|
||||
|
||||
Reference in New Issue
Block a user