Subversion Repositories SmartDukaan

Rev

Rev 4090 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4069 chandransh 1
#!/usr/bin/python
2
'''
3
Created on 16-Nov-2011
4
 
5
@author: Chandranshu
6
'''
7
 
8
import optparse
9
import xlrd
10
import time
11
import datetime
12
 
13
if __name__ == '__main__' and __package__ is None:
14
    import os
15
    import sys
16
    sys.path.insert(0, os.getcwd())
17
 
18
from shop2020.clients.TransactionClient import TransactionClient
19
from shop2020.thriftpy.model.v1.order.ttypes import TransactionServiceException
20
 
21
REASON = 'reason'
22
DATE = 'date'
23
RECEIVER = 'receiver'
24
 
25
def load_rto_data(filename):
26
    print "Reading RTO details from:" + filename
27
    workbook = xlrd.open_workbook(filename)
28
    sheet = workbook.sheet_by_index(0)
29
    num_rows = sheet.nrows
30
    orders = {}
31
    returned_orders = {}
32
    orderIdString = ''
33
    for rownum in range(1, num_rows):
34
        orderId, awb, reason, unused_return_awb, date, unused_receiver = sheet.row_values(rownum)[0:7]
35
        orderIdString = orderIdString + str(int(orderId)) + ','
36
        orders[int(orderId)] = reason
37
        delivery_date = str(get_py_datetime(date, None))
38
        returned_orders[str(int(awb))] = delivery_date + "|" + reason
39
 
40
    print orderIdString
41
    return orders, returned_orders
42
 
43
def mark_orders_as_sales_returned(returned_orders):
44
    txnClient = TransactionClient().get_client()
45
    try:
46
        txnClient.markOrdersAsFailed(1, returned_orders)
47
    except TransactionServiceException as tex:
48
        print tex.message        
49
 
50
def receive_returns(orders):
51
    txnClient = TransactionClient().get_client()
52
    for orderId, unused_reason in orders.iteritems():
53
        try:
54
            txnClient.receiveReturn(orderId)
55
        except TransactionServiceException as tex:
56
            print tex.message
57
 
58
def refund_orders(orders):
59
    txnClient = TransactionClient().get_client()
60
    for orderId, reason in orders.iteritems():
61
        try:
62
            txnClient.refundOrder(orderId, 'ys-hadmin', reason);
63
        except TransactionServiceException as tex:
64
            print tex.message
65
 
66
def get_py_datetime(date, timeval):
67
    # This should be a command line argument.
68
    # Refer http://docs.python.org/library/time.html#time.strftime to
69
    # get a complete list of format specifiers available for date time.
70
    time_format = "%d-%b-%y %H%M"
71
    if timeval is None or timeval == '--':
72
        timeval='0000'
73
    time_string = date + " " + timeval
74
    mytime = time.strptime(time_string, time_format)
75
    return datetime.datetime(*mytime[:6])
76
 
77
 
78
def main():
79
    parser = optparse.OptionParser()
80
    parser.set_usage("%prog [options] filename")
81
    (options, args) = parser.parse_args()
82
    if len(args) != 1:
83
        parser.error("You've not supplied required arguments. Please see the usage.")
84
    filename = args[0]
85
    orders, returned_orders = load_rto_data(filename)
86
    mark_orders_as_sales_returned(returned_orders)
87
    receive_returns(orders)
88
    refund_orders(orders)
89
 
90
if __name__ == '__main__':
91
    main()