Skip to content

Add the paid/unpaid fee certificate and the fee structure behind it - #1999

Merged
vikrantwiz02 merged 4 commits into
FusionIIIT:prod/acad-reactfrom
vikrantwiz02:fee-certificate-and-structure
Sep 29, 2026
Merged

vikrantwiz02 merged 4 commits into
FusionIIIT:prod/acad-reactfrom
vikrantwiz02:fee-certificate-and-structure

Conversation

@vikrantwiz02

Copy link
Copy Markdown
Member

Paid / Unpaid Fee Certificate

Repeats the bonafide wording, continues the sentence after Jabalpur with the purpose the student applied under, and prints the semester-wise fee table. It is recorded in the same table as the bonafide certificate under a certificate_type, so no second table was needed — and each screen now lists only its own kind, including the PDF-by-id routes.

Paid is the default before the current semester and Unpaid after it; the current semester has no default and must be marked by hand. The rows are stored exactly as printed, so a later fee revision cannot rewrite a document already handed over.

Fee Structure

Every figure on the certificate comes from a published structure rather than the code: the heads as the circular prints them, per programme category and session, with one-time, semester and tuition/hostel sections and the mess advance beside them. Totals are derived, a head may carry a different amount per semester, NIL reads as nothing, and heads can be added or removed, so a fee revision is a screen edit.

A student's batch fixes which session applies, so an earlier batch keeps its own figures when a newer one is published.

Migrations

Two latent defects stopped a fresh database — and therefore the whole test suite — from building: central_mess.0001 created Payments twice, and programme_curriculum.0026 indexed course_registration without depending on the app that owns it.

Tests

38 tests: the published UG, PG and PhD figures reproduced exactly, the concession column, one-time heads only in semester 1, per-semester heads, NIL, the Paid/Unpaid defaults and refusals, batch-to-session binding, and the separation of the two certificate kinds.

Signing in here now mints an IAM session beside this portal's own token, so
a student who logs in walks into the placement module without signing in
again. Best effort throughout: if the IAM cannot be reached the login still
succeeds and the extra modules simply do not appear. A new dependency must
never be able to lock people out of the portal.

/api/auth/me carries two additions. Modules another service grants are merged
into accessible_modules under the designation that actually grants each one,
so switching role hides them exactly as it hides a local module. Their menus
travel too, so the sidebar can expand a plugged module without holding a
second copy of its screens.

Configuration is read from the environment: no settings file changes, and a
production host sets the cookie domain there.
The grants and the plugged modules' menus came back from the same endpoint,
asked for separately. This is the login path, so the second round trip was
paid on every request that resolved a session.

plugged_modules returns both. Its failure case is unchanged: no modules and
no menus, never an exception, because the IAM being unreachable must not stop
somebody using this portal.
central_mess.0001 created Payments twice, and programme_curriculum.0026
indexed course_registration without depending on the app that owns it, so
the order was undefined. Either one stops a test database being built.
The certificate repeats the bonafide wording, adds the semester-wise fee
table and is recorded in the same table under a certificate_type, so each
screen lists only its own kind.

Every figure comes from a published FeeStructure: the heads as the circular
prints them, per category and session, with the totals derived rather than
typed. A head may vary by semester, and the office can add or remove heads
without a code change. A student's batch fixes the session, so a later
revision cannot rewrite a certificate already handed over.

Paid defaults before the current semester, Unpaid after it, and the current
one must be chosen.
@vikrantwiz02
vikrantwiz02 merged commit bf23890 into FusionIIIT:prod/acad-react Sep 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant