Add FY-wise Tally data paths to engagement workspace
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user