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

Last change on this file since 1764 was 1764, checked in by Henrik Bettermann, 17 years ago

at the moment getSessionId returns the year not the Id so that getNextSessionId and pay_by_sc did not work properly

  • 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 1764 2007-05-10 04:41:04Z henrik $
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')
[1764]94    if next_session == context.getSessionId()[2:]:
[1758]95        wftool.doActionFor(student,'pay_school_fee')
96    else:
97        study_course = getattr(student,'study_course')
[1764]98        #wftool.doActionFor(study_course,'open')
[1758]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.