Repository navigation
Add the paid/unpaid fee certificate and the fee structure behind it - #1999
Merged
vikrantwiz02 merged 4 commits intoSep 29, 2026
Merged
vikrantwiz02 merged 4 commits into
vikrantwiz02 merged 4 commits into
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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,
NILreads 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.0001createdPaymentstwice, andprogramme_curriculum.0026indexedcourse_registrationwithout 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.