Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
14450 amit.gupta 1
'''
2
Created on Mar 13, 2015
3
 
4
@author: amit
5
'''
6
from datetime import date, datetime, timedelta
14632 amit.gupta 7
from dtr.main import Store, sourceMap
14650 amit.gupta 8
from dtr.reports.amazonreco import generateAmazonReco
15445 amit.gupta 9
from dtr.storage import Mysql, DataService
15540 amit.gupta 10
from dtr.storage.DataService import Users, Clicks, FlipkartOrders
14613 amit.gupta 11
from dtr.storage.Mysql import getOrdersAfterDate, getOrdersByTag
15423 amit.gupta 12
from dtr.utils.utils import fromTimeStamp
13
from elixir import *
15440 amit.gupta 14
from sqlalchemy.sql.expression import func, func, or_
14450 amit.gupta 15
from email import encoders
16
from email.mime.base import MIMEBase
17
from email.mime.multipart import MIMEMultipart
18
from email.mime.text import MIMEText
19
from pymongo.mongo_client import MongoClient
14460 amit.gupta 20
from xlrd import open_workbook
14524 amit.gupta 21
from xlutils.copy import copy
14460 amit.gupta 22
from xlwt.Workbook import Workbook
14450 amit.gupta 23
import MySQLdb
24
import smtplib
25
import time
26
import xlwt
14460 amit.gupta 27
#from xlwt import 
14450 amit.gupta 28
 
15445 amit.gupta 29
DataService.initialize()
14450 amit.gupta 30
client = MongoClient('mongodb://localhost:27017/')
31
 
32
SENDER = "cnc.center@shop2020.in"
33
PASSWORD = "5h0p2o2o"
34
SUBJECT = "DTR User Segmentation report for " + date.today().isoformat()
35
SMTP_SERVER = "smtp.gmail.com"
36
SMTP_PORT = 587    
37
 
14647 amit.gupta 38
XLS_FILENAME = "snapdealaffiliatereco.xls"
14632 amit.gupta 39
XLS_O_FILENAME = "allorders.xls"
14647 amit.gupta 40
XLS_F_FILENAME = "flipkartaffiliatereco.xls"
14650 amit.gupta 41
XLS_A_FILENAME = "amazonaffiliatereco.xls"
15791 manish.sha 42
XLS_SC_FILENAME = "shopcluesaffiliatereco.xls"
14460 amit.gupta 43
boldStyle = xlwt.XFStyle()
44
f = xlwt.Font()
45
f.bold = True
46
boldStyle.font = f
47
i = -1
14616 amit.gupta 48
 
49
datetime_format = xlwt.XFStyle()
50
datetime_format.num_format_str = 'dd/mm/yyyy HH:MM AM/PM'
15540 amit.gupta 51
categoryMap = {3:"Mobiles", 5:"Tablets"}
14450 amit.gupta 52
def generateFlipkartReco():
14508 amit.gupta 53
    global i
54
    i = -1
14460 amit.gupta 55
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 2)
56
    db = client.Dtr
14647 amit.gupta 57
    wb = xlwt.Workbook()
58
    #rb = open_workbook(XLS_F_FILENAME)
59
    #wb = copy(rb)
14460 amit.gupta 60
    #wb = xlwt.Workbook()
61
    row = 0
14647 amit.gupta 62
    row2 = 0
63
    row3 = 0
64
    row4 = 0
65
    worksheet = wb.add_sheet("All Orders")
66
    worksheet1 = wb.add_sheet("Orders Reconciled")
67
    worksheet2 = wb.add_sheet("Orders not Reconciled")
68
    worksheet3 = wb.add_sheet("Aff not Reconciled")
14460 amit.gupta 69
    worksheet.write(row, inc(), 'Order Id', boldStyle)
14647 amit.gupta 70
    worksheet1.write(row, i, 'Order Id', boldStyle)
71
    worksheet2.write(row, i, 'Order Id', boldStyle)
14460 amit.gupta 72
    worksheet.write(row, inc(), 'User Id', boldStyle)
14647 amit.gupta 73
    worksheet1.write(row, i, 'User Id', boldStyle)
74
    worksheet2.write(row, i, 'User Id', boldStyle)
14474 amit.gupta 75
    worksheet.write(row, inc(), 'Username', boldStyle)
14647 amit.gupta 76
    worksheet1.write(row, i, 'Username', boldStyle)
77
    worksheet2.write(row, i, 'Username', boldStyle)
14771 amit.gupta 78
    worksheet.write(row, inc(), 'Version code', boldStyle)
79
    worksheet1.write(row, i, 'Version code', boldStyle)
80
    worksheet2.write(row, i, 'Version code', boldStyle)
81
    worksheet.write(row, inc(), 'Device', boldStyle)
82
    worksheet1.write(row, i, 'Device', boldStyle)
83
    worksheet2.write(row, i, 'Device', boldStyle)
14460 amit.gupta 84
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
14647 amit.gupta 85
    worksheet1.write(row, i, 'Merchant Order Id', boldStyle)
86
    worksheet2.write(row, i, 'Merchant Order Id', boldStyle)
14460 amit.gupta 87
    worksheet.write(row, inc(), 'Product Title', boldStyle)
14647 amit.gupta 88
    worksheet1.write(row, i, 'Product Title', boldStyle)
89
    worksheet2.write(row, i, 'Product Title', boldStyle)
14460 amit.gupta 90
    worksheet.write(row, inc(), 'Price', boldStyle)
14647 amit.gupta 91
    worksheet1.write(row, i, 'Price', boldStyle)
92
    worksheet2.write(row, i, 'Price', boldStyle)
14460 amit.gupta 93
    worksheet.write(row, inc(), 'Quantity', boldStyle)
14647 amit.gupta 94
    worksheet1.write(row, i, 'Quantity', boldStyle)
95
    worksheet2.write(row, i, 'Quantity', boldStyle)
14460 amit.gupta 96
    worksheet.write(row, inc(), 'Status', boldStyle)
14647 amit.gupta 97
    worksheet1.write(row, i, 'Status', boldStyle)
98
    worksheet2.write(row, i, 'Status', boldStyle)
14460 amit.gupta 99
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
14647 amit.gupta 100
    worksheet1.write(row, i, 'Detailed Status', boldStyle)
101
    worksheet2.write(row, i, 'Detailed Status', boldStyle)
14460 amit.gupta 102
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
14647 amit.gupta 103
    worksheet1.write(row, i, 'Cashback Status', boldStyle)
104
    worksheet2.write(row, i, 'Cashback Status', boldStyle)
14460 amit.gupta 105
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
14647 amit.gupta 106
    worksheet1.write(row, i, 'Our CashBack', boldStyle)
107
    worksheet2.write(row, i, 'Our CashBack', boldStyle)
108
    worksheet.write(row, inc(), 'Sale Date', boldStyle) 
109
    worksheet1.write(row, i, 'Sale Date', boldStyle)
110
    worksheet2.write(row, i, 'Sale Date', boldStyle)
14460 amit.gupta 111
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
14647 amit.gupta 112
    worksheet1.write(row, i, 'SubtagId', boldStyle)
113
    worksheet2.write(row, i, 'SubtagId', boldStyle)
14460 amit.gupta 114
    worksheet.write(row, inc(), 'Category', boldStyle)
14647 amit.gupta 115
    worksheet1.write(row, i, 'Category', boldStyle)
14460 amit.gupta 116
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
14647 amit.gupta 117
    worksheet1.write(row, i, 'Aff PayOut', boldStyle)
14460 amit.gupta 118
    worksheet.write(row, inc(), 'Aff Sale Amount', boldStyle)
14647 amit.gupta 119
    worksheet1.write(row, i, 'Aff Sale Amount', boldStyle)
14460 amit.gupta 120
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
14647 amit.gupta 121
    worksheet1.write(row, i, 'Aff Sale Date', boldStyle)
14460 amit.gupta 122
    for row1 in curs:
123
        orderId = row1[0]
124
        order = db.merchantOrder.find_one({"orderId":orderId})
125
        if order is None:
126
            continue
127
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%d %B, %Y %I:%M %p").replace(hour=0, minute=0, second=0, microsecond=0).timetuple()))
128
        #saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y %I:%M %p") + timedelta(seconds=-60)).timetuple()))
14647 amit.gupta 129
        reconciled_affiliates = []
14460 amit.gupta 130
        for subOrder in order['subOrders']: 
14647 amit.gupta 131
            affs = list(db.flipkartOrderAffiliateInfo.find({"productCode":subOrder.get("productCode"), "saleDateInt":saleTime}))
14460 amit.gupta 132
            row += 1
133
            i=-1
134
            worksheet.write(row, inc(), orderId)
135
            worksheet.write(row, inc(), row1[1])
14474 amit.gupta 136
            worksheet.write(row, inc(), row1[-1])
14771 amit.gupta 137
            worksheet.write(row, inc(), row1[-2])
138
            worksheet.write(row, inc(), row1[-3])
14460 amit.gupta 139
            worksheet.write(row, inc(), order['merchantOrderId'])
140
            worksheet.write(row, inc(), subOrder['productTitle'])
141
            worksheet.write(row, inc(), subOrder['amountPaid'])
142
            worksheet.write(row, inc(), subOrder['quantity'])
143
            worksheet.write(row, inc(), subOrder['status'])
144
            worksheet.write(row, inc(), subOrder['detailedStatus'])
145
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
146
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
147
            worksheet.write(row, inc(), subOrder['placedOn'])
148
            worksheet.write(row, inc(), order['subTagId'])
149
            for aff in affs:
14647 amit.gupta 150
                if aff["_id"] not in reconciled_affiliates and aff['subTagId']== order['subTagId']:
151
                    reconciled_affiliates.append(aff["_id"])
152
                    row2 += 1
153
                    i = -1 
154
                    worksheet1.write(row2, inc(), orderId)
155
                    worksheet1.write(row2, inc(), row1[1])
156
                    worksheet1.write(row2, inc(), row1[-1])
14771 amit.gupta 157
                    worksheet1.write(row2, inc(), row1[-2])
158
                    worksheet1.write(row2, inc(), row1[-3])
14647 amit.gupta 159
                    worksheet1.write(row2, inc(), order['merchantOrderId'])
160
                    worksheet1.write(row2, inc(), subOrder['productTitle'])
161
                    worksheet1.write(row2, inc(), subOrder['amountPaid'])
162
                    worksheet1.write(row2, inc(), subOrder['quantity'])
163
                    worksheet1.write(row2, inc(), subOrder['status'])
164
                    worksheet1.write(row2, inc(), subOrder['detailedStatus'])
165
                    worksheet1.write(row2, inc(), subOrder['cashBackStatus'])
166
                    worksheet1.write(row2, inc(), subOrder['cashBackAmount'])
167
                    worksheet1.write(row2, inc(), subOrder['placedOn'])
168
                    worksheet1.write(row2, inc(), order['subTagId'])
169
                    db.flipkartOrderAffiliateInfo.update(
170
                        {"productCode":subOrder.get("productCode"), "saleDateInt":saleTime, "subTagId":aff['subTagId']}, 
171
                        {"$set":{"reconciled":True}})
172
                    db.merchantOrder.update({"merchantOrderId":order["merchantOrderId"]}, 
173
                                            {"$set":{"reconciled":True}})
14460 amit.gupta 174
                    worksheet.write(row, inc(), aff['category'])
14647 amit.gupta 175
                    worksheet1.write(row2, i, aff['category'])
14460 amit.gupta 176
                    worksheet.write(row, inc(), aff['payOut'])
14647 amit.gupta 177
                    worksheet1.write(row2, i, aff['payOut'])
14460 amit.gupta 178
                    worksheet.write(row, inc(), aff['saleAmount'])
14647 amit.gupta 179
                    worksheet1.write(row2, i, aff['saleAmount'])
14460 amit.gupta 180
                    worksheet.write(row, inc(), aff['saleDate'])
14647 amit.gupta 181
                    worksheet1.write(row2, i, aff['saleDate'])
14460 amit.gupta 182
                    break
14647 amit.gupta 183
            row3 += 1
184
            i=-1
185
            worksheet2.write(row3, inc(), orderId)
186
            worksheet2.write(row3, inc(), row1[1])
187
            worksheet2.write(row3, inc(), row1[-1])
14771 amit.gupta 188
            worksheet2.write(row3, inc(), row1[-2])
189
            worksheet2.write(row3, inc(), row1[-3])
14647 amit.gupta 190
            worksheet2.write(row3, inc(), order['merchantOrderId'])
191
            worksheet2.write(row3, inc(), subOrder['productTitle'])
192
            worksheet2.write(row3, inc(), subOrder['amountPaid'])
193
            worksheet2.write(row3, inc(), subOrder['quantity'])
194
            worksheet2.write(row3, inc(), subOrder['status'])
195
            worksheet2.write(row3, inc(), subOrder['detailedStatus'])
196
            worksheet2.write(row3, inc(), subOrder['cashBackStatus'])
197
            worksheet2.write(row3, inc(), subOrder['cashBackAmount'])
198
            worksheet2.write(row3, inc(), subOrder['placedOn'])
199
            worksheet2.write(row3, inc(), order['subTagId'])
200
 
201
    i=-1
202
    worksheet3.write(0, inc(), "category",boldStyle)    
203
    worksheet3.write(0, inc(), "conversionStatus",boldStyle)    
204
    worksheet3.write(0, inc(), "Product Title",boldStyle)    
205
    worksheet3.write(0, inc(), "price",boldStyle)    
206
    worksheet3.write(0, inc(), "quantity",boldStyle)    
207
    worksheet3.write(0, inc(), "payOut",boldStyle)    
208
    worksheet3.write(0, inc(), "saleDate",boldStyle)    
209
    worksheet3.write(0, inc(), "subTagId",boldStyle)
210
    for aff in db.flipkartOrderAffiliateInfo.find({"reconciled":{"$exists":False}}):
211
        row4 += 1
212
        i =-1
213
        worksheet3.write(row4, inc(), aff["category"])    
214
        worksheet3.write(row4, inc(), aff["conversionStatus"])    
215
        skuData = getSkuData(2, aff["productCode"])
216
        if skuData is None:    
217
            worksheet3.write(row4, inc(), aff["productTitle"])
218
        else:
219
            worksheet3.write(row4, inc(), skuData["product_name"])
220
        worksheet3.write(row4, inc(), aff['price'])    
221
        worksheet3.write(row4, inc(), aff['quantity'])    
222
        worksheet3.write(row4, inc(), aff['payOut'])    
223
        worksheet3.write(row4, inc(), aff['saleDate'])    
224
        worksheet3.write(row4, inc(), aff['subTagId'])    
225
 
226
 
227
 
228
    wb.save(XLS_F_FILENAME)
14450 amit.gupta 229
def generateSnapDealReco():
14524 amit.gupta 230
    global i
14460 amit.gupta 231
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
14450 amit.gupta 232
    db = client.Dtr
14524 amit.gupta 233
    notReconciled = {}
14487 amit.gupta 234
    matchedList = []
14450 amit.gupta 235
    workbook = xlwt.Workbook()
14501 amit.gupta 236
    worksheet = workbook.add_sheet("Snapdeal Reconciled")
237
    worksheet1 = workbook.add_sheet("Snapdeal Reconciled All")
14508 amit.gupta 238
    worksheet2 = workbook.add_sheet("Snapdeal Orders not reconciled")
239
    affNotReconciledSheet = workbook.add_sheet("Snapdeal Aff not reconciled")
240
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet)
14450 amit.gupta 241
    row = 0
14501 amit.gupta 242
    anotherrow = 0
14508 amit.gupta 243
    row2 = 0
15577 amit.gupta 244
    row5=0
14450 amit.gupta 245
    for row1 in curs:
246
        orderId = row1[0]
247
        order = db.merchantOrder.find_one({"orderId":orderId})
248
        if order is None:
249
            continue
14496 amit.gupta 250
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
14450 amit.gupta 251
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
14501 amit.gupta 252
        anotherrow += 1
14988 amit.gupta 253
        try:
254
            formattedTimestamp = order['placedOn']
255
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
256
        except:
257
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
258
            formattedTimestamp = datetime.strftime(fromTimeStamp(timestamp1), "%b %d, %Y, %I:%M %p")
14524 amit.gupta 259
        if len(aff) > 0 and order["subTagId"] not in matchedList and int(order["paidAmount"])==int(aff[0]["saleAmount"]): 
14501 amit.gupta 260
            matchedList.append(order["subTagId"])
14610 amit.gupta 261
            db.snapdealOrderAffiliateInfo.update({"adId":aff[0].get("adId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
14501 amit.gupta 262
            order['reconciled'] = True
14610 amit.gupta 263
            order['adId'] = aff[0].get("adId")
14501 amit.gupta 264
            db.merchantOrder.save(order)
265
            row += 1
266
            i=-1 
267
            worksheet.write(row, inc(), orderId)
268
            worksheet1.write(anotherrow, i, orderId)
269
            worksheet.write(row, inc(), row1[1])
270
            worksheet1.write(anotherrow, i, row1[1])
14850 amit.gupta 271
            worksheet.write(row, inc(), row1[-1])
272
            worksheet1.write(anotherrow, i, row1[-1])
273
            worksheet.write(row, inc(), row1[-2])
274
            worksheet1.write(anotherrow, i, row1[-2])
14771 amit.gupta 275
            worksheet.write(row, inc(), row1[-3])
276
            worksheet1.write(anotherrow, i, row1[-3])
14501 amit.gupta 277
            worksheet.write(row, inc(), order['merchantOrderId'])
278
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
279
            worksheet.write(row, inc(), order['subTagId'])
280
            worksheet1.write(anotherrow, i, order['subTagId'])
281
            worksheet.write(row, inc(), order['placedOn'])
282
            worksheet1.write(anotherrow, i, order['placedOn'])
14988 amit.gupta 283
            worksheet.write(row, inc(), formattedTimestamp)
284
            worksheet1.write(anotherrow, i, formattedTimestamp)
14501 amit.gupta 285
            worksheet.write(row, inc(), int(order['paidAmount']))
286
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
14524 amit.gupta 287
            worksheet.write(row, inc(), aff[0]['saleDate'])
288
            worksheet1.write(anotherrow, i, aff[0]['saleDate'])
289
            worksheet.write(row, inc(), aff[0]['saleAmount'])
290
            worksheet1.write(anotherrow, i, aff[0]['saleAmount'])
291
            worksheet.write(row, inc(), aff[0]['payOut'])
292
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
14601 amit.gupta 293
            worksheet.write(row, inc(), aff[0]['ip'])
294
            worksheet1.write(anotherrow, i, aff[0]['ip'])
14501 amit.gupta 295
            k = i
14504 amit.gupta 296
            row -= 1
297
            anotherrow -= 1
14501 amit.gupta 298
            for subOrder in order['subOrders']:
299
                i = k
14503 amit.gupta 300
                row += 1
301
                anotherrow += 1
14501 amit.gupta 302
                worksheet.write(row, inc(), subOrder['productTitle'])
303
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
304
                worksheet.write(row, inc(), subOrder['amountPaid'])
305
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
306
                worksheet.write(row, inc(), subOrder['quantity'])
307
                worksheet1.write(anotherrow, i, subOrder['quantity'])
308
                worksheet.write(row, inc(), subOrder['status'])
309
                worksheet1.write(anotherrow, i, subOrder['status'])
310
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
311
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
312
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
313
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
14504 amit.gupta 314
 
14501 amit.gupta 315
        else:
14524 amit.gupta 316
            i=-1
14501 amit.gupta 317
            worksheet1.write(anotherrow, inc(), orderId)
318
            worksheet1.write(anotherrow, inc(), row1[1])
14850 amit.gupta 319
            worksheet1.write(anotherrow, inc(), row1[-1])
320
            worksheet1.write(anotherrow, inc(), row1[-2])
14771 amit.gupta 321
            worksheet1.write(anotherrow, inc(), row1[-3])
14501 amit.gupta 322
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
323
            worksheet1.write(anotherrow, inc(), order['subTagId'])
324
            worksheet1.write(anotherrow, inc(), order['placedOn'])
15576 amit.gupta 325
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
14501 amit.gupta 326
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
14873 amit.gupta 327
 
14524 amit.gupta 328
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
329
            inc()
330
            inc()
331
            inc()
14771 amit.gupta 332
            inc()
14501 amit.gupta 333
            k = i
14504 amit.gupta 334
            anotherrow -= 1
14501 amit.gupta 335
            for subOrder in order['subOrders']:
14503 amit.gupta 336
                anotherrow += 1
14501 amit.gupta 337
                i = k
14505 amit.gupta 338
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
339
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
340
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
341
                worksheet1.write(anotherrow, inc(), subOrder['status'])
342
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
343
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
15577 amit.gupta 344
            row5 += 1
345
            i=-1
346
            worksheet2.write(row5, inc(), order["orderId"])
347
            worksheet2.write(row5, inc(), row1[1])
348
            worksheet2.write(row5, inc(), row1[-1])
349
            worksheet2.write(row5, inc(), row1[-2])
350
            worksheet2.write(row5, inc(), row1[-3])
351
            worksheet2.write(row5, inc(), order['merchantOrderId'])
352
            worksheet2.write(row5, inc(), order['subTagId'])
353
            worksheet2.write(row5, inc(), order['placedOn'])
354
            worksheet2.write(row5, inc(), formattedTimestamp)
355
            worksheet2.write(row5, inc(), int(order['paidAmount']))
356
            row5 -=1
357
            k=i
358
            for subOrder in order['subOrders']:
359
                i = k
15578 amit.gupta 360
                row5 += 1
15577 amit.gupta 361
                worksheet2.write(row5, inc(), subOrder['productTitle'])
362
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
363
                worksheet2.write(row5, inc(), subOrder['quantity'])
364
                worksheet2.write(row5, inc(), subOrder['status'])
365
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
15578 amit.gupta 366
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
14524 amit.gupta 367
 
368
    last30Days =  date.today() - timedelta(days=30)
369
    int(time.mktime(last30Days.timetuple()))
370
    row = 0
371
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
372
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
373
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
374
        subTagId = offer.get("subTagId")
375
        saleTime = offer.get("saleTime")
376
        orders = getOrdersByTag(subTagId, 3)
377
        for order in orders:
378
            if notReconciled.has_key(order[0]):
379
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
380
                if paidAmount==int(offer.get("saleAmount")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
381
                    i = column
14570 amit.gupta 382
                    worksheet1.write(roww, inc(), offer.get("saleDate"))        
14527 amit.gupta 383
                    worksheet1.write(roww, inc(), offer.get("saleAmount"))        
384
                    worksheet1.write(roww, inc(), offer.get("payOut"))
385
                    del notReconciled[order[0]]
14530 amit.gupta 386
                    print "found match for user", order[1]
14610 amit.gupta 387
                    db.snapdealOrderAffiliateInfo.update({"adId":offer.get("adId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
388
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("adId")}}, multi=True)
14570 amit.gupta 389
                    break
14530 amit.gupta 390
 
14570 amit.gupta 391
    unreconciledOrders = notReconciled.keys()
15577 amit.gupta 392
 
14570 amit.gupta 393
 
394
 
395
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
396
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
397
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
398
        row += 1
399
        i=-1
400
        affNotReconciledSheet.write(row, inc(), offer.get("adId")) 
401
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
402
        affNotReconciledSheet.write(row, inc(), offer.get("saleDate")) 
403
        affNotReconciledSheet.write(row, inc(), offer.get("saleAmount")) 
404
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
405
        affNotReconciledSheet.write(row, inc(), offer.get("conversionStatus"))
14601 amit.gupta 406
        affNotReconciledSheet.write(row, inc(), offer.get("ip"))
14570 amit.gupta 407
 
15540 amit.gupta 408
    workbook.save(XLS_FILENAME)
15791 manish.sha 409
 
410
def generateShopcluesReco():
411
    global i
412
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
413
    db = client.Dtr
414
    notReconciled = {}
415
    matchedList = []
416
    workbook = xlwt.Workbook()
417
    worksheet = workbook.add_sheet("Shopclues Reconciled")
418
    worksheet1 = workbook.add_sheet("Shopclues Reconciled All")
419
    worksheet2 = workbook.add_sheet("Shopclues Orders not reconciled")
420
    affNotReconciledSheet = workbook.add_sheet("Shopclues Aff not reconciled")
421
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet)
422
    row = 0
423
    anotherrow = 0
424
    row2 = 0
425
    row5=0
426
 
427
    for row1 in curs:
428
        orderId = row1[0]
429
        order = db.merchantOrder.find_one({"orderId":orderId})
430
        if order is None:
431
            continue
432
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))  26 May 2015 02:12 PM
433
        aff = list(db.shopcluesOrderAffiliateInfo.find({"orderRef":order["merchantOrderId"]}))
434
        anotherrow += 1
435
        try:
436
            formattedTimestamp = order['placedOn']
437
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%d %b %Y %I:%M %p").timetuple()))
438
        except:
439
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
440
            formattedTimestamp = datetime.strftime(fromTimeStamp(timestamp1), "%d %b %Y %I:%M %p")
441
 
442
        if len(aff) > 0 and order["subTagId"] not in matchedList and long(order["paidAmount"])==long(float(aff[0]["transactionValue"])): 
443
            matchedList.append(order["subTagId"])
444
            db.shopcluesOrderAffiliateInfo.update({"orderRef":aff[0].get("orderRef")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
445
            order['reconciled'] = True
446
            order['adId'] = aff[0].get("uniqueKey")
447
            db.merchantOrder.save(order)
448
            row += 1
449
            i=-1 
14450 amit.gupta 450
 
15791 manish.sha 451
            worksheet.write(row, inc(), orderId)
452
            worksheet1.write(anotherrow, i, orderId)
453
            worksheet.write(row, inc(), row1[1])
454
            worksheet1.write(anotherrow, i, row1[1])
455
            worksheet.write(row, inc(), row1[-1])
456
            worksheet1.write(anotherrow, i, row1[-1])
457
            worksheet.write(row, inc(), row1[-2])
458
            worksheet1.write(anotherrow, i, row1[-2])
459
            worksheet.write(row, inc(), row1[-3])
460
            worksheet1.write(anotherrow, i, row1[-3])
461
            worksheet.write(row, inc(), order['merchantOrderId'])
462
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
463
            worksheet.write(row, inc(), order['subTagId'])
464
            worksheet1.write(anotherrow, i, order['subTagId'])
465
            worksheet.write(row, inc(), order['placedOn'])
466
            worksheet1.write(anotherrow, i, order['placedOn'])
467
            worksheet.write(row, inc(), formattedTimestamp)
468
            worksheet1.write(anotherrow, i, formattedTimestamp)
469
            worksheet.write(row, inc(), int(order['paidAmount']))
470
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
471
            worksheet.write(row, inc(), datetime.strftime(fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
472
            worksheet1.write(anotherrow, i, datetime.strftime(fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
473
            worksheet.write(row, inc(), aff[0]['transactionValue'])
474
            worksheet1.write(anotherrow, i, aff[0]['transactionValue'])
475
            worksheet.write(row, inc(), aff[0]['payOut'])
476
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
477
            worksheet.write(row, inc(), aff[0]['ip'])
478
            worksheet1.write(anotherrow, i, aff[0]['ip'])
479
            k = i
480
            row -= 1
481
            anotherrow -= 1
482
            for subOrder in order['subOrders']:
483
                i = k
484
                row += 1
485
                anotherrow += 1
486
                worksheet.write(row, inc(), subOrder['productTitle'])
487
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
488
                worksheet.write(row, inc(), subOrder['amountPaid'])
489
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
490
                worksheet.write(row, inc(), subOrder['quantity'])
491
                worksheet1.write(anotherrow, i, subOrder['quantity'])
492
                worksheet.write(row, inc(), subOrder['status'])
493
                worksheet1.write(anotherrow, i, subOrder['status'])
494
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
495
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
496
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
497
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
498
 
499
        else:
500
            i=-1
501
            worksheet1.write(anotherrow, inc(), orderId)
502
            worksheet1.write(anotherrow, inc(), row1[1])
503
            worksheet1.write(anotherrow, inc(), row1[-1])
504
            worksheet1.write(anotherrow, inc(), row1[-2])
505
            worksheet1.write(anotherrow, inc(), row1[-3])
506
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
507
            worksheet1.write(anotherrow, inc(), order['subTagId'])
508
            worksheet1.write(anotherrow, inc(), order['placedOn'])
509
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
510
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
511
 
512
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
513
            inc()
514
            inc()
515
            inc()
516
            inc()
517
            k = i
518
            anotherrow -= 1
519
            for subOrder in order['subOrders']:
520
                anotherrow += 1
521
                i = k
522
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
523
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
524
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
525
                worksheet1.write(anotherrow, inc(), subOrder['status'])
526
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
527
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
528
            row5 += 1
529
            i=-1
530
            worksheet2.write(row5, inc(), order["orderId"])
531
            worksheet2.write(row5, inc(), row1[1])
532
            worksheet2.write(row5, inc(), row1[-1])
533
            worksheet2.write(row5, inc(), row1[-2])
534
            worksheet2.write(row5, inc(), row1[-3])
535
            worksheet2.write(row5, inc(), order['merchantOrderId'])
536
            worksheet2.write(row5, inc(), order['subTagId'])
537
            worksheet2.write(row5, inc(), order['placedOn'])
538
            worksheet2.write(row5, inc(), formattedTimestamp)
539
            worksheet2.write(row5, inc(), int(order['paidAmount']))
540
            row5 -=1
541
            k=i
542
            for subOrder in order['subOrders']:
543
                i = k
544
                row5 += 1
545
                worksheet2.write(row5, inc(), subOrder['productTitle'])
546
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
547
                worksheet2.write(row5, inc(), subOrder['quantity'])
548
                worksheet2.write(row5, inc(), subOrder['status'])
549
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
550
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
551
 
552
    last30Days =  date.today() - timedelta(days=30)
553
    int(time.mktime(last30Days.timetuple()))
554
    row = 0
555
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
556
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
557
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
558
        subTagId = offer.get("subTagId")
559
        saleTime = offer.get("transactionTime")
560
        orders = getOrdersByTag(subTagId, 7)
561
        for order in orders:
562
            if notReconciled.has_key(order[0]):
563
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
564
                if paidAmount==int(offer.get("transactionValue")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
565
                    i = column
566
                    worksheet1.write(roww, inc(), datetime.strftime(fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p"))        
567
                    worksheet1.write(roww, inc(), offer.get("transactionValue"))        
568
                    worksheet1.write(roww, inc(), offer.get("payOut"))
569
                    del notReconciled[order[0]]
570
                    print "found match for user", order[1]
571
                    db.shopcluesOrderAffiliateInfo.update({"transactionId":offer.get("transactionId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
572
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("uniqueKey")}}, multi=True)
573
                    break
574
 
575
    unreconciledOrders = notReconciled.keys()
576
 
577
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
578
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
579
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
580
        row += 1
581
        i=-1
582
        affNotReconciledSheet.write(row, inc(), offer.get("uniqueKey")) 
583
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
584
        affNotReconciledSheet.write(row, inc(), datetime.strftime(fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p")) 
585
        affNotReconciledSheet.write(row, inc(), offer.get("transactionValue")) 
586
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
587
        affNotReconciledSheet.write(row, inc(), offer.get("status"))
588
        affNotReconciledSheet.write(row, inc(), 'NA')
589
 
590
    workbook.save(XLS_SC_FILENAME)
591
 
14647 amit.gupta 592
def sendmail(email, message, title, *varargs):
14450 amit.gupta 593
    if email == "":
594
        return
595
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
596
    mailServer.ehlo()
597
    mailServer.starttls()
598
    mailServer.ehlo()
599
 
600
    # Create the container (outer) email message.
601
    msg = MIMEMultipart()
602
    msg['Subject'] = title
603
    msg.preamble = title
604
    html_msg = MIMEText(message, 'html')
605
    msg.attach(html_msg)
606
 
607
    #snapdeal more to be added here
14647 amit.gupta 608
    for fileName in varargs:
609
        snapdeal = MIMEBase('application', 'vnd.ms-excel')
610
        snapdeal.set_payload(file(fileName).read())
611
        encoders.encode_base64(snapdeal)
612
        snapdeal.add_header('Content-Disposition', 'attachment;filename=' + fileName)
613
        msg.attach(snapdeal)
14450 amit.gupta 614
 
615
 
616
    email.append('amit.gupta@shop2020.in')
617
    MAILTO = email 
618
    mailServer.login(SENDER, PASSWORD)
619
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
620
 
14508 amit.gupta 621
def setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet):
14505 amit.gupta 622
    boldStyle = xlwt.XFStyle()
623
    f = xlwt.Font()
624
    f.bold = True
625
    boldStyle.font = f
14501 amit.gupta 626
    row = 0
627
    global i
628
    i=-1    
629
    worksheet.write(row, inc(), 'Order Id', boldStyle)
630
    worksheet.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 631
    worksheet.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 632
    worksheet.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 633
    worksheet.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 634
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
635
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
636
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 637
    worksheet.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 638
    worksheet.write(row, inc(), 'Sale Amount', boldStyle)
639
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
640
    worksheet.write(row, inc(), 'Aff Sale Amt', boldStyle)
641
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 642
    worksheet.write(row, inc(), 'IP', boldStyle)
14501 amit.gupta 643
    worksheet.write(row, inc(), 'Product Title', boldStyle)
644
    worksheet.write(row, inc(), 'Price', boldStyle)
645
    worksheet.write(row, inc(), 'Quantity', boldStyle)
646
    worksheet.write(row, inc(), 'Status', boldStyle)
647
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
648
    worksheet.write(row, inc(), 'CashBack', boldStyle)
649
 
14505 amit.gupta 650
    i = -1
14501 amit.gupta 651
    worksheet1.write(row, inc(), 'Order Id', boldStyle)
652
    worksheet1.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 653
    worksheet1.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 654
    worksheet1.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 655
    worksheet1.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 656
    worksheet1.write(row, inc(), 'Merchant Order Id', boldStyle)
657
    worksheet1.write(row, inc(), 'SubtagId', boldStyle)
658
    worksheet1.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 659
    worksheet1.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 660
    worksheet1.write(row, inc(), 'Sale Amount', boldStyle)
661
    worksheet1.write(row, inc(), 'Aff Sale Date', boldStyle)
662
    worksheet1.write(row, inc(), 'Aff Sale Amt', boldStyle)
663
    worksheet1.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 664
    worksheet1.write(row, inc(), 'IP', boldStyle)
14501 amit.gupta 665
    worksheet1.write(row, inc(), 'Product Title', boldStyle)
666
    worksheet1.write(row, inc(), 'Price', boldStyle)
667
    worksheet1.write(row, inc(), 'Quantity', boldStyle)
668
    worksheet1.write(row, inc(), 'Status', boldStyle)
669
    worksheet1.write(row, inc(), 'Cashback Status', boldStyle)
670
    worksheet1.write(row, inc(), 'CashBack', boldStyle) 
14508 amit.gupta 671
 
672
    i = -1
673
    worksheet2.write(row, inc(), 'Order Id', boldStyle)
674
    worksheet2.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 675
    worksheet2.write(row, inc(), 'Username', boldStyle)
14605 amit.gupta 676
    worksheet2.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 677
    worksheet2.write(row, inc(), 'Device', boldStyle)
14508 amit.gupta 678
    worksheet2.write(row, inc(), 'Merchant Order Id', boldStyle)
679
    worksheet2.write(row, inc(), 'SubtagId', boldStyle)
680
    worksheet2.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 681
    worksheet2.write(row, inc(), 'Dtr Sale Date', boldStyle)
14508 amit.gupta 682
    worksheet2.write(row, inc(), 'Sale Amount', boldStyle)
683
    worksheet2.write(row, inc(), 'Product Title', boldStyle)
684
    worksheet2.write(row, inc(), 'Price', boldStyle)
685
    worksheet2.write(row, inc(), 'Quantity', boldStyle)
686
    worksheet2.write(row, inc(), 'Status', boldStyle)
687
    worksheet2.write(row, inc(), 'Cashback Status', boldStyle)
688
    worksheet2.write(row, inc(), 'CashBack', boldStyle)
14450 amit.gupta 689
 
14508 amit.gupta 690
    i =-1
691
    affNotReconciledSheet.write(row, inc(), 'AdId', boldStyle) 
692
    affNotReconciledSheet.write(row, inc(), 'subTagId', boldStyle) 
693
    affNotReconciledSheet.write(row, inc(), 'Sale Date', boldStyle) 
694
    affNotReconciledSheet.write(row, inc(), 'Sale Amount', boldStyle) 
695
    affNotReconciledSheet.write(row, inc(), 'Pay Out', boldStyle) 
696
    affNotReconciledSheet.write(row, inc(), 'Status', boldStyle) 
14601 amit.gupta 697
    affNotReconciledSheet.write(row, inc(), 'IP', boldStyle)
14524 amit.gupta 698
 
699
def getUserAmountReconciled():
700
    pass
701
 
14613 amit.gupta 702
def getUserOrders():
703
    global i
704
    rb = open_workbook(XLS_FILENAME,formatting_info=True)
705
    wb = copy(rb)
706
    worksheet = wb.add_sheet("All Users")
707
    worksheet1 = wb.add_sheet("Suspected Users")
14632 amit.gupta 708
    workbook = xlwt.Workbook()
709
    sh1 = workbook.add_sheet("All Orders")
15423 amit.gupta 710
    sh2 = workbook.add_sheet("Flipkart Orders")
14632 amit.gupta 711
 
14613 amit.gupta 712
    db=client.Dtr
713
    results = Mysql.fetchResult('''
14771 amit.gupta 714
        select ow.*, u.username, crm1.order_count, u.referrer from order_view ow left join users u on u.id = ow.user_id left join (select user_id, count(*) as order_count from order_view where status = 'ORDER_CREATED'  group by user_id) as crm1 on ow.user_id = crm1.user_id where lower(u.referrer) not like 'emp%' or u.referrer is null; 
14613 amit.gupta 715
        ''',)
716
    row = 0
717
    i=-1
718
    worksheet.write(row, inc(), 'User Id', boldStyle)
719
    worksheet1.write(row, i, 'User Id', boldStyle)
720
    worksheet.write(row, inc(), 'User name', boldStyle)
721
    worksheet1.write(row, i, 'User name', boldStyle)
722
    worksheet.write(row, inc(), 'Order Id', boldStyle)
723
    worksheet1.write(row, i, 'Order Id', boldStyle)
724
    worksheet.write(row, inc(), 'Created On', boldStyle)
725
    worksheet1.write(row, i, 'Created On', boldStyle)
726
    worksheet.write(row, inc(), 'Store Id', boldStyle)
727
    worksheet1.write(row, i, 'Store Id', boldStyle)
728
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
729
    worksheet1.write(row, i, 'Merchant Order Id', boldStyle)
14616 amit.gupta 730
    worksheet.write(row, inc(), 'Product title', boldStyle)
731
    worksheet1.write(row, i, 'Product title', boldStyle)
14613 amit.gupta 732
    worksheet.write(row, inc(), 'Amount Paid', boldStyle)
733
    worksheet1.write(row, i, 'Amount Paid', boldStyle)
734
    worksheet.write(row, inc(), 'Cashback', boldStyle)
735
    worksheet1.write(row, i, 'Cashback', boldStyle)
736
    worksheet.write(row, inc(), 'Order Status', boldStyle)
737
    worksheet1.write(row, i, 'Order Status', boldStyle)
738
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
739
    worksheet1.write(row, i, 'Detailed Status', boldStyle)
740
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
741
    worksheet1.write(row, i, 'Cashback Status', boldStyle)
742
    worksheet.write(row, inc(), 'Reconciled', boldStyle)
743
    worksheet1.write(row, i, 'Reconciled', boldStyle)
744
    worksheet.write(row, inc(), 'IP', boldStyle)
745
    worksheet1.write(row, i, 'IP', boldStyle)
14693 amit.gupta 746
    i=-1
747
    sh1.write(row, inc(), 'User Id', boldStyle)
748
    sh1.write(row, inc(), 'User name', boldStyle)
749
    sh1.write(row, inc(), 'Order Id', boldStyle)
750
    sh1.write(row, inc(), 'Created On', boldStyle)
751
    sh1.write(row, inc(), 'Store Id', boldStyle)
752
    sh1.write(row, inc(), 'Merchant Order Id', boldStyle)
14771 amit.gupta 753
    sh1.write(row, inc(), 'Status', boldStyle)
14693 amit.gupta 754
    sh1.write(row, inc(), 'Product title', boldStyle)
755
    sh1.write(row, inc(), 'Referrer', boldStyle)
756
    sh1.write(row, inc(), 'Amount Paid', boldStyle)
14771 amit.gupta 757
    sh1.write(row, inc(), 'Catalog Id', boldStyle)
14693 amit.gupta 758
    sh1.write(row, inc(), 'Brand', boldStyle)
759
    sh1.write(row, inc(), 'Model', boldStyle)
760
    sh1.write(row, inc(), 'Category', boldStyle)
15423 amit.gupta 761
    i =-1
762
    sh2.write(row, inc(), 'User Id', boldStyle)
763
    sh2.write(row, inc(), 'User name', boldStyle)
764
    sh2.write(row, inc(), 'Created On', boldStyle)
765
    sh2.write(row, inc(), 'Store', boldStyle)
766
    sh2.write(row, inc(), 'Status', boldStyle)
767
    sh2.write(row, inc(), 'Product title', boldStyle)
768
    sh2.write(row, inc(), 'Price', boldStyle)
769
    sh2.write(row, inc(), 'Quantity', boldStyle)
770
    sh2.write(row, inc(), 'Catalog Id', boldStyle)
771
    sh2.write(row, inc(), 'Brand', boldStyle)
772
    sh2.write(row, inc(), 'Model', boldStyle)
773
    sh2.write(row, inc(), 'Category', boldStyle)
14613 amit.gupta 774
 
775
    row=0
776
    row2=0
14632 amit.gupta 777
    row3=0
778
    db1 = client.Catalog
14613 amit.gupta 779
    for result in results:
780
        morder = db.merchantOrder.find_one({"orderId":result[0]})
781
        if morder is not None:
782
            subOrders = morder.get("subOrders")
783
            if subOrders is not None:
784
                for  subOrder in subOrders:
14632 amit.gupta 785
                    row3+=1
786
                    i=-1
14699 amit.gupta 787
                    sh1.write(row3, inc(), result[1])
788
                    sh1.write(row3, inc(), result[-3])
14632 amit.gupta 789
                    sh1.write(row3, inc(), result[0])
790
                    sh1.write(row3, inc(), result[-4], datetime_format)
791
                    sh1.write(row3, inc(), sourceMap.get(result[2]))
792
                    sh1.write(row3, inc(), morder.get("merchantOrderId"))
14771 amit.gupta 793
                    sh1.write(row3, inc(), subOrder.get("status"))
14632 amit.gupta 794
                    sh1.write(row3, inc(), subOrder.get("productTitle"))
14693 amit.gupta 795
                    sh1.write(row3, inc(), result[-1])
14632 amit.gupta 796
                    inc()
797
                    if int(subOrder.get("quantity")) > 0:
798
                        sh1.write(row3, i, int(subOrder.get("amountPaid"))/int(subOrder.get("quantity")))
14647 amit.gupta 799
                    skuData = getSkuData(morder.get("storeId"), subOrder.get("productCode"))
800
                    if morder.get("storeId") in (1,2,4,5):
801
                        skuData = db1.MasterData.find_one({'identifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
802
                    elif morder.get("storeId") == 3:
803
                        skuData = db1.MasterData.find_one({'secondaryIdentifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
14634 amit.gupta 804
                    if skuData is not None:
14771 amit.gupta 805
                        sh1.write(row3, inc(), skuData.get("skuBundleId"))
14634 amit.gupta 806
                        sh1.write(row3, inc(), skuData.get("brand"))
807
                        sh1.write(row3, inc(), skuData.get("model_name"))
808
                        sh1.write(row3, inc(), skuData.get("category"))
14881 amit.gupta 809
                    #removed filter as requested by Rajneesh
810
                    #if subOrder.get("cashBackStatus") == Store.CB_APPROVED or subOrder.get("cashBackStatus") == Store.CB_PENDING:
811
                    row +=1
812
                    i=-1
813
                    worksheet.write(row, inc(), result[0])
814
                    worksheet.write(row, inc(), result[-3])
815
                    worksheet.write(row, inc(), result[1])
816
                    worksheet.write(row, inc(), result[-4], datetime_format)
817
                    worksheet.write(row, inc(), result[2])
818
                    worksheet.write(row, inc(), morder.get("merchantOrderId"))
819
                    worksheet.write(row, inc(), subOrder.get("productTitle"))
820
                    worksheet.write(row, inc(), subOrder.get("amountPaid"))
821
                    worksheet.write(row, inc(), subOrder.get("cashBackAmount"))
822
                    worksheet.write(row, inc(), subOrder.get("status"))
823
                    worksheet.write(row, inc(), subOrder.get("detailedStatus"))
824
                    worksheet.write(row, inc(), subOrder.get("cashBackStatus"))
825
                    worksheet.write(row, inc(), False if morder.get("reconciled") is None else True)
826
                    if morder.get("reconciled") and morder.get("storeId")==3:
827
                        try:
828
                            worksheet.write(row, inc(), db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True}).get("ip"))
829
                        except:
830
                            print "Could not find", morder.get("adId"), "that is reconcired for order", morder.get("orderId")
831
                    if result[-2] >= 10:
832
                        row2 +=1 
14613 amit.gupta 833
                        i=-1
14881 amit.gupta 834
                        worksheet1.write(row2, inc(), result[0])
835
                        worksheet1.write(row2, inc(), result[-3])
836
                        worksheet1.write(row2, inc(), result[1])
837
                        worksheet1.write(row2, inc(), result[-4], datetime_format)
838
                        worksheet1.write(row2, inc(), result[2])
839
                        worksheet1.write(row2, inc(), morder.get("merchantOrderId"))
840
                        worksheet1.write(row2, inc(), subOrder.get("productTitle"))
841
                        worksheet1.write(row2, inc(), subOrder.get("amountPaid"))
842
                        worksheet1.write(row2, inc(), subOrder.get("cashBackAmount"))
843
                        worksheet1.write(row2, inc(), subOrder.get("status"))
844
                        worksheet1.write(row2, inc(), subOrder.get("detailedStatus"))
845
                        worksheet1.write(row2, inc(), subOrder.get("cashBackStatus"))
846
                        worksheet1.write(row2, inc(), False if morder.get("reconciled") is None else True)
14613 amit.gupta 847
                        if morder.get("reconciled") and morder.get("storeId")==3:
848
                            try:
14881 amit.gupta 849
                                worksheet1.write(row2, inc(), db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True}).get("ip"))
14613 amit.gupta 850
                            except:
851
                                print "Could not find", morder.get("adId"), "that is reconcired for order", morder.get("orderId")
15423 amit.gupta 852
 
15542 amit.gupta 853
    flipkartOrders = session.query(FlipkartOrders).order_by(FlipkartOrders.created.desc()).all()
15540 amit.gupta 854
    flipkartOrders.reverse()
15423 amit.gupta 855
    row3=0
15430 amit.gupta 856
    #try:
15540 amit.gupta 857
    for order in flipkartOrders:
15423 amit.gupta 858
        row3 += 1
859
        i=-1
15540 amit.gupta 860
        sh2.write(row3, inc(), order.user_id)
861
        sh2.write(row3, inc(), order.email)
862
        sh2.write(row3, inc(), order.created, datetime_format)
15423 amit.gupta 863
        sh2.write(row3, inc(), "Flipkart")
15540 amit.gupta 864
        sh2.write(row3, inc(), order.status)
865
        sh2.write(row3, inc(), order.title)
866
        sh2.write(row3, inc(), order.price)
867
        sh2.write(row3, inc(), order.quantity)
868
        sh2.write(row3, inc(), order.catalogId)
869
        sh2.write(row3, inc(), order.brand)
870
        sh2.write(row3, inc(), order.model)
871
        sh2.write(row3, inc(), order.category)
14632 amit.gupta 872
 
14613 amit.gupta 873
    wb.save(XLS_FILENAME)
14632 amit.gupta 874
    workbook.save(XLS_O_FILENAME)
14647 amit.gupta 875
 
876
def getSkuData(storeId, identifier):
877
    if storeId in (1,2,4,5):
878
        skuData = client.Catalog.MasterData.find_one({'identifier':identifier, 'source_id':storeId})
879
    elif storeId == 3:
880
        skuData = client.Catalog.MasterData.find_one({'secondaryIdentifier':identifier, 'source_id':storeId})
881
    return skuData
882
 
14460 amit.gupta 883
def inc():
884
    global i
885
    i+=1
886
    return i
15540 amit.gupta 887
 
888
def migrateFlipkartOrders():
889
    db = client.Dtr
890
    info = reversed(list(db.flipkartOrderAffiliateInfo.find()))
891
    #try:
892
    for order in info:
893
        userId = None
894
        subTagId = None
895
        email = None
896
        subTagId = order.get("subTagId")
897
        if subTagId:
898
            click = session.query(Clicks).filter_by(tag = subTagId).first()
899
            if click is not None:
900
                userId= click.user_id 
901
                user = session.query(Users.email).filter_by(id = userId).first()
902
                if user is not None:
903
                    email = user.email
904
 
905
        flipkartOrder = FlipkartOrders()
906
        flipkartOrder.user_id = userId
907
        flipkartOrder.identifier = order.get("identifier")
908
        flipkartOrder.email = email
909
        flipkartOrder.subtagId = order.get("subTagId")
910
        flipkartOrder.created = datetime.strptime(order.get("saleDate"), "%Y-%m-%d")
911
        flipkartOrder.status = order.get("conversionStatus")
912
        flipkartOrder.title = order.get("productTitle")
913
        flipkartOrder.price = order.get("price")
914
        flipkartOrder.quantity = order.get("quantity")
915
        flipkartOrder.productCode = order.get("productCode")
916
        skuData = getSkuData(2, order.get("productCode"))
917
        if skuData is not None:
918
            flipkartOrder.catalogId = skuData.get("skuBundleId")
919
            flipkartOrder.brand = skuData.get("brand")
920
            flipkartOrder.model = skuData.get("model_name")
921
            flipkartOrder.category =categoryMap.get(skuData.get("category_id"))
922
            flipkartOrder.title =skuData.get("source_product_name")
923
 
924
    session.commit()
14632 amit.gupta 925
def addHeaders(sheet):
926
    global i
927
    i = 0
928
    sheet.write(0, inc(), )
14450 amit.gupta 929
def main():
14647 amit.gupta 930
 
14450 amit.gupta 931
    generateSnapDealReco()
14647 amit.gupta 932
    generateFlipkartReco()
15791 manish.sha 933
    generateShopcluesReco()
14650 amit.gupta 934
    generateAmazonReco(XLS_A_FILENAME)
14613 amit.gupta 935
    getUserOrders()
15791 manish.sha 936
    sendmail(["amit.gupta@shop2020.in","rajneesh.arora@saholic.com"], "", "Affiliate Reco", XLS_FILENAME, XLS_F_FILENAME, XLS_A_FILENAME, XLS_SC_FILENAME)
15578 amit.gupta 937
    #sendmail(["amit.gupta@shop2020.in"], "", "Affiliate Reco", XLS_FILENAME, XLS_F_FILENAME, XLS_A_FILENAME)
15541 amit.gupta 938
    sendmail(["amit.gupta@shop2020.in", "rajneesh.arora@saholic.com", "chaitnaya.vats@saholic.com", "manoj.kumar@saholic.com"], "", "All DTR Orders", XLS_O_FILENAME)
14450 amit.gupta 939
 
940
if __name__ == '__main__':
15440 amit.gupta 941
    #info = client.Dtr.flipkartOrderAffiliateInfo.find()
942
    #print info
943
    main()
14460 amit.gupta 944