## Script (Python) "check_online_payments"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: check_online_payments.py 1845 2007-06-02 11:01:49Z joachim $
"""
payment callback
"""
import logging
logger = logging.getLogger('Skins.check_online_payments')
from AccessControl import Unauthorized
import DateTime
if context.portal_membership.isAnonymousUser():
    return None

request = context.REQUEST
response = request.RESPONSE
students = context.portal_url.getPortalObject().campus.students
wftool = context.portal_workflow
mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
member_id = str(member)
student_id = context.getStudentId()
online_transactions = context.online_payments_import
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    response.write("%s<br>\n" % s)
from Products.AdvancedQuery import Eq, Between, Le,In
try:
    aq_portal = context.portal_catalog.evalAdvancedQuery
except:
    aq_portal = context.portal_catalog_real.evalAdvancedQuery
aq_students = context.students_catalog.evalAdvancedQuery

query1 = Eq('portal_type','Payment')
query2 = Eq('SearchableText',"Approved Successful")             
online_payments = aq_portal(query1 & query2)
set_trace()
online_transactions = context.online_payments_import

for op_brain in online_payments:
    student_id = op_brain.getPath().split('/')[-3]
    payment_doc = op_brain.getObject().getContent()
    order_id = "%s%s" % (student_id[1:],op_brain.getId[1:])
    transactions = online_transactions(student_id = student_id)
    payment_id = op_brain.getId
    if payment_doc.resp_code == "00" and not transactions:
        rwrite('"%s","%s","no transaction for successfull payment","","%s"' % (student_id,payment_id,payment_doc.date))
        continue
    for transaction in transactions:
        t_order_id = transaction.order_id
        if t_order_id == order_id:
            rwrite('"%s","%s","%s","%s","%s"' % (student_id,
                                                                        op_brain.getId,
                                                                        transaction.response_code,
                                                                        payment_doc.resp_code,
                                                                        payment_doc.date
                                                                        ))
            continue
