source: WAeUP_SRP/base/skins/waeup_utilities/getPaymentStatistic.py @ 2387

Last change on this file since 2387 was 2387, checked in by joachim, 17 years ago

da waren es nur noch 4

  • Property svn:keywords set to Id
File size: 4.6 KB
Line 
1## Script (Python) "getPaymentStatistic"
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: getPaymentStatistic.py 2387 2007-10-18 17:46:56Z joachim $
11"""
12"""
13try:
14    from Products.zdb import set_trace
15except:
16    def set_trace():
17        pass
18mtool = context.portal_membership
19member = mtool.getAuthenticatedMember()
20if str(member) not in ('admin','joachim'):
21    return
22
23import logging
24import DateTime
25logger = logging.getLogger('Skins.getPaymentStatistic')
26from Products.AdvancedQuery import Eq, Between, Le,In
27pins = context.portal_pins
28aq_pins = context.portal_pins.evalAdvancedQuery
29portal = context.portal_catalog_real
30aq_portal = context.portal_catalog_real.evalAdvancedQuery
31request = context.REQUEST
32session = request.SESSION
33response = request.RESPONSE
34setheader = request.RESPONSE.setHeader
35def rwrite(s):
36    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
37    response.write("%s<br>\n\r" % s)
38
39# aso = aq_portal(Eq('portal_type','Payment'))# & In("SearchableText",("approved","Approved")))
40# #set_trace()
41# count = 0
42# for pp in aso:
43#     count += 1
44#     if count > 1000:
45#         break
46#     indexdata = portal.getIndexDataForRID(pp.getRID())
47#     rwrite("%s %s %s" % (pp.id,pp.listCreators,indexdata['SearchableText']))
48# return
49pbs = pins.uniqueValuesFor('prefix_batch')
50hostel_pbs = []
51for pb in pbs:
52    if pb.startswith('HMU') or pb.startswith('HMF'):
53        hostel_pbs.append(pb)
54clearance_pbs = [pb for pb in pbs if pb.startswith('CLR')]
55application_pbs = [pb for pb in pbs if pb.startswith('APP')]
56
57newschoolfee_pbs = [pb for pb in pbs if pb.endswith('NEW1')]
58
59schoolfee_pbs = list(pbs)[:]
60for pb in application_pbs + hostel_pbs + clearance_pbs + newschoolfee_pbs +['HOS1','HOS2']:
61    schoolfee_pbs.remove(pb)
62fees = {}
63missing_query = ~Eq('student','')
64#ah = [pin for pin in aq_pins(In('prefix_batch', hostel_pbs)) if pin.student]
65ah = aq_pins(In('prefix_batch', hostel_pbs) & missing_query)
66fees['hostel'] = {'anz': len(ah),
67                 'fee': 500,
68                 'title': 'Hostel Maintainance',
69                  'prefixes': hostel_pbs,
70                 }
71#ac = [pin for pin in aq_pins(In('prefix_batch', clearance_pbs)) if pin.student]
72ac = aq_pins(In('prefix_batch', clearance_pbs)& missing_query)
73fees['clearance'] = {'anz': len(ac),
74                     'fee': 250,
75                     'title': 'Clearance',
76                     'prefixes': clearance_pbs,
77                 }
78#aa = [pin for pin in aq_pins(In('prefix_batch', application_pbs)) if pin.student]
79aa = aq_pins(In('prefix_batch', application_pbs) & missing_query)
80fees['application'] = {'anz' : len(aa),
81                 'fee': 200,
82                 'title': 'Application',
83                  'prefixes': application_pbs,
84                 }
85aso = aq_portal(Eq('portal_type','Payment') & Eq("SearchableText","approved"))
86# for pp in aso:
87#     indexdata = portal.getIndexDataForRID(pp.getRID())
88#     rwrite("%s %s %s" % (pp.id,pp.listCreators,indexdata['SearchableText']))
89fees['schoolfee_onl'] = {'anz' : len(aso),
90                 'fee': 1000,
91                 'title': 'Schoolfee (online)',
92                  'prefixes': (),
93                 }
94aspaysc = aq_portal(Eq('portal_type','Payment') &\
95                    Eq("SearchableText","payment") &\
96                    Eq("SearchableText","successful") &\
97                    ~ Eq("SearchableText","transfer")
98                   )
99#rwrite("*"*80)
100# for pp in aspaysc:
101    # indexdata = portal.getIndexDataForRID(pp.getRID())
102    # rwrite("%s %s %s" % (pp.id,pp.listCreators,indexdata['SearchableText']))
103fees['schoolfee_paysc'] = {'anz' : len(aspaysc),
104                 'fee': 1000,
105                 'title': 'Schoolfee (sc in payments)',
106                  'prefixes': (),
107                 }
108anewschool = aq_pins(In('prefix_batch', newschoolfee_pbs) & missing_query)
109fees['newschoolfee_sc'] = {'anz' : len(anewschool),
110                 'fee': 1000,
111                 'title': 'Schoolfee (..NEW SC)',
112                  'prefixes': newschoolfee_pbs,
113                 }
114#assc = [pin for pin in aq_pins(In('prefix_batch', schoolfee_pbs)) if pin.student]
115assc = aq_pins(In('prefix_batch', schoolfee_pbs) & missing_query)
116fees['schoolfee_scratch'] = {'anz' : len(assc),
117                 'fee': 0,
118                 'title': 'Schoolfee (Scratchcard counting)',
119                  'prefixes': schoolfee_pbs,
120                 }
121rwrite("Payed fees")
122total = 0
123keys = fees.keys()
124keys.sort()
125for key in keys:
126    fee = fees[key]
127    t = fee['value'] = fee['anz'] * fee['fee']
128    total += t
129    rwrite("%(title)s fees %(anz)d = %(value)d (%(fee)d N %(prefixes)s)" % fee)
130gt = float(total)/1000000
131rwrite("Total %10.2f Million N" % gt)
Note: See TracBrowser for help on using the repository browser.