source: WAeUP_SRP/trunk/skins/waeup_epayment/pay_by_sc.py @ 1760

Last change on this file since 1760 was 1758, checked in by joachim, 18 years ago

previous sessions students can now pay their previous sessions schoolfees,
please test if "normal" returning students can still pay.

  • Property svn:keywords set to Id
File size: 3.7 KB
RevLine 
[1274]1## Script (Python) "pay_by_sc"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=
8##title=
9##
10# $Id: pay_by_sc.py 1758 2007-05-08 20:43:37Z joachim $
11"""
12pay online
13"""
14import logging
15from urllib import urlencode
[1568]16logger = logging.getLogger('Skins.pay_by_sc')
[1274]17import DateTime
[1758]18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
[1365]23
24if context.portal_membership.isAnonymousUser():
25    return None
26
[1274]27lt = context.portal_layouts
28request = context.REQUEST
29students = context.portal_url.getPortalObject().campus.students
30student_id = context.getStudentId()
31if student_id is None:
[1283]32    return request.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
[1274]33
34student = getattr(students,student_id)
[1758]35s_brain = context.students_catalog(id=student_id)[0]
36session = s_brain.session
37next_session, next_session_str = context.getNextSessionId(session)
38amount,description = context.getSchoolFee(s_brain.faculty)
[1283]39validate = request.has_key("cpsdocument_create_button")
[1274]40res,psm,ds = lt.renderLayout(layout_id= 'student_schoolfee',
[1376]41                      schema_id= 'payment',
[1274]42                      context=context,
[1283]43                      mapping=validate and request,
[1274]44                      ob={},
45                      layout_mode="create",
46                      formaction = "pay_by_sc",
47                      button = 'Pay'
48                      )
49if psm == 'invalid':
50    psm = 'Please correct your errors!'
51    return context.pay_by_sc_form(rendered = res,
52                                 psm = psm,
53                                 mode = 'edit',
[1758]54                                 next_session_str = next_session_str,
[1274]55                                 ds = ds,
56                                 )
57elif psm == '':
58    return context.pay_by_sc_form(rendered = res,
59                                 psm = None,
60                                 mode = 'edit',
[1758]61                                 next_session_str = next_session_str,
[1274]62                                 ds = ds,
63                                 )
64elif psm == 'valid':
65    pass
66if "payments" not in student.objectIds():
67    student.invokeFactory('PaymentsFolder','payments')
68    payments = getattr(student,'payments')
69    d = {}
70    d['Title'] = 'Payments'
71    payments.getContent().edit(mapping=d)
72    wftool.doActionFor(payments,'open')
73else:
74    payments = getattr(student,'payments')
[1283]75#from Products.zdb import set_trace; set_trace()
[1274]76info = {}
[1283]77order_id = ds.get('pin_n')
[1274]78p_id = "p%s" % order_id
[1390]79if not hasattr(payments,p_id):
80    now = DateTime.DateTime()
81    info['date'] = now
82    info['amount'] = "n/a"
[1758]83    pin = info['order_id'] = "%s__%s" % (ds.get('pin'),next_session)
[1390]84    info['type_code'] = "%s" % pin
[1758]85    info['type_description'] = 'School Fee for Session %s' % next_session_str
[1390]86    info['resp_code'] = "SC"
87    info['resp_desc'] = "SC Payment Successful"
88    payments.invokeFactory('Payment', p_id)
89    payment = getattr(payments,p_id)
90    wftool = context.portal_workflow
91    wftool.doActionFor(payment,'open')
92    payment.getContent().edit(mapping=info)
93    wftool.doActionFor(payment,'close')
[1758]94    if next_session == context.getSessionId():
95        wftool.doActionFor(student,'pay_school_fee')
96    else:
97        study_course = getattr(student,'study_course')
98        wftool.doActionFor(study_course,'open')
99        study_course_doc = study_course.getContent()
100        next_level = "%s" % (int(s_brain.level) + 100)
101        study_course_doc.edit(mapping= {'current_level': next_level,
102                                        'current_session': next_session,})
[1568]103    logger.info('%s paid school fee by scratch card' % student_id)
[1390]104else:
[1568]105    logger.info('%s repeatedly paid school fee by scratch card' % student_id)
[1283]106url = "%s/payments" % (student.absolute_url())
[1274]107request.RESPONSE.redirect(url)
108
Note: See TracBrowser for help on using the repository browser.