Ignore:
Timestamp:
28 Nov 2013, 17:33:07 (11 years ago)
Author:
Henrik Bettermann
Message:

Configure meter charge payment.

Customize workflow.

Location:
main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/students
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • main/kofacustom.ekodisco/trunk/src/kofacustom/ekodisco/students/utils.py

    r10770 r10806  
    3030    # refix
    3131    STUDENT_ID_PREFIX = u'X'
     32
     33    def setPaymentDetails(self, category, student,
     34            previous_session, previous_level):
     35        """Create Payment object and set the payment data of a student for
     36        the payment category specified.
     37
     38        """
     39        p_item = u''
     40        amount = 0.0
     41        if previous_session:
     42            if previous_session < student['studycourse'].entry_session:
     43                return _('The previous session must not fall below '
     44                         'your entry session.'), None
     45            if category == 'schoolfee':
     46                # School fee is always paid for the following session
     47                if previous_session > student['studycourse'].current_session:
     48                    return _('This is not a previous session.'), None
     49            else:
     50                if previous_session > student['studycourse'].current_session - 1:
     51                    return _('This is not a previous session.'), None
     52            p_session = previous_session
     53            p_level = previous_level
     54            p_current = False
     55        else:
     56            p_session = student['studycourse'].current_session
     57            p_level = student['studycourse'].current_level
     58            p_current = True
     59        academic_session = self._getSessionConfiguration(p_session)
     60        if academic_session == None:
     61            return _(u'Session configuration object is not available.'), None
     62        # Determine fee.
     63        if category == 'schoolfee':
     64            try:
     65                certificate = student['studycourse'].certificate
     66                p_item = certificate.code
     67            except (AttributeError, TypeError):
     68                return _('Contract data are incomplete.'), None
     69            amount = getattr(certificate, 'school_fee_1', 0.0)
     70        if amount in (0.0, None):
     71            return _('Amount could not be determined.'), None
     72        for key in student['payments'].keys():
     73            ticket = student['payments'][key]
     74            if ticket.p_state == 'paid' and\
     75               ticket.p_category == category and \
     76               ticket.p_item == p_item and \
     77               ticket.p_session == p_session:
     78                  return _('This type of payment has already been made.'), None
     79        payment = createObject(u'waeup.StudentOnlinePayment')
     80        timestamp = ("%d" % int(time()*10000))[1:]
     81        payment.p_id = "p%s" % timestamp
     82        payment.p_category = category
     83        payment.p_item = p_item
     84        payment.p_session = p_session
     85        payment.p_level = p_level
     86        payment.p_current = p_current
     87        payment.amount_auth = amount
     88        return None, payment
Note: See TracChangeset for help on using the changeset viewer.