Subversion Repositories SmartDukaan

Rev

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