SessionYearT seems unnecessary. Just store the SessionYear value in SessionYearTypeT not Session_ID.
You also have a field called AcademicYear--does this really differ from SessionYear? You deliniate years in 2 different ways?
MonthID in StudentFeesDueT is unnecessary as well. Don't store a number that relates to another number--just store that other number. I am certain whatever table MonthID comes from is unnecessary the same way SessionYearT is.
IsCurrent in SessionYearTypeT seems unnecessary to. You have a StartDate and EndDate so you know if a SessionYear is current. You don't store values you can calculate with other data.
Your explanation about discounts make it seem they are dependent on the individual students. However none of your Discount tables link to a Student table. Seems your discount tables are at the wrong level--they should be linked to some Student table.
The same about discounts can be said about fees/dues. None of the fees/dues tables go to a specific student but to a StudentClassT.