source: WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py @ 2459

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

show payment button only if verdict, session and level are not empty
pay_by_sc.py: open study_course to fill new level and session after payment

  • Property svn:keywords set to Id
File size: 3.8 KB
RevLine 
[1568]1## Script (Python) "getPaymentsFolderInfo"
[1238]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: getPaymentsFolderInfo.py 2459 2007-10-28 13:56:01Z henrik $
11"""
12Info for the PaymentsFolder
13"""
[1783]14
15mtool = context.portal_membership
16if mtool.isAnonymousUser():
17    return None
[1845]18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
[1783]23
24
[1568]25#import logging
26#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
[1661]27def cmp_id(a,b):
28    s1 = "%(id)s" % a
29    s2 = "%(id)s" % b
30    if s1 == s2:
31        return 0
32    if s1 > s2:
33        return 1
34    return -1
[1568]35
[1238]36import DateTime
37request = context.REQUEST
38students = context.portal_url.getPortalObject().campus.students
39student_id = context.getStudentId()
40if student_id is None:
41    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
[1938]42student = getattr(students,student_id)
[1338]43s_brain = context.students_catalog(id = student_id)[0]
[1427]44
[1238]45payments = []
[1283]46#from Products.zdb import set_trace;set_trace()
[1427]47
[1238]48info = {}
49is_so = info['is_so'] = context.isSectionOfficer()
[2151]50is_student = info['is_student'] = context.isStudent()
51info['student_name'] = s_brain.name
[1946]52info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
[2151]53review_state = info['review_state'] = s_brain.review_state
[2153]54parttime = s_brain.mode.endswith('_pt')
55fulltime = s_brain.mode.endswith('_ft')
56online_payment = False
57sc_payment = False
[2249]58
59#if review_state == 'cleared_and_validated' or (parttime and review_state == 'returning'):
60#    online_payment = True
61#elif fulltime and review_state == 'returning':
62#    sc_payment = True
63
[2151]64info['online_payment'] = online_payment
[2153]65info['sc_payment'] = sc_payment
[2165]66info['prod_id'] = '61'
[1758]67session = s_brain.session
[2454]68next_info = context.getNextInfo(s_brain)
69info['next_session'] = next_info['next_session_id']
70info['next_session_str'] = next_info['next_session_str']
[1427]71
[2459]72if review_state == 'cleared_and_validated':
73    online_payment = True
74elif review_state == 'returning' and info['next_session'] != session:
75    sc_payment = True
76
[1238]77info['student_name'] = s_brain.name
[1427]78payments_path = "%s/campus/students/%s/payments" % (context.portal_url.getPortalPath(),student_id)
79sos = context.portal_catalog(container_path=payments_path)
80info['is_so'] = is_so
81
82for so in sos:
83    row = {}
84    row['id'] = so.getId
85    row['title'] = so.Title
86    url = row['url'] = "%s/%s" % (payments_path,so.getId)
[1944]87    so_doc = context.restrictedTraverse(url,default=None).getContent()
[1427]88    row['type'] = so.portal_type
89    review_state = row['review_state'] = so.review_state
[1944]90    if so_doc.type_description.startswith('School Fee'):
[1427]91        row['is_approvable'] = is_so and (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
92    else:
93        row['is_approvable'] = is_so and (review_state == "opened")
[1938]94    row['is_requeryable'] = False
[1944]95    #set_trace()
96    row['resp_desc'] = getattr(so_doc,'resp_desc','no response')
97    row['trans_ref'] = getattr(so_doc,'order_id','')
98    if so_doc.type_description.startswith('School Fee'):
[1952]99        if review_state == 'opened' and info['review_state'] == 'cleared_and_validated' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
[1938]100            row['is_requeryable'] = True
[1944]101            row['callback_url'] = "%s/payments/%s/interswitch_cb" % (student.absolute_url(),
102                                                            so.getId)
103            href = '%(query_url)s' % info
104            href += '?transRef=%(trans_ref)s' % row
105            href += '&prodID=%(prod_id)s' % info
106            href += '&redirectURL=%(callback_url)s' % row
107            row['href'] = href
108    if (review_state == "closed") and so_doc.resp_code in ('SC','00','AP','IP',):
[1427]109        row['confirmed'] = 'active'
110    else:
[1431]111        row['confirmed'] = 'unsuccessful'
[1427]112    payments.append(row)
113
[1661]114payments.sort(cmp_id)
[1238]115info['payments'] = payments
116return info
[1431]117
Note: See TracBrowser for help on using the repository browser.