source: WAeUP_SRP/trunk/skins/waeup_uniben/getPaymentsFolderInfo.py @ 8011

Last change on this file since 8011 was 8011, checked in by Henrik Bettermann, 12 years ago

Also fresh students in previous sessions can now pay with both scratch cards and cash cards.

  • Property svn:keywords set to Id
File size: 5.9 KB
Line 
1## Script (Python) "getPaymentsFolderInfo"
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 8011 2012-03-30 12:55:31Z henrik $
11"""
12Info for the PaymentsFolder
13"""
14from Products.AdvancedQuery import Eq, Between, Le,In
15
16mtool = context.portal_membership
17wftool = context.portal_workflow
18member = mtool.getAuthenticatedMember()
19payments_catalog = context.payments_catalog
20aq_payments = payments_catalog.evalAdvancedQuery
21if mtool.isAnonymousUser():
22    return None
23try:
24    from Products.zdb import set_trace
25except:
26    def set_trace():
27        pass
28
29import DateTime
30request = context.REQUEST
31#students = context.portal_url.getPortalObject().campus.students
32student_id = context.getStudentId()
33if student_id is None:
34    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
35#student = getattr(students,student_id)
36student_record = context.students_catalog.getRecordByKey(student_id)
37
38
39info = {}
40is_so = info['is_so'] = context.isSectionOfficer()
41is_student = info['is_student'] = context.isStudent()
42info['student_name'] = student_record.name
43info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
44info['query_url_tranzact'] = "http://demo.etranzact.com:8080/WebConnect/queryPayoutletTransaction.jsp"
45review_state = info['review_state'] = student_record.review_state
46parttime = student_record.mode and student_record.mode.endswith('_pt')
47fulltime = student_record.mode and student_record.mode.endswith('_ft')
48
49
50session = student_record.session
51next_info = context.getNextInfo(student_record)
52info['next_session'] = next_info['next_session_id']
53info['next_session_str'] = next_info['next_session_str']
54info['payment_method'] = ""
55info['reasons'] = next_info['reasons']
56
57# begin customization
58
59info['payment_method'] = ""
60
61if review_state == 'cleared_and_validated' and session in ('11','12','13'):
62    info['payment_method'] = "online_payment"
63elif review_state == 'returning' and session in ('11','12','13'):
64    info['payment_method'] = "online_payment"
65elif review_state == 'returning' or review_state == 'cleared_and_validated':
66    info['payment_method'] = "both_payments"
67else:
68    info['payment_method'] = ""
69
70info['prod_id'] = '61'
71
72gown_records = aq_payments(Eq('student_id',student_id)  & Eq('category','gown'))
73try:
74    level = int(student_record.level)
75    end_level = int(student_record.end_level)
76    if level >= end_level and not gown_records:
77        info['gown'] = True
78except:
79    pass
80
81# end customization
82
83info['student_name'] = student_record.name
84payments_path = "%s/campus/students/%s/payments" % (context.portal_url(),student_id)
85payments = []
86payment_records = aq_payments(Eq('student_id',student_id)) # & Eq('session_id',student_record.session))
87vocabularies = context.portal_vocabularies
88paid_fees = []
89for payment in payment_records:
90    if payment.status == "paid":
91        paid_fees += "%s_%s" % (payment.category,payment.session_id),
92#info['pf'] = paid_fees
93for payment in payment_records:
94    row = {}
95    row['id'] = payment.key
96    if payment.status == 'invalid':
97        row['title'] = "Invalid Payment, Naira %s, %s" % (payment.amount,
98                                                          payment.date.strftime("%d/%m/%y %H:%M:%S"))
99    else:
100        row['title'] = "%s for Session %s, Naira %s, %s" % (vocabularies.payment_categories.get(payment.category),
101                                                            vocabularies.sessions.get(payment.session_id),
102                                                            payment.amount,
103                                                            payment.date.strftime("%d/%m/%y %H:%M:%S"))
104    oid = payment.order_id
105    onr = oid.rfind('-')+1
106    if onr > 0:
107        start_pos = onr
108    else:
109        start_pos = 6
110    row['sort_param'] = payment.date
111    url = row['url'] = "%s/p%s" % (payments_path,oid[start_pos:])
112    row['is_requeryable_interswitch'] = "%s_%s" % (payment.category,payment.session_id) not in paid_fees and payment.type == 'online' #or str(member) in ('admin',)
113    row['is_requeryable_etranzact'] = "%s_%s" % (payment.category,payment.session_id) not in paid_fees and payment.type == 'etranzact' #or str(member) in ('admin',)
114    row['is_approvable'] = is_so and (row['is_requeryable_interswitch'] or row['is_requeryable_etranzact'])and payment.category == 'schoolfee' # does not make sense for maitenance
115    row['resp_desc'] = payment.resp_desc or 'Payment Process Interrupted'
116    row['trans_ref'] = payment.order_id
117    if row['is_requeryable_interswitch']:
118        row['callback_url_inter'] = "%(url)s/interswitch_cb" % row
119#        if payment.category == 'schoolfee':
120#            row['callback_url'] = "%(url)s/interswitch_cb" % row
121#        elif payment.category == 'hostel_maintenance':
122#            row['callback_url'] = "%(url)s/interswitch_acco_cb" % row
123#        else:
124        href = '%(query_url)s' % info
125        href += '?transRef=%(trans_ref)s' % row
126        href += '&prodID=%(prod_id)s' % info
127        href += '&redirectURL=%(callback_url_inter)s' % row
128        row['href_inter'] = href
129
130    if row['is_requeryable_etranzact']:
131        row['callback_url_tranzact'] = "%(url)s/tranzact_cb" % row
132#        if payment.category == 'schoolfee':
133#            row['callback_url'] = "%(url)s/interswitch_cb" % row
134#        elif payment.category == 'hostel_maintenance':
135#            row['callback_url'] = "%(url)s/interswitch_acco_cb" % row
136#        else:
137
138        href = 'enter_tranzact_pin'
139        href += '?query_url=%(query_url_tranzact)s' % info
140        href += '&redirectURL=%(callback_url_tranzact)s' % row
141        row['href_tranzact'] = href
142
143    if payment.status == 'paid':
144        row['confirmed'] = 'active'
145    else:
146        row['confirmed'] = 'unsuccessful'
147    row['is_editable'] = is_so and (row['confirmed'] == 'active')
148    payments.append(row)
149
150payments.sort(cmp=lambda x,y: cmp(x['sort_param'],y['sort_param']))
151info['payments'] = payments
152return info
Note: See TracBrowser for help on using the repository browser.