Subversion Repositories SmartDukaan

Rev

Rev 1132 | Rev 1246 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1132 Rev 1135
Line 23... Line 23...
23
    if orders_not_picked_up:
23
    if orders_not_picked_up:
24
        print "Some of our orders were not picked up. Printing report to: PickupMismatch.csv"
24
        print "Some of our orders were not picked up. Printing report to: PickupMismatch.csv"
25
        print_discrepancy_report("PickupMismatch.csv", orders_not_picked_up)
25
        print_discrepancy_report("PickupMismatch.csv", orders_not_picked_up)
26
 
26
 
27
def process_delivery_report(provider):
27
def process_delivery_report(provider):
28
    #filename = fetch_report('DELIVERED AND RTO REPORT')
28
    filename = fetch_report('DELIVERED AND RTO REPORT')
29
    filename = 'delivery_report.xls'
29
    #filename = 'delivery_report.xls'
30
    delivered_orders, returned_orders = read_delivery_report(filename)
30
    delivered_orders, returned_orders = read_delivery_report(filename)
31
    update_delivered_orders(provider.id, delivered_orders)
31
    update_delivered_orders(provider.id, delivered_orders)
32
    update_returned_orders(returned_orders)
32
    update_returned_orders(provider.id, returned_orders)
33
    #TODO: Alert someone about the returned orders
33
    #TODO: Send returned orders in a mail
34
 
34
 
35
def process_non_delivery_report(provider):
35
def process_non_delivery_report(provider):
36
    filename = fetch_report('UNDELIVERED REPORT')
36
    filename = fetch_report('UNDELIVERED REPORT')
37
    
-
 
38
            
37
                
39
def get_provider_by_name(provider_name):
38
def get_provider_by_name(provider_name):
40
    logistics_client = LogisticsClient().get_client()
39
    logistics_client = LogisticsClient().get_client()
41
    #FIXME: Write a thrift call to get a provider by name
40
    #FIXME: Write a thrift call to get a provider by name
42
    provider = None
41
    provider = None
43
    providers = logistics_client.getAllProviders()
42
    providers = logistics_client.getAllProviders()
Line 62... Line 61...
62
    num_rows = sheet.nrows
61
    num_rows = sheet.nrows
63
    picked_up_orders = {}
62
    picked_up_orders = {}
64
    for rownum in range(1, num_rows):
63
    for rownum in range(1, num_rows):
65
        unused_customer_code, awb, date, time = sheet.row_values(rownum)[0:4]
64
        unused_customer_code, awb, date, time = sheet.row_values(rownum)[0:4]
66
        picked_up_orders[awb] = 0 #TODO: Use the date and time value in the report
65
        picked_up_orders[awb] = 0 #TODO: Use the date and time value in the report
-
 
66
    
-
 
67
    print "Picked up Orders:"
67
    #print picked_up_orders
68
    print picked_up_orders
68
    return picked_up_orders
69
    return picked_up_orders
69
 
70
 
70
def read_delivery_report(filename):
71
def read_delivery_report(filename):
71
    print "Reading delivery details from:" + filename
72
    print "Reading delivery details from:" + filename
72
    workbook = xlrd.open_workbook(filename)
73
    workbook = xlrd.open_workbook(filename)
Line 77... Line 78...
77
    for rownum in range(1, num_rows):
78
    for rownum in range(1, num_rows):
78
        unused_customer_code, awb, date, time, status, receiver, reason_for_return = sheet.row_values(rownum)[0:7]
79
        unused_customer_code, awb, date, time, status, receiver, reason_for_return = sheet.row_values(rownum)[0:7]
79
        if receiver: #TODO: Use status for this check
80
        if receiver: #TODO: Use status for this check
80
            delivered_orders[awb] = str(datetime.datetime.now()) + "|" +  receiver #TODO: Use the date and time value in the report
81
            delivered_orders[awb] = str(datetime.datetime.now()) + "|" +  receiver #TODO: Use the date and time value in the report
81
        else:
82
        else:
82
            returned_orders[awb] = str(datetime.datetime.now()) + reason_for_return
83
            returned_orders[awb] = str(datetime.datetime.now()) + "|" + reason_for_return
-
 
84
    
83
    print "Delivered Orders:"
85
    print "Delivered Orders:"
84
    print delivered_orders
86
    print delivered_orders
85
    
87
    
86
    print "Returned Orders:"
88
    print "Returned Orders:"
87
    print returned_orders
89
    print returned_orders
Line 93... Line 95...
93
        orders_not_picked_up = txnClient.markOrdersAsPickedUp(provider_id, pickup_details)
95
        orders_not_picked_up = txnClient.markOrdersAsPickedUp(provider_id, pickup_details)
94
        return orders_not_picked_up
96
        return orders_not_picked_up
95
    except TransactionServiceException as tex:
97
    except TransactionServiceException as tex:
96
        print tex.message
98
        print tex.message
97
 
99
 
98
def update_delivered_orders(providerId, delivered_orders):
100
def update_delivered_orders(provider_id, delivered_orders):
99
    txnClient = TransactionClient().get_client()
101
    txnClient = TransactionClient().get_client()
100
    try:
102
    try:
101
        txnClient.markOrdersAsDelivered(providerId, delivered_orders)
103
        txnClient.markOrdersAsDelivered(provider_id, delivered_orders)
102
    except TransactionServiceException as tex:
104
    except TransactionServiceException as tex:
103
        print tex.message
105
        print tex.message
104
 
106
 
105
def update_returned_orders(returned_orders):
107
def update_returned_orders(provider_id, returned_orders):
-
 
108
    txnClient = TransactionClient().get_client()
106
    pass
109
    try:
-
 
110
        txnClient.markOrdersAsFailed(provider_id, returned_orders)
-
 
111
    except TransactionServiceException as tex:
-
 
112
        print tex.message
107
 
113
 
108
def print_discrepancy_report(filename, orders):
114
def print_discrepancy_report(filename, orders):
109
    writer = csv.writer(open(filename, "wb"), delimiter=',', quoting=csv.QUOTE_NONE)
115
    writer = csv.writer(open(filename, "wb"), delimiter=',', quoting=csv.QUOTE_NONE)
110
    writer.writerow(['Order Id', 'AWB No', 'Shipping timestamp'])
116
    writer.writerow(['Order Id', 'AWB No', 'Shipping timestamp'])
111
    for order in orders:
117
    for order in orders: