source: WAeUP_SRP/trunk/skins/waeup_futminna/getPaymentsFolderInfo.py @ 6964

Last change on this file since 6964 was 6957, checked in by Henrik Bettermann, 13 years ago

Print 'Successful Payment' if 'desc' is empty but payment was successful.

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