source: WAeUP_SRP/base/Payment.py @ 2900

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

last changes before upgrade

  • Property svn:keywords set to Id
File size: 4.3 KB
Line 
1#-*- mode: python; mode: fold -*-
2from Globals import InitializeClass
3from AccessControl import ClassSecurityInfo
4
5from Products.CMFCore.utils import UniqueObject, getToolByName
6from Products.CMFCore.permissions import View
7from Products.CMFCore.permissions import ModifyPortalContent
8from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder
9#from Products.CPSCore.CPSBase import CPSBaseDocument as BaseDocument
10from Products.CPSDocument.CPSDocument import CPSDocument
11from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
12from Products.WAeUP_SRP.WAeUPTables import AccommodationTable
13import Globals
14import DateTime
15import logging
16import re
17p_home = Globals.package_home(globals())
18i_home = Globals.INSTANCE_HOME
19
20class PaymentsFolder(CPSDocument): ###(
21    """
22    WAeUP PaymentsFolder containing Payment objects
23    """
24    meta_type = 'PaymentsFolder'
25    portal_type = meta_type
26    security = ClassSecurityInfo()
27
28    security.declareProtected(View,"Title")
29    def Title(self):
30        """compose title"""
31        return "Payments"
32
33
34    security.declareProtected(View,"updatePayments")
35    def updatePayments(self):
36        """upgrade all payments in folder"""
37        logger = logging.getLogger('PaymentsFolder.updatePayments')
38        #import pdb;pdb.set_trace()
39        for payment in self.aq_parent.objectValues():
40            student_record = self.students_catalog.getRecordByKey(self.getStudentId())
41            payment['updatePayment'](student_record)
42
43InitializeClass(PaymentsFolder)
44
45def addPaymentsFolder(container, id, REQUEST=None, **kw):
46    """Add a PaymentsFolder."""
47    ob = PaymentsFolder(id, **kw)
48    return CPSBase_adder(container, ob, REQUEST=REQUEST)
49###)
50
51class Payment(CPSDocument): ###(
52    """
53    WAeUP Payment containing Nothing
54    """
55    meta_type = 'Payment'
56    portal_type = meta_type
57    security = ClassSecurityInfo()
58
59    security.declareProtected(View,"Title") ###(
60    def Title(self):
61        """compose title"""
62        content = self.getContent()
63        description = getattr(content,'type_description','')
64        d = getattr(content,'date','')
65        #pay_date = "%s/%s/%s %s:%s:%s" %(d[:2],d[2:4],d[4:6],d[6:8],d[8:10],d[10:])
66        pay_date = d.strftime("%d/%m/%y %H:%M:%S")
67        amount = getattr(content,'amount','')
68        if not (description or pay_date or amount):
69            return self.getId()
70        return "%(description)s, Naira %(amount)s, %(pay_date)s" % vars()
71    ###)
72
73    security.declareProtected(View,"updatePayment")
74    def updatePayment(self,student_record):
75        doc = self.getContent()
76        if getattr(doc,'status',None):
77            return
78        wftool = self.portal_workflow
79        d = {}
80        d['key'] = self.getId()
81        d['amount'] = doc.amount
82        category = ''
83        if doc.type_description.startswith('School'):
84            category = 'schoolfee'
85        sp = doc.type_description.rfind('/')
86        d['session_id'] = doc.type_description[sp-2:sp]
87        d['category'] = category # zb. schoolfee
88        while True:
89            if doc.resp_code == "SC":
90                p_type = "sc"
91                p_status = "paid"
92                break
93            if doc.resp_code in ("00","IP","AP"):
94                p_type = "online"
95                p_status = "paid"
96                break
97            p_type = "online"
98            p_status = "started"
99            break
100        d['type'] = p_type  # scratch card
101        d['item'] = getattr(student_record,'course','')
102        d['status'] = p_status
103        d['resp_approved_amount'] = getattr(doc,'resp_approved_amount',None)
104        d['resp_pay_reference'] = doc.resp_pay_reference
105        d['resp_desc'] = doc.resp_desc
106        d['order_id'] = self.aq_parent.getId()
107        d['resp_code'] = doc.resp_code
108        d['resp_card_num'] = doc.resp_card_num
109        d['date'] = getattr(doc,'date',None)
110
111        review_state = wftool.getInfoFor(self.aq_parent,'review_state',None)
112        if review_state == "closed":
113            wftool.doActionFor(self.aq_parent,'open')
114        doc.edit(mapping = d)
115        if review_state == "closed":
116            wftool.doActionFor(self.aq_parent,'close')
117
118InitializeClass(Payment)
119
120def addPayment(container, id, REQUEST=None, **kw):
121    """Add a Payment."""
122    ob = Payment(id, **kw)
123    return CPSBase_adder(container, ob, REQUEST=REQUEST)
124###)
Note: See TracBrowser for help on using the repository browser.