Subversion Repositories SmartDukaan

Rev

Rev 3815 | Rev 6481 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3657 vikas 1
#!/usr/bin/python
2
 
3
'''
4
Created on 12-Oct-2011
5
 
6
@author: Vikas
7
'''
8
 
9
import optparse
10
import xlrd
11
import datetime
12
 
4031 chandransh 13
if __name__ == '__main__' and __package__ is None:
14
    import sys
15
    import os
16
    sys.path.insert(0, os.getcwd())
17
 
3657 vikas 18
from shop2020.clients.UserClient import UserClient
19
from shop2020.model.v1.user.impl.CartDataAccessors import create_line_item, create_order
20
from shop2020.model.v1.user.impl import Dataservice
21
from shop2020.clients.TransactionClient import TransactionClient
22
from shop2020.clients.PaymentClient import PaymentClient
23
from shop2020.thriftpy.model.v1.order.ttypes import Transaction, TransactionStatus
24
from shop2020.thriftpy.payments.ttypes import Attribute, PaymentStatus
25
from shop2020.utils.Utils import to_java_date
26
 
27
RTGS_GATEWAY_ID = 6
28
PAYMETHOD_ATTR = 'payMethod'
29
RTGS_ID_ATTR = 'rtgsId'
30
RTGS_BANK_ATTR = 'rtgsBank'
31
RTGS_BRANCH_ATTR = 'rtgsBranch'
32
IFSC_ATTR = 'ifscCode'
33
 
3666 vikas 34
ITEM_ID_KEY = 'itemId'
35
ITEM_DESC_KEY = 'itemDesc'
36
PRICE_KEY = 'price'
37
QUANTITY_KEY = 'quantity'
38
AMOUNT_KEY = 'amount'
39
 
3657 vikas 40
user_client = UserClient().get_client()
41
transaction_client = TransactionClient().get_client()
42
payment_client = PaymentClient().get_client()
43
 
44
def create_orders(user, items):
45
    orders = []
46
    for item in items:
3768 vikas 47
        line_item = create_line_item(int(item[ITEM_ID_KEY]), item[PRICE_KEY], item[QUANTITY_KEY])
48
        orders.append(create_order(user.userId, user.defaultAddressId, line_item))
3657 vikas 49
    return orders
50
 
51
 
3666 vikas 52
def create_transaction(user, items):
3657 vikas 53
    txn = Transaction()
54
    txn.shoppingCartid = user.activeCartId
55
    txn.customer_id = user.userId
56
    txn.createdOn = to_java_date(datetime.datetime.now())
57
    txn.transactionStatus = TransactionStatus.INIT
58
    txn.statusDescription = "New Order"
3666 vikas 59
    txn.orders = create_orders(user, items)
3657 vikas 60
    transaction_client = TransactionClient().get_client()
61
    txn_id = transaction_client.createTransaction(txn)
62
    return txn_id
63
 
64
def create_payment(user, amount , txn_id, rtgs_id, rtgs_bank, rtgs_branch, ifsc):
65
    payment_id = payment_client.createPayment(user.userId, amount, RTGS_GATEWAY_ID, txn_id)
66
    payment_client.getPayment(payment_id)
67
    attributes = []
3724 vikas 68
    attributes.append(Attribute(PAYMETHOD_ATTR, '4000'))
3657 vikas 69
    attributes.append(Attribute(RTGS_ID_ATTR, str(rtgs_id)))
70
    attributes.append(Attribute(RTGS_BANK_ATTR, rtgs_bank))
71
    attributes.append(Attribute(RTGS_BRANCH_ATTR, rtgs_branch))
72
    attributes.append(Attribute(IFSC_ATTR, str(ifsc)))
73
    payment_client.updatePaymentDetails(payment_id, None, None, None, None, None, None, None, None, PaymentStatus.SUCCESS, None, attributes)
74
 
75
def load_orders(file):
76
    workbook = xlrd.open_workbook(file)
77
    sheet = workbook.sheet_by_index(0)
78
    num_rows = sheet.nrows
79
 
80
    email, rtgs_id, rtgs_bank, rtgs_branch, ifsc, amount = sheet.col_values(1)[0:6]
81
 
82
    user = user_client.getUserByEmail(email)
83
    if user.userId == -1:
84
        print "The email is not registered with us : " + email
85
        return
86
    if user.defaultAddressId == 0:
87
        print "No default address for this user : " + email
88
        return
89
 
90
    items = []
91
    total_amount = 0
92
    for rownum in range(10, num_rows):
3666 vikas 93
        item = {}
94
        item[ITEM_ID_KEY], item[ITEM_DESC_KEY], item[PRICE_KEY], item[QUANTITY_KEY], item[AMOUNT_KEY] = sheet.row_values(rownum)[0:5]
95
        total_amount += item[AMOUNT_KEY]
96
        items.append(item)
3657 vikas 97
 
98
    if amount != total_amount:
99
        print "Amount paid is not equal to the total amount of bulk order."
100
        return
101
 
3666 vikas 102
    txn_id = create_transaction(user, items)
3657 vikas 103
    create_payment(user, amount, txn_id, rtgs_id, rtgs_bank, rtgs_branch, ifsc)
104
    transaction_client.changeTransactionStatus(txn_id, TransactionStatus.AUTHORIZED, "Payment received for the order");
3666 vikas 105
    transaction_client.changeTransactionStatus(txn_id, TransactionStatus.IN_PROCESS, "RTGS Payment accepted");
3657 vikas 106
 
107
def main():
108
    parser = optparse.OptionParser()
109
    parser.add_option("-f", "--file", dest="file",
110
                   help="Excel file with bulk orders.")
3768 vikas 111
    parser.add_option("-d", "--db_server", dest="host",
112
                      default="localhost",
113
                   help="Database server.")
3657 vikas 114
    (options, args) = parser.parse_args()
115
    if len(args) != 0:
116
        parser.error("You've supplied extra arguments. Are you sure you want to run this program?")
3815 vikas 117
    if options.file == None:
118
        parser.error("Excel File with bulk orders not supplied.")
3768 vikas 119
 
120
    Dataservice.initialize(db_hostname=options.host)
3657 vikas 121
 
3815 vikas 122
    load_orders(options.file)
123
    #load_orders('/home/vikas/RTGS.xls')
3657 vikas 124
 
125
if __name__ == '__main__':
3815 vikas 126
    main()