Changeset 17606
- Timestamp:
- 10 Oct 2023, 16:52:33 (13 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py
r17603 r17606 274 274 return False 275 275 276 def setCDLPaymentDetails(self, category, student, 277 previous_session, previous_level, combi): 278 """Create Payment object and set the payment data of a CDL student for 279 the payment category specified. 280 """ 281 p_item = u'' 282 amount = 0.0 283 if previous_session: 284 if previous_session < student['studycourse'].entry_session: 285 return _('The previous session must not fall below ' 286 'your entry session.'), None 287 if category == 'schoolfee': 288 # School fee is always paid for the following session 289 if previous_session > student['studycourse'].current_session: 290 return _('This is not a previous session.'), None 291 else: 292 if previous_session > student['studycourse'].current_session - 1: 293 return _('This is not a previous session.'), None 294 p_session = previous_session 295 p_level = previous_level 296 p_current = False 297 else: 298 p_session = student['studycourse'].current_session 299 p_level = student['studycourse'].current_level 300 p_current = True 301 academic_session = self._getSessionConfiguration(p_session) 302 if academic_session == None: 303 return _(u'Session configuration object is not available.'), None 304 # Determine fee. 305 if category == 'schoolfee': 306 try: 307 certificate = student['studycourse'].certificate 308 p_item = certificate.code 309 except (AttributeError, TypeError): 310 return _('Study course data are incomplete.'), None 311 if previous_session: 312 # Students can pay for previous sessions in all 313 # workflow states. Fresh students are excluded by the 314 # update method of the PreviousPaymentAddFormPage. 315 if previous_level == 100: 316 amount = getattr(certificate, 'school_fee_1', 0.0) 317 else: 318 amount = getattr(certificate, 'school_fee_2', 0.0) 319 else: 320 if student.state == CLEARED: 321 amount = getattr(certificate, 'school_fee_1', 0.0) 322 elif student.state == RETURNING: 323 # In case of returning school fee payment the 324 # payment session and level contain the values of 325 # the session the student has paid for. Payment 326 # session is always next session. 327 p_session, p_level = self.getReturningData(student) 328 academic_session = self._getSessionConfiguration(p_session) 329 if academic_session == None: 330 return _( 331 u'Session configuration object is not available.' 332 ), None 333 amount = getattr(certificate, 'school_fee_2', 0.0) 334 elif student.is_postgrad and student.state == PAID: 335 # Returning postgraduate students also pay for the 336 # next session but their level always remains the 337 # same. 338 p_session += 1 339 academic_session = self._getSessionConfiguration(p_session) 340 if academic_session == None: 341 return _( 342 u'Session configuration object is not available.' 343 ), None 344 amount = getattr(certificate, 'school_fee_2', 0.0) 345 elif category == 'clearance': 346 try: 347 p_item = student['studycourse'].certificate.code 348 except (AttributeError, TypeError): 349 return _('Study course data are incomplete.'), None 350 amount = academic_session.clearance_fee 351 elif category == 'combi' and combi: 352 categories = getUtility(IKofaUtils).COMBI_PAYMENT_CATEGORIES 353 for cat in combi: 354 fee_name = cat + '_fee' 355 cat_amount = getattr(academic_session, fee_name, 0.0) 356 if not cat_amount: 357 return _('%s undefined.' % categories[cat]), None 358 amount += cat_amount 359 p_item += u'%s + ' % categories[cat] 360 p_item = p_item.strip(' + ') 361 else: 362 fee_name = category + '_fee' 363 amount = getattr(academic_session, fee_name, 0.0) 364 if amount in (0.0, None): 365 return _('Amount could not be determined.'), None 366 if self.samePaymentMade(student, category, p_item, p_session): 367 return _('This type of payment has already been made.'), None 368 if self._isPaymentDisabled(p_session, category, student): 369 return _('This category of payments has been disabled.'), None 370 payment = createObject(u'waeup.StudentOnlinePayment') 371 timestamp = ("%d" % int(time()*10000))[1:] 372 payment.p_id = "p%s" % timestamp 373 payment.p_category = category 374 payment.p_item = p_item 375 payment.p_session = p_session 376 payment.p_level = p_level 377 payment.p_current = p_current 378 payment.amount_auth = amount 379 payment.p_combi = combi 380 return None, payment 381 382 276 383 def setPaymentDetails(self, category, student, 277 384 previous_session, previous_level, combi): … … 280 387 281 388 """ 389 if grok.getSite().__name__ == 'uniben-cdl': 390 return self.setCDLPaymentDetails(category, student, 391 previous_session, previous_level, combi) 282 392 p_item = u'' 283 393 amount = 0.0 … … 356 466 if p_item is None: 357 467 return _('Study course data are incomplete.'), None 358 if grok.getSite().__name__ == 'uniben-cdl': 359 amount = 65000.0 360 elif student.is_jupeb: 468 if student.is_jupeb: 361 469 amount = 50000.0 362 470 elif student.faccode.startswith('FCETA'):
Note: See TracChangeset for help on using the changeset viewer.