Add FY-wise Tally data paths to engagement workspace
This commit is contained in:
@@ -435,6 +435,32 @@ def build_year_wise_relative_path(db: Session, engagement: ClientServiceSubscrip
|
||||
return Path(fy) / "Clients" / letter / client_folder / service_category / period / doc_type / stored_filename
|
||||
|
||||
|
||||
def build_tally_data_relative_path(
|
||||
db: Session,
|
||||
engagement: ClientServiceSubscription,
|
||||
document: EngagementDocument,
|
||||
version_no: int,
|
||||
original_filename: str,
|
||||
financial_year: str,
|
||||
) -> Path:
|
||||
"""Build the local-storage target for an uploaded Tally dataset.
|
||||
|
||||
Tally data is engagement-level reference data, but it is deliberately stored
|
||||
under the selected financial year so current-year and prior-year datasets can
|
||||
coexist and be compared without changing the engagement/task workflow.
|
||||
"""
|
||||
client = getattr(engagement, "client", None) or db.get(Client, engagement.client_id)
|
||||
fy = sanitize_segment(f"FY{financial_year}", "FY")
|
||||
letter, client_folder = client_folder_parts(client, engagement.client_id)
|
||||
stored_filename = build_versioned_filename(
|
||||
original_filename,
|
||||
document_id=document.id,
|
||||
version_no=version_no,
|
||||
engagement_code=sanitize_segment(f"ENG-{engagement.id}-TALLY", "ENGAGEMENT"),
|
||||
)
|
||||
return Path(fy) / "Clients" / letter / client_folder / "Accounting" / "Tally Data" / stored_filename
|
||||
|
||||
|
||||
def build_permanent_relative_path(db: Session, client: Client, document: PermanentClientDocument, version_no: int, original_filename: str) -> Path:
|
||||
letter, client_folder = client_folder_parts(client, document.client_id)
|
||||
category = sanitize_segment(document.category, "Other Permanent Documents")
|
||||
@@ -1150,6 +1176,7 @@ def save_uploaded_revision(
|
||||
user,
|
||||
existing_document_id: int | None = None,
|
||||
udin_required: bool | str | None = None,
|
||||
tally_financial_year: str | None = None,
|
||||
) -> EngagementDocument:
|
||||
original_filename = Path(upload_file.filename or "document.bin").name
|
||||
document_type = document_type if document_type in DOCUMENT_TYPES else "GENERAL"
|
||||
@@ -1164,6 +1191,8 @@ def save_uploaded_revision(
|
||||
if description is not None:
|
||||
document.description = description.strip() or None
|
||||
document.document_type = document_type
|
||||
if tally_financial_year:
|
||||
document.financial_year = tally_financial_year
|
||||
document.udin_required = resolved_udin_required
|
||||
if resolved_udin_required and (document.udin_status or "not_required") == "not_required":
|
||||
document.udin_status = "pending"
|
||||
@@ -1175,7 +1204,7 @@ def save_uploaded_revision(
|
||||
branch_id=engagement.branch_id,
|
||||
client_id=engagement.client_id,
|
||||
engagement_id=engagement.id,
|
||||
financial_year=engagement.financial_year,
|
||||
financial_year=tally_financial_year or engagement.financial_year,
|
||||
assessment_year=engagement.assessment_year,
|
||||
document_code="PENDING",
|
||||
document_type=document_type,
|
||||
@@ -1192,7 +1221,12 @@ def save_uploaded_revision(
|
||||
document.document_code = create_document_code(db, engagement.tenant_id, engagement.id, document.id)
|
||||
|
||||
next_version_no = int(document.current_version_no or 0) + 1
|
||||
rel_path = build_year_wise_relative_path(db, engagement, document, next_version_no, original_filename)
|
||||
if tally_financial_year:
|
||||
rel_path = build_tally_data_relative_path(
|
||||
db, engagement, document, next_version_no, original_filename, tally_financial_year
|
||||
)
|
||||
else:
|
||||
rel_path = build_year_wise_relative_path(db, engagement, document, next_version_no, original_filename)
|
||||
abs_path = DEFAULT_STORAGE_ROOT / rel_path
|
||||
try:
|
||||
abs_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
Reference in New Issue
Block a user