Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
4607 rajveer 1
#!/usr/bin/python
2
 
3
'''
4
Creates a CSV report of all the shipped orders and send mail to Sandeep.
5
 
6
Created on 20-Feb-2012
7
 
8
@author: Rajveer
9
'''
10
import xlwt
11
import datetime
4709 rajveer 12
from optparse import OptionParser
4607 rajveer 13
 
14
 
15
 
16
if __name__ == '__main__' and __package__ is None:
17
    import sys
18
    import os
19
    sys.path.insert(0, os.getcwd())
20
 
4709 rajveer 21
from shop2020.utils.Utils import to_py_date, to_java_date
4607 rajveer 22
from shop2020.clients.TransactionClient import TransactionClient
4783 phani.kuma 23
from shop2020.clients.LogisticsClient import LogisticsClient
24
from shop2020.clients.CatalogClient import CatalogClient
4635 rajveer 25
from shop2020.thriftpy.model.v1.order.ttypes import  Order, DelayReason
4607 rajveer 26
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part
5577 rajveer 27
to = ["sandeep.sachdeva@shop2020.in","ashutosh.saxena@shop2020.in","suraj.sharma@shop2020.in","pankaj.jain@spiceglobal.com", "pankaj.kankar@shop2020.in", "chaitnaya.vats@shop2020.in", "asghar.bilgrami@shop2020.in", "rajneesharora@spiceretail.co.in"]
4607 rajveer 28
 
4709 rajveer 29
def generate_delayed_orders_file():
4607 rajveer 30
    txn_client = TransactionClient().get_client()
31
    slipped_orders = txn_client.getSlippedSippingDateOrders()
32
 
33
    wbk = xlwt.Workbook()
34
    sheet = wbk.add_sheet('main')
35
 
36
    heading_xf = xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center')
37
    sheet.set_panes_frozen(True)
38
    sheet.set_horz_split_pos(1)
39
    sheet.set_remove_splits(True)
40
 
41
    excel_integer_format = '0'
42
    integer_style = xlwt.XFStyle()
43
    integer_style.num_format_str = excel_integer_format
44
 
45
    date_style = xlwt.XFStyle()
46
    date_style.num_format_str = "M/D/YY"
47
 
48
    sheet.write(0, 0, "Order ID", heading_xf)
49
    sheet.write(0, 1, "Mode.", heading_xf)
50
    sheet.write(0, 2, "Brand", heading_xf)
51
    sheet.write(0, 3, "Model Name", heading_xf)
52
    sheet.write(0, 4, "Model Number", heading_xf)
53
    sheet.write(0, 5, "Color", heading_xf)
54
    sheet.write(0, 6, "Creation Date", heading_xf)
55
    sheet.write(0, 7, "Promised Shipping Date", heading_xf)
56
    sheet.write(0, 8, "Expected Shipping Date", heading_xf)
57
    sheet.write(0, 9, "Delay Reason", heading_xf)
4648 rajveer 58
    sheet.write(0, 10, "Detailed Reason Text", heading_xf)    
4607 rajveer 59
 
60
    order = Order()
61
    mode = {}
62
    mode[0] = 'Prepaid'
63
    mode[1] = 'COD'
64
 
65
    i = 1
66
    for order in slipped_orders:
67
        sheet.write(i, 0, order.id) 
68
        sheet.write(i, 1, mode[order.cod])
69
 
70
        lineitem = order.lineitems[0]
71
        sheet.write(i, 2, lineitem.brand)
72
        sheet.write(i, 3, lineitem.model_name)
73
        sheet.write(i, 4, lineitem.model_number)
74
        sheet.write(i, 5, lineitem.color)
75
 
76
        sheet.write(i, 6, to_py_date(order.created_timestamp), date_style)
77
        sheet.write(i, 7, to_py_date(order.promised_shipping_time), date_style)
78
        sheet.write(i, 8, to_py_date(order.expected_shipping_time), date_style)
4635 rajveer 79
        if order.delayReason:
80
            sheet.write(i, 9, DelayReason._VALUES_TO_NAMES[order.delayReason])
4648 rajveer 81
        sheet.write(i, 10, order.delayReasonText)
4607 rajveer 82
 
83
        i= i+1
84
 
85
    today = datetime.date.today()
86
    datestr = str(today.year) + "-" + str(today.month) + "-" + str(today.day)
87
    filename = "/tmp/SlippedOrders-" + datestr + ".xls" 
88
    wbk.save(filename)
89
 
90
    try:
91
        part = get_attachment_part(filename)
4896 rajveer 92
        mail("cnc.center@shop2020.in", "5h0p2o2o", to, "Slipped Orders as on: " + datestr, "PFA attached xls files for the orders which missed the shipping date.", [part])
4607 rajveer 93
    finally:
94
        os.remove(filename)
95
 
4709 rajveer 96
def generate_cancelled_orders_file():
97
    txn_client = TransactionClient().get_client()
98
    #cancelled_orders = txn_client.getAllOrders(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY, to_java_date(datetime.datetime.now() - datetime.timedelta(hours = 24)), to_java_date(datetime.datetime.now()), -1)
99
    cancelled_orders = txn_client.getCancelledOrders(to_java_date(datetime.datetime.now() - datetime.timedelta(hours = 24)), to_java_date(datetime.datetime.now()))
100
 
101
    wbk = xlwt.Workbook()
102
    sheet = wbk.add_sheet('main')
103
 
104
    heading_xf = xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center')
105
    sheet.set_panes_frozen(True)
106
    sheet.set_horz_split_pos(1)
107
    sheet.set_remove_splits(True)
108
 
109
    excel_integer_format = '0'
110
    integer_style = xlwt.XFStyle()
111
    integer_style.num_format_str = excel_integer_format
112
 
113
    date_style = xlwt.XFStyle()
114
    date_style.num_format_str = "M/D/YY"
115
 
116
    sheet.write(0, 0, "Order ID", heading_xf)
117
    sheet.write(0, 1, "Mode.", heading_xf)
118
    sheet.write(0, 2, "Brand", heading_xf)
119
    sheet.write(0, 3, "Model Name", heading_xf)
120
    sheet.write(0, 4, "Model Number", heading_xf)
121
    sheet.write(0, 5, "Color", heading_xf)
122
    sheet.write(0, 6, "Creation Date", heading_xf)
123
    sheet.write(0, 7, "Promised Shipping Date", heading_xf)
124
    sheet.write(0, 8, "Expected Shipping Date", heading_xf)
125
    sheet.write(0, 9, "Cancellation Reason", heading_xf)
126
    sheet.write(0, 10, "Cancellation Date", heading_xf)    
127
 
128
    order = Order()
129
    mode = {}
130
    mode[0] = 'Prepaid'
131
    mode[1] = 'COD'
132
 
133
    i = 1
134
    for order in cancelled_orders:
135
        sheet.write(i, 0, order.id) 
136
        sheet.write(i, 1, mode[order.cod])
137
 
138
        lineitem = order.lineitems[0]
139
        sheet.write(i, 2, lineitem.brand)
140
        sheet.write(i, 3, lineitem.model_name)
141
        sheet.write(i, 4, lineitem.model_number)
142
        sheet.write(i, 5, lineitem.color)
143
 
144
        sheet.write(i, 6, to_py_date(order.created_timestamp), date_style)
145
        sheet.write(i, 7, to_py_date(order.promised_shipping_time), date_style)
146
        sheet.write(i, 8, to_py_date(order.expected_shipping_time), date_style)
147
        sheet.write(i, 9, order.refundReason)
148
        sheet.write(i, 10, to_py_date(order.refund_timestamp), date_style)
149
 
150
        i= i+1
151
 
152
    today = datetime.date.today()
153
    datestr = str(today.year) + "-" + str(today.month) + "-" + str(today.day)
154
    filename = "/tmp/CancelledOrders-" + datestr + ".xls" 
155
    wbk.save(filename)
156
 
157
    try:
158
        part = get_attachment_part(filename)
4896 rajveer 159
        mail("cnc.center@shop2020.in", "5h0p2o2o", to, "Low Inventory Cancelled Orders as on: " + datestr, "PFA attached xls files for the orders which has been cancelled.", [part])
4709 rajveer 160
    finally:
161
        os.remove(filename)
4783 phani.kuma 162
 
163
def generate_expected_delivery_missed_orders_file():
164
 
165
    txn_client = TransactionClient().get_client()
166
    orders_not_delivered = txn_client.getUndeliveredOrdersExpectedDeliveryDateNotMet()
167
 
168
    print "orders_not_delivered"
169
    print orders_not_delivered
170
 
171
    logistics_client = LogisticsClient().get_client()
172
    providers = logistics_client.getAllProviders()
173
    providers_map = {}
174
    for provider in providers:
175
        providers_map[provider.id] = provider.name
176
 
177
    catalog_client = CatalogClient().get_client()
178
    warehouses = catalog_client.getAllWarehouses(True)
179
    warehouses_map = {}
180
    for warehouse in warehouses:
181
        warehouses_map[warehouse.id] = warehouse.displayName
182
 
183
    wbk = xlwt.Workbook()
184
    sheet = wbk.add_sheet('main')
185
 
186
    heading_xf = xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center')
187
    sheet.set_panes_frozen(True)
188
    sheet.set_horz_split_pos(1)
189
    sheet.set_remove_splits(True)
190
 
191
    excel_integer_format = '0'
192
    integer_style = xlwt.XFStyle()
193
    integer_style.num_format_str = excel_integer_format
194
 
195
    date_style = xlwt.XFStyle()
196
    date_style.num_format_str = "M/D/YY"
197
 
198
    sheet.write(0, 0, "Order ID", heading_xf)
199
    sheet.write(0, 1, "Mode.", heading_xf)
200
    sheet.write(0, 2, "Airway BillNo", heading_xf)
201
    sheet.write(0, 3, "Current Status", heading_xf)
202
    sheet.write(0, 4, "Shipping Date", heading_xf)
203
    sheet.write(0, 5, "Pickup Date", heading_xf)
204
    sheet.write(0, 6, "Expected Delivery Date", heading_xf)
205
    sheet.write(0, 7, "Warehouse", heading_xf)
206
    sheet.write(0, 8, "Warehouse ID", heading_xf)
207
    sheet.write(0, 9, "Logistics Provider", heading_xf)
208
    sheet.write(0, 10, "Logistics Provider ID", heading_xf)
209
    sheet.write(0, 11, "Customer City", heading_xf)
210
    sheet.write(0, 12, "Customer State", heading_xf)
211
    sheet.write(0, 13, "Customer Pincode", heading_xf)
212
 
213
    order = Order()
214
    mode = {}
215
    mode[0] = 'Prepaid'
216
    mode[1] = 'COD'
217
 
218
    i = 1
219
    for order in orders_not_delivered:
220
        sheet.write(i, 0, order.id) 
221
        sheet.write(i, 1, mode[order.cod])
222
        sheet.write(i, 2, order.airwaybill_no)
223
        sheet.write(i, 3, order.statusDescription)
224
        sheet.write(i, 4, to_py_date(order.shipping_timestamp), date_style)
225
        sheet.write(i, 5, to_py_date(order.pickup_timestamp), date_style)
226
        sheet.write(i, 6, to_py_date(order.expected_delivery_time), date_style)
227
        sheet.write(i, 7, warehouses_map.get(order.warehouse_id))
228
        sheet.write(i, 8, order.warehouse_id)
229
        sheet.write(i, 9, providers_map.get(order.logistics_provider_id))
230
        sheet.write(i, 10, order.logistics_provider_id)
231
        sheet.write(i, 11, order.customer_city)
232
        sheet.write(i, 12, order.customer_state)
233
        sheet.write(i, 13, order.customer_pincode)
4709 rajveer 234
 
4783 phani.kuma 235
        i= i+1
236
 
237
    today = datetime.date.today()
238
    datestr = str(today.year) + "-" + str(today.month) + "-" + str(today.day)
239
    filename = "/tmp/UndeliveredOrders-" + datestr + ".xls" 
240
    wbk.save(filename)
241
 
242
    try:
243
        part = get_attachment_part(filename)
244
        mail("cnc.center@shop2020.in", "5h0p2o2o", to, "Orders which missed Expected Delivery Date as on: " + datestr, "PFA attached xls files for the orders which missed the Expected Delivery Date.", [part])
245
    finally:
246
        os.remove(filename)
247
 
4709 rajveer 248
def main():
249
    parser = OptionParser()
250
    parser.add_option("-d", "--delayed", dest="delayed",
251
                      action="store_true",
252
                      help="")
253
    parser.add_option("-c", "--cancelled", dest="cancelled",
254
                      action="store_true",
255
                      help="")
4783 phani.kuma 256
    parser.add_option("-u", "--undelivered", dest="undelivered",
257
                      action="store_true",
258
                      help="")
4709 rajveer 259
 
260
    (options, args) = parser.parse_args()
261
    if options.delayed:
262
        generate_delayed_orders_file()
263
    if options.cancelled:
264
        generate_cancelled_orders_file()
4783 phani.kuma 265
    if options.undelivered:
266
        generate_expected_delivery_missed_orders_file()
267
 
4607 rajveer 268
if __name__ == '__main__':
269
    main()