Add FY-wise Tally data paths to engagement workspace

This commit is contained in:
A R R R Associates
2026-09-02 13:06:34 +05:30
parent ec00a76ace
commit a0db6cebfc
4 changed files with 175 additions and 9 deletions
+35
View File
@@ -101,6 +101,20 @@ from app.modules.services.execution import recalculate_task_aqmm_status
router = APIRouter(prefix="/documents", tags=["documents-ui"])
logger = logging.getLogger("audit_storage_agent.documents_ui")
_TALLY_MARKER_PREFIX = "ERP_TALLY_DATA_FY:"
def _previous_financial_year(financial_year: str) -> str:
match = re.match(r"^(\d{4})-(\d{2}|\d{4})$", (financial_year or "").strip())
if not match:
return ""
start = int(match.group(1))
return f"{start - 1:04d}-{start % 100:02d}"
def _allowed_tally_financial_years(engagement) -> set[str]:
current = str(getattr(engagement, "financial_year", "") or "").strip()
previous = _previous_financial_year(current)
return {year for year in (current, previous) if year}
def _normalise_document_text(value) -> str:
return re.sub(r"[^a-z0-9]+", " ", str(value or "").lower()).strip()
@@ -359,6 +373,8 @@ def upload_engagement_document(
remarks: str | None = Form(None),
existing_document_id: str | None = Form(None),
udin_required: str | None = Form(None),
upload_target: str | None = Form(None),
tally_financial_year: str | None = Form(None),
file: UploadFile = File(...),
return_to: str = Form(""),
csrf_token: str = Form(...),
@@ -381,6 +397,24 @@ def upload_engagement_document(
return RedirectResponse(url=return_target if return_to else f"/documents/engagements/{engagement.id}?year_locked=1", status_code=303)
if not file or not file.filename:
return RedirectResponse(url=return_target if return_to else f"/documents/engagements/{engagement_id}?error=missing_file", status_code=303)
is_tally_upload = (upload_target or "").strip().lower() == "tally"
selected_tally_fy = (tally_financial_year or "").strip() if is_tally_upload else ""
if is_tally_upload:
if selected_tally_fy not in _allowed_tally_financial_years(engagement):
return RedirectResponse(url=return_target if return_to else f"/documents/engagements/{engagement_id}?error=invalid_tally_year", status_code=303)
title = f"Tally Data - FY {selected_tally_fy}"
description = f"{_TALLY_MARKER_PREFIX}{selected_tally_fy}"
document_type = "GENERAL"
if existing_document_id:
existing_doc = get_document(db, int(existing_document_id))
existing_marker = str(getattr(existing_doc, "description", "") or "") if existing_doc else ""
if (
not existing_doc
or int(getattr(existing_doc, "engagement_id", 0) or 0) != int(engagement.id)
or existing_marker.strip() != f"{_TALLY_MARKER_PREFIX}{selected_tally_fy}"
):
return RedirectResponse(url=return_target if return_to else f"/documents/engagements/{engagement_id}?error=invalid_tally_document", status_code=303)
try:
doc = save_uploaded_revision(
db,
@@ -393,6 +427,7 @@ def upload_engagement_document(
user=user,
existing_document_id=int(existing_document_id) if existing_document_id else None,
udin_required=_bool_from_form(udin_required),
tally_financial_year=selected_tally_fy or None,
)
log_document_access(db, action="upload", result="success", user=user, request=request, document=doc)
db.commit()