- Timestamp:
- 11 Dec 2016, 09:02:09 (8 years ago)
- Location:
- main/kofacustom.coewarri/trunk/src/kofacustom/coewarri
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/kofacustom.coewarri/trunk/src/kofacustom/coewarri/students/utils.py
r14332 r14333 23 23 from kofacustom.coewarri.interfaces import MessageFactory as _ 24 24 25 26 def local_nonlocal(student): 27 lga = getattr(student, 'lga') 28 if lga and lga.startswith('delta'): 29 return 'local' 30 else: 31 return 'non-local' 32 25 33 class CustomStudentsUtils(NigeriaStudentsUtils): 26 34 """A collection of customized methods. 27 35 28 36 """ 37 38 def setPaymentDetails(self, category, student, 39 previous_session, previous_level): 40 """Create a payment ticket and set the payment data of a 41 student for the payment category specified. 42 """ 43 p_item = u'' 44 amount = 0.0 45 if previous_session: 46 if previous_session < student['studycourse'].entry_session: 47 return _('The previous session must not fall below ' 48 'your entry session.'), None 49 if category == 'schoolfee': 50 # School fee is always paid for the following session 51 if previous_session > student['studycourse'].current_session: 52 return _('This is not a previous session.'), None 53 else: 54 if previous_session > student['studycourse'].current_session - 1: 55 return _('This is not a previous session.'), None 56 p_session = previous_session 57 p_level = previous_level 58 p_current = False 59 else: 60 p_session = student['studycourse'].current_session 61 p_level = student['studycourse'].current_level 62 p_current = True 63 academic_session = self._getSessionConfiguration(p_session) 64 if academic_session == None: 65 return _(u'Session configuration object is not available.'), None 66 # Determine fee. 67 if category == 'schoolfee': 68 try: 69 certificate = student['studycourse'].certificate 70 p_item = certificate.code 71 except (AttributeError, TypeError): 72 return _('Study course data are incomplete.'), None 73 if previous_session: 74 # Students can pay for previous sessions in all 75 # workflow states. Fresh students are excluded by the 76 # update method of the PreviousPaymentAddFormPage. 77 if previous_level == 100: 78 amount = getattr(certificate, 'school_fee_1', 0.0) 79 else: 80 amount = getattr(certificate, 'school_fee_2', 0.0) 81 else: 82 if student.state == CLEARED: 83 amount = getattr(certificate, 'school_fee_1', 0.0) 84 elif student.state == RETURNING: 85 # In case of returning school fee payment the 86 # payment session and level contain the values of 87 # the session the student has paid for. Payment 88 # session is always next session. 89 p_session, p_level = self.getReturningData(student) 90 academic_session = self._getSessionConfiguration(p_session) 91 if academic_session == None: 92 return _( 93 u'Session configuration object is not available.' 94 ), None 95 amount = getattr(certificate, 'school_fee_2', 0.0) 96 elif student.is_postgrad and student.state == PAID: 97 # Returning postgraduate students also pay for the 98 # next session but their level always remains the 99 # same. 100 p_session += 1 101 academic_session = self._getSessionConfiguration(p_session) 102 if academic_session == None: 103 return _( 104 u'Session configuration object is not available.' 105 ), None 106 amount = getattr(certificate, 'school_fee_2', 0.0) 107 elif category == 'clearance': 108 try: 109 p_item = student['studycourse'].certificate.code 110 except (AttributeError, TypeError): 111 return _('Study course data are incomplete.'), None 112 amount = academic_session.clearance_fee 113 elif category == 'bed_allocation': 114 p_item = self.getAccommodationDetails(student)['bt'] 115 amount = academic_session.booking_fee 116 elif category == 'hostel_maintenance': 117 amount = 0.0 118 bedticket = student['accommodation'].get( 119 str(student.current_session), None) 120 if bedticket is not None and bedticket.bed is not None: 121 p_item = bedticket.bed_coordinates 122 if bedticket.bed.__parent__.maint_fee > 0: 123 amount = bedticket.bed.__parent__.maint_fee 124 else: 125 # fallback 126 amount = academic_session.maint_fee 127 else: 128 return _(u'No bed allocated.'), None 129 elif category == 'transcript': 130 amount = academic_session.transcript_fee 131 elif category == 'transfer': 132 amount = academic_session.transfer_fee 133 elif category == 'late_registration': 134 amount = academic_session.late_registration_fee 135 if amount in (0.0, None): 136 return _('Amount could not be determined.'), None 137 if self.samePaymentMade(student, category, p_item, p_session): 138 return _('This type of payment has already been made.'), None 139 if self._isPaymentDisabled(p_session, category, student): 140 return _('This category of payments has been disabled.'), None 141 payment = createObject(u'waeup.StudentOnlinePayment') 142 timestamp = ("%d" % int(time()*10000))[1:] 143 payment.p_id = "p%s" % timestamp 144 payment.p_category = category 145 payment.p_item = p_item 146 payment.p_session = p_session 147 payment.p_level = p_level 148 payment.p_current = p_current 149 payment.amount_auth = amount 150 return None, payment 29 151 30 152 # prefix -
main/kofacustom.coewarri/trunk/src/kofacustom/coewarri/utils/utils.py
r14126 r14333 32 32 'prence': 'Pre-NCE Programme', 33 33 } 34 35 STUDY_MODES_DICT = { 36 'ume_ft': 'UME Full Time', 37 'ug_ft': 'Undergraduate Full Time', 38 'ug_pt': 'Undergraduate Part Time', 39 'dp_pt': 'Diploma Part Time', 40 'ct_ft': 'Certificate Full Time', 41 'dp_ft': 'Diploma Full Time', 42 'de_ft': 'Direct Entry Full Time', 43 'de_pt': 'Direct Entry Part Time', 44 'nd_ft': 'National Diploma Full Time', 45 'nd_pt': 'National Diploma Part Time', 46 'hnd_ft': 'Higher National Diploma Full Time', 47 'hnd_pt': 'Higher National Diploma Part Time', 48 'pg_ft': 'Postgraduate Full Time', 49 'pg_pt': 'Postgraduate Part Time', 50 'pgd_ft': 'Postgraduate Diploma Full Time', 51 'pgd_pt': 'Postgraduate Diploma Part Time', 52 'special_pg_pt': 'Special Postgraduate Part Time', 53 'nce_ft': 'NCE Full Time', 54 'nce_pt': 'NCE Part Time', 55 'ug_sw': 'Undergraduate Sandwich', 56 'nce_sw': 'NCE Sandwich', 57 'jm_ft': 'Joint Matriculation Full Time', 58 'ph_ft': 'Post Higher Education Full Time', 59 'transfer_pt': 'Transfer Part Time', 60 'transfer_ft': 'Transfer Full Time', 61 'ct_pt': 'Certificate Part Time', 62 'rmd_ft': 'Remedial with deficiencies', 63 'rm_ft': 'Remedial', 64 'transfer': 'Transfer', 65 'prence': 'Pre-NCE', 66 'prend': 'Pre-ND', 67 'pce': 'PCE', 68 'pd_ft': 'Professional Diploma in Education', 69 'found': 'Foundation', 70 'no': 'no application', 71 }
Note: See TracChangeset for help on using the changeset viewer.