Subversion Repositories SmartDukaan

Rev

Rev 16726 | Rev 16947 | 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"]}))
16718 amit.gupta 254
        if len(aff) > 1:
255
            aff = [f for f in aff if f.get("payOut")>0]
14501 amit.gupta 256
        anotherrow += 1
14988 amit.gupta 257
        try:
258
            formattedTimestamp = order['placedOn']
259
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
260
        except:
261
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
262
            formattedTimestamp = datetime.strftime(fromTimeStamp(timestamp1), "%b %d, %Y, %I:%M %p")
16718 amit.gupta 263
        if len(aff) > 0 and order["subTagId"] not in matchedList and int(order["paidAmount"])==int(aff[0]["saleAmount"]):
264
 
14501 amit.gupta 265
            matchedList.append(order["subTagId"])
14610 amit.gupta 266
            db.snapdealOrderAffiliateInfo.update({"adId":aff[0].get("adId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
14501 amit.gupta 267
            order['reconciled'] = True
14610 amit.gupta 268
            order['adId'] = aff[0].get("adId")
14501 amit.gupta 269
            db.merchantOrder.save(order)
270
            row += 1
271
            i=-1 
272
            worksheet.write(row, inc(), orderId)
273
            worksheet1.write(anotherrow, i, orderId)
274
            worksheet.write(row, inc(), row1[1])
275
            worksheet1.write(anotherrow, i, row1[1])
14850 amit.gupta 276
            worksheet.write(row, inc(), row1[-1])
277
            worksheet1.write(anotherrow, i, row1[-1])
278
            worksheet.write(row, inc(), row1[-2])
279
            worksheet1.write(anotherrow, i, row1[-2])
14771 amit.gupta 280
            worksheet.write(row, inc(), row1[-3])
281
            worksheet1.write(anotherrow, i, row1[-3])
14501 amit.gupta 282
            worksheet.write(row, inc(), order['merchantOrderId'])
283
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
284
            worksheet.write(row, inc(), order['subTagId'])
285
            worksheet1.write(anotherrow, i, order['subTagId'])
286
            worksheet.write(row, inc(), order['placedOn'])
287
            worksheet1.write(anotherrow, i, order['placedOn'])
14988 amit.gupta 288
            worksheet.write(row, inc(), formattedTimestamp)
289
            worksheet1.write(anotherrow, i, formattedTimestamp)
14501 amit.gupta 290
            worksheet.write(row, inc(), int(order['paidAmount']))
291
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
14524 amit.gupta 292
            worksheet.write(row, inc(), aff[0]['saleDate'])
293
            worksheet1.write(anotherrow, i, aff[0]['saleDate'])
294
            worksheet.write(row, inc(), aff[0]['saleAmount'])
295
            worksheet1.write(anotherrow, i, aff[0]['saleAmount'])
296
            worksheet.write(row, inc(), aff[0]['payOut'])
297
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
14601 amit.gupta 298
            worksheet.write(row, inc(), aff[0]['ip'])
299
            worksheet1.write(anotherrow, i, aff[0]['ip'])
16718 amit.gupta 300
            worksheet.write(row, inc(), aff[0]['conversionStatus'])
301
            worksheet1.write(anotherrow, i, aff[0]['conversionStatus'])
14501 amit.gupta 302
            k = i
14504 amit.gupta 303
            row -= 1
304
            anotherrow -= 1
14501 amit.gupta 305
            for subOrder in order['subOrders']:
306
                i = k
14503 amit.gupta 307
                row += 1
308
                anotherrow += 1
14501 amit.gupta 309
                worksheet.write(row, inc(), subOrder['productTitle'])
310
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
311
                worksheet.write(row, inc(), subOrder['amountPaid'])
312
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
313
                worksheet.write(row, inc(), subOrder['quantity'])
314
                worksheet1.write(anotherrow, i, subOrder['quantity'])
315
                worksheet.write(row, inc(), subOrder['status'])
316
                worksheet1.write(anotherrow, i, subOrder['status'])
317
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
318
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
319
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
320
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
14504 amit.gupta 321
 
14501 amit.gupta 322
        else:
14524 amit.gupta 323
            i=-1
14501 amit.gupta 324
            worksheet1.write(anotherrow, inc(), orderId)
325
            worksheet1.write(anotherrow, inc(), row1[1])
14850 amit.gupta 326
            worksheet1.write(anotherrow, inc(), row1[-1])
327
            worksheet1.write(anotherrow, inc(), row1[-2])
14771 amit.gupta 328
            worksheet1.write(anotherrow, inc(), row1[-3])
14501 amit.gupta 329
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
330
            worksheet1.write(anotherrow, inc(), order['subTagId'])
331
            worksheet1.write(anotherrow, inc(), order['placedOn'])
15576 amit.gupta 332
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
14501 amit.gupta 333
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
14873 amit.gupta 334
 
14524 amit.gupta 335
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
336
            inc()
337
            inc()
338
            inc()
14771 amit.gupta 339
            inc()
16718 amit.gupta 340
            inc()
14501 amit.gupta 341
            k = i
14504 amit.gupta 342
            anotherrow -= 1
14501 amit.gupta 343
            for subOrder in order['subOrders']:
14503 amit.gupta 344
                anotherrow += 1
14501 amit.gupta 345
                i = k
14505 amit.gupta 346
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
347
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
348
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
349
                worksheet1.write(anotherrow, inc(), subOrder['status'])
350
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
351
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
15577 amit.gupta 352
            row5 += 1
353
            i=-1
354
            worksheet2.write(row5, inc(), order["orderId"])
355
            worksheet2.write(row5, inc(), row1[1])
356
            worksheet2.write(row5, inc(), row1[-1])
357
            worksheet2.write(row5, inc(), row1[-2])
358
            worksheet2.write(row5, inc(), row1[-3])
359
            worksheet2.write(row5, inc(), order['merchantOrderId'])
360
            worksheet2.write(row5, inc(), order['subTagId'])
361
            worksheet2.write(row5, inc(), order['placedOn'])
362
            worksheet2.write(row5, inc(), formattedTimestamp)
363
            worksheet2.write(row5, inc(), int(order['paidAmount']))
364
            row5 -=1
365
            k=i
366
            for subOrder in order['subOrders']:
367
                i = k
15578 amit.gupta 368
                row5 += 1
15577 amit.gupta 369
                worksheet2.write(row5, inc(), subOrder['productTitle'])
370
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
371
                worksheet2.write(row5, inc(), subOrder['quantity'])
372
                worksheet2.write(row5, inc(), subOrder['status'])
373
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
15578 amit.gupta 374
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
14524 amit.gupta 375
 
376
    last30Days =  date.today() - timedelta(days=30)
377
    int(time.mktime(last30Days.timetuple()))
378
    row = 0
379
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
380
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
381
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
382
        subTagId = offer.get("subTagId")
383
        saleTime = offer.get("saleTime")
384
        orders = getOrdersByTag(subTagId, 3)
385
        for order in orders:
386
            if notReconciled.has_key(order[0]):
387
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
388
                if paidAmount==int(offer.get("saleAmount")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
389
                    i = column
14570 amit.gupta 390
                    worksheet1.write(roww, inc(), offer.get("saleDate"))        
14527 amit.gupta 391
                    worksheet1.write(roww, inc(), offer.get("saleAmount"))        
392
                    worksheet1.write(roww, inc(), offer.get("payOut"))
393
                    del notReconciled[order[0]]
14530 amit.gupta 394
                    print "found match for user", order[1]
14610 amit.gupta 395
                    db.snapdealOrderAffiliateInfo.update({"adId":offer.get("adId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
396
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("adId")}}, multi=True)
14570 amit.gupta 397
                    break
14530 amit.gupta 398
 
14570 amit.gupta 399
    unreconciledOrders = notReconciled.keys()
15577 amit.gupta 400
 
14570 amit.gupta 401
 
402
 
403
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
404
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
405
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
406
        row += 1
407
        i=-1
408
        affNotReconciledSheet.write(row, inc(), offer.get("adId")) 
409
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
410
        affNotReconciledSheet.write(row, inc(), offer.get("saleDate")) 
411
        affNotReconciledSheet.write(row, inc(), offer.get("saleAmount")) 
412
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
413
        affNotReconciledSheet.write(row, inc(), offer.get("conversionStatus"))
14601 amit.gupta 414
        affNotReconciledSheet.write(row, inc(), offer.get("ip"))
14570 amit.gupta 415
 
15540 amit.gupta 416
    workbook.save(XLS_FILENAME)
15791 manish.sha 417
 
418
def generateShopcluesReco():
419
    global i
16238 manish.sha 420
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 5)
15791 manish.sha 421
    db = client.Dtr
422
    notReconciled = {}
423
    matchedList = []
424
    workbook = xlwt.Workbook()
425
    worksheet = workbook.add_sheet("Shopclues Reconciled")
426
    worksheet1 = workbook.add_sheet("Shopclues Reconciled All")
427
    worksheet2 = workbook.add_sheet("Shopclues Orders not reconciled")
428
    affNotReconciledSheet = workbook.add_sheet("Shopclues Aff not reconciled")
429
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet)
430
    row = 0
431
    anotherrow = 0
432
    row2 = 0
433
    row5=0
434
 
435
    for row1 in curs:
436
        orderId = row1[0]
437
        order = db.merchantOrder.find_one({"orderId":orderId})
438
        if order is None:
439
            continue
440
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))  26 May 2015 02:12 PM
16204 manish.sha 441
        aff = list(db.shopcluesOrderAffiliateInfo.find({"merchantOrderId":order["merchantOrderId"]}))
15791 manish.sha 442
        anotherrow += 1
443
        try:
444
            formattedTimestamp = order['placedOn']
445
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%d %b %Y %I:%M %p").timetuple()))
446
        except:
447
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
448
            formattedTimestamp = datetime.strftime(fromTimeStamp(timestamp1), "%d %b %Y %I:%M %p")
449
 
450
        if len(aff) > 0 and order["subTagId"] not in matchedList and long(order["paidAmount"])==long(float(aff[0]["transactionValue"])): 
451
            matchedList.append(order["subTagId"])
16204 manish.sha 452
            db.shopcluesOrderAffiliateInfo.update({"merchantOrderId":aff[0].get("merchantOrderId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
15791 manish.sha 453
            order['reconciled'] = True
454
            order['adId'] = aff[0].get("uniqueKey")
455
            db.merchantOrder.save(order)
456
            row += 1
457
            i=-1 
14450 amit.gupta 458
 
15791 manish.sha 459
            worksheet.write(row, inc(), orderId)
460
            worksheet1.write(anotherrow, i, orderId)
461
            worksheet.write(row, inc(), row1[1])
462
            worksheet1.write(anotherrow, i, row1[1])
463
            worksheet.write(row, inc(), row1[-1])
464
            worksheet1.write(anotherrow, i, row1[-1])
465
            worksheet.write(row, inc(), row1[-2])
466
            worksheet1.write(anotherrow, i, row1[-2])
467
            worksheet.write(row, inc(), row1[-3])
468
            worksheet1.write(anotherrow, i, row1[-3])
469
            worksheet.write(row, inc(), order['merchantOrderId'])
470
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
471
            worksheet.write(row, inc(), order['subTagId'])
472
            worksheet1.write(anotherrow, i, order['subTagId'])
473
            worksheet.write(row, inc(), order['placedOn'])
474
            worksheet1.write(anotherrow, i, order['placedOn'])
475
            worksheet.write(row, inc(), formattedTimestamp)
476
            worksheet1.write(anotherrow, i, formattedTimestamp)
477
            worksheet.write(row, inc(), int(order['paidAmount']))
478
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
479
            worksheet.write(row, inc(), datetime.strftime(fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
480
            worksheet1.write(anotherrow, i, datetime.strftime(fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
481
            worksheet.write(row, inc(), aff[0]['transactionValue'])
482
            worksheet1.write(anotherrow, i, aff[0]['transactionValue'])
483
            worksheet.write(row, inc(), aff[0]['payOut'])
484
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
16238 manish.sha 485
            worksheet.write(row, inc(), "NA")
486
            worksheet1.write(anotherrow, i, "NA")
15791 manish.sha 487
            k = i
488
            row -= 1
489
            anotherrow -= 1
490
            for subOrder in order['subOrders']:
491
                i = k
492
                row += 1
493
                anotherrow += 1
494
                worksheet.write(row, inc(), subOrder['productTitle'])
495
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
496
                worksheet.write(row, inc(), subOrder['amountPaid'])
497
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
498
                worksheet.write(row, inc(), subOrder['quantity'])
499
                worksheet1.write(anotherrow, i, subOrder['quantity'])
500
                worksheet.write(row, inc(), subOrder['status'])
501
                worksheet1.write(anotherrow, i, subOrder['status'])
502
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
503
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
504
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
505
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
506
 
507
        else:
508
            i=-1
509
            worksheet1.write(anotherrow, inc(), orderId)
510
            worksheet1.write(anotherrow, inc(), row1[1])
511
            worksheet1.write(anotherrow, inc(), row1[-1])
512
            worksheet1.write(anotherrow, inc(), row1[-2])
513
            worksheet1.write(anotherrow, inc(), row1[-3])
514
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
515
            worksheet1.write(anotherrow, inc(), order['subTagId'])
516
            worksheet1.write(anotherrow, inc(), order['placedOn'])
517
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
518
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
519
 
520
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
521
            inc()
522
            inc()
523
            inc()
524
            inc()
525
            k = i
526
            anotherrow -= 1
527
            for subOrder in order['subOrders']:
528
                anotherrow += 1
529
                i = k
530
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
531
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
532
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
533
                worksheet1.write(anotherrow, inc(), subOrder['status'])
534
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
535
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
536
            row5 += 1
537
            i=-1
538
            worksheet2.write(row5, inc(), order["orderId"])
539
            worksheet2.write(row5, inc(), row1[1])
540
            worksheet2.write(row5, inc(), row1[-1])
541
            worksheet2.write(row5, inc(), row1[-2])
542
            worksheet2.write(row5, inc(), row1[-3])
543
            worksheet2.write(row5, inc(), order['merchantOrderId'])
544
            worksheet2.write(row5, inc(), order['subTagId'])
545
            worksheet2.write(row5, inc(), order['placedOn'])
546
            worksheet2.write(row5, inc(), formattedTimestamp)
547
            worksheet2.write(row5, inc(), int(order['paidAmount']))
548
            row5 -=1
549
            k=i
550
            for subOrder in order['subOrders']:
551
                i = k
552
                row5 += 1
553
                worksheet2.write(row5, inc(), subOrder['productTitle'])
554
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
555
                worksheet2.write(row5, inc(), subOrder['quantity'])
556
                worksheet2.write(row5, inc(), subOrder['status'])
557
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
558
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
559
 
560
    last30Days =  date.today() - timedelta(days=30)
561
    int(time.mktime(last30Days.timetuple()))
562
    row = 0
563
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
564
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
565
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
566
        subTagId = offer.get("subTagId")
567
        saleTime = offer.get("transactionTime")
15794 manish.sha 568
        orders = getOrdersByTag(subTagId, 5)
15791 manish.sha 569
        for order in orders:
570
            if notReconciled.has_key(order[0]):
571
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
572
                if paidAmount==int(offer.get("transactionValue")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
573
                    i = column
574
                    worksheet1.write(roww, inc(), datetime.strftime(fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p"))        
575
                    worksheet1.write(roww, inc(), offer.get("transactionValue"))        
576
                    worksheet1.write(roww, inc(), offer.get("payOut"))
577
                    del notReconciled[order[0]]
578
                    print "found match for user", order[1]
579
                    db.shopcluesOrderAffiliateInfo.update({"transactionId":offer.get("transactionId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
580
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("uniqueKey")}}, multi=True)
581
                    break
582
 
583
    unreconciledOrders = notReconciled.keys()
584
 
585
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
586
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
587
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
588
        row += 1
589
        i=-1
590
        affNotReconciledSheet.write(row, inc(), offer.get("uniqueKey")) 
591
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
592
        affNotReconciledSheet.write(row, inc(), datetime.strftime(fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p")) 
593
        affNotReconciledSheet.write(row, inc(), offer.get("transactionValue")) 
594
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
595
        affNotReconciledSheet.write(row, inc(), offer.get("status"))
596
        affNotReconciledSheet.write(row, inc(), 'NA')
597
 
598
    workbook.save(XLS_SC_FILENAME)
599
 
14647 amit.gupta 600
def sendmail(email, message, title, *varargs):
14450 amit.gupta 601
    if email == "":
602
        return
603
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
604
    mailServer.ehlo()
605
    mailServer.starttls()
606
    mailServer.ehlo()
607
 
608
    # Create the container (outer) email message.
609
    msg = MIMEMultipart()
610
    msg['Subject'] = title
611
    msg.preamble = title
612
    html_msg = MIMEText(message, 'html')
613
    msg.attach(html_msg)
614
 
615
    #snapdeal more to be added here
14647 amit.gupta 616
    for fileName in varargs:
617
        snapdeal = MIMEBase('application', 'vnd.ms-excel')
618
        snapdeal.set_payload(file(fileName).read())
619
        encoders.encode_base64(snapdeal)
620
        snapdeal.add_header('Content-Disposition', 'attachment;filename=' + fileName)
621
        msg.attach(snapdeal)
14450 amit.gupta 622
 
623
 
624
    email.append('amit.gupta@shop2020.in')
625
    MAILTO = email 
626
    mailServer.login(SENDER, PASSWORD)
627
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
628
 
14508 amit.gupta 629
def setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet):
14505 amit.gupta 630
    boldStyle = xlwt.XFStyle()
631
    f = xlwt.Font()
632
    f.bold = True
633
    boldStyle.font = f
14501 amit.gupta 634
    row = 0
635
    global i
636
    i=-1    
637
    worksheet.write(row, inc(), 'Order Id', boldStyle)
638
    worksheet.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 639
    worksheet.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 640
    worksheet.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 641
    worksheet.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 642
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
643
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
644
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 645
    worksheet.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 646
    worksheet.write(row, inc(), 'Sale Amount', boldStyle)
647
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
648
    worksheet.write(row, inc(), 'Aff Sale Amt', boldStyle)
649
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 650
    worksheet.write(row, inc(), 'IP', boldStyle)
16718 amit.gupta 651
    worksheet.write(row, inc(), 'Aff Status', boldStyle)
14501 amit.gupta 652
    worksheet.write(row, inc(), 'Product Title', boldStyle)
653
    worksheet.write(row, inc(), 'Price', boldStyle)
654
    worksheet.write(row, inc(), 'Quantity', boldStyle)
655
    worksheet.write(row, inc(), 'Status', boldStyle)
656
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
657
    worksheet.write(row, inc(), 'CashBack', boldStyle)
658
 
14505 amit.gupta 659
    i = -1
14501 amit.gupta 660
    worksheet1.write(row, inc(), 'Order Id', boldStyle)
661
    worksheet1.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 662
    worksheet1.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 663
    worksheet1.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 664
    worksheet1.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 665
    worksheet1.write(row, inc(), 'Merchant Order Id', boldStyle)
666
    worksheet1.write(row, inc(), 'SubtagId', boldStyle)
667
    worksheet1.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 668
    worksheet1.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 669
    worksheet1.write(row, inc(), 'Sale Amount', boldStyle)
670
    worksheet1.write(row, inc(), 'Aff Sale Date', boldStyle)
671
    worksheet1.write(row, inc(), 'Aff Sale Amt', boldStyle)
672
    worksheet1.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 673
    worksheet1.write(row, inc(), 'IP', boldStyle)
16718 amit.gupta 674
    worksheet1.write(row, inc(), 'Aff Status', boldStyle)
14501 amit.gupta 675
    worksheet1.write(row, inc(), 'Product Title', boldStyle)
676
    worksheet1.write(row, inc(), 'Price', boldStyle)
677
    worksheet1.write(row, inc(), 'Quantity', boldStyle)
678
    worksheet1.write(row, inc(), 'Status', boldStyle)
679
    worksheet1.write(row, inc(), 'Cashback Status', boldStyle)
680
    worksheet1.write(row, inc(), 'CashBack', boldStyle) 
14508 amit.gupta 681
 
682
    i = -1
683
    worksheet2.write(row, inc(), 'Order Id', boldStyle)
684
    worksheet2.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 685
    worksheet2.write(row, inc(), 'Username', boldStyle)
14605 amit.gupta 686
    worksheet2.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 687
    worksheet2.write(row, inc(), 'Device', boldStyle)
14508 amit.gupta 688
    worksheet2.write(row, inc(), 'Merchant Order Id', boldStyle)
689
    worksheet2.write(row, inc(), 'SubtagId', boldStyle)
690
    worksheet2.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 691
    worksheet2.write(row, inc(), 'Dtr Sale Date', boldStyle)
14508 amit.gupta 692
    worksheet2.write(row, inc(), 'Sale Amount', boldStyle)
693
    worksheet2.write(row, inc(), 'Product Title', boldStyle)
694
    worksheet2.write(row, inc(), 'Price', boldStyle)
695
    worksheet2.write(row, inc(), 'Quantity', boldStyle)
696
    worksheet2.write(row, inc(), 'Status', boldStyle)
697
    worksheet2.write(row, inc(), 'Cashback Status', boldStyle)
698
    worksheet2.write(row, inc(), 'CashBack', boldStyle)
14450 amit.gupta 699
 
14508 amit.gupta 700
    i =-1
701
    affNotReconciledSheet.write(row, inc(), 'AdId', boldStyle) 
702
    affNotReconciledSheet.write(row, inc(), 'subTagId', boldStyle) 
703
    affNotReconciledSheet.write(row, inc(), 'Sale Date', boldStyle) 
704
    affNotReconciledSheet.write(row, inc(), 'Sale Amount', boldStyle) 
705
    affNotReconciledSheet.write(row, inc(), 'Pay Out', boldStyle) 
706
    affNotReconciledSheet.write(row, inc(), 'Status', boldStyle) 
14601 amit.gupta 707
    affNotReconciledSheet.write(row, inc(), 'IP', boldStyle)
14524 amit.gupta 708
 
709
def getUserAmountReconciled():
710
    pass
711
 
14613 amit.gupta 712
def getUserOrders():
713
    global i
714
    rb = open_workbook(XLS_FILENAME,formatting_info=True)
715
    wb = copy(rb)
716
    worksheet = wb.add_sheet("All Users")
16726 amit.gupta 717
    #worksheet1 = wb.add_sheet("Suspected Users")
14632 amit.gupta 718
    workbook = xlwt.Workbook()
719
    sh1 = workbook.add_sheet("All Orders")
15423 amit.gupta 720
    sh2 = workbook.add_sheet("Flipkart Orders")
14632 amit.gupta 721
 
14613 amit.gupta 722
    db=client.Dtr
723
    results = Mysql.fetchResult('''
15932 amit.gupta 724
        select ow.*, u.username, crm1.order_count, u.referrer, aua.city,aua.state,aua.pincode from order_view ow 
725
        left join users u on u.id = ow.user_id 
726
        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
727
        left join (select * from (select * from all_user_addresses order by source) s group by user_id)aua on aua.user_id=u.id 
728
        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 729
        ''',)
730
    row = 0
731
    i=-1
732
    worksheet.write(row, inc(), 'User Id', boldStyle)
16726 amit.gupta 733
    #worksheet1.write(row, i, 'User Id', boldStyle)
14613 amit.gupta 734
    worksheet.write(row, inc(), 'User name', boldStyle)
16726 amit.gupta 735
    #worksheet1.write(row, i, 'User name', boldStyle)
14613 amit.gupta 736
    worksheet.write(row, inc(), 'Order Id', boldStyle)
16726 amit.gupta 737
    #worksheet1.write(row, i, 'Order Id', boldStyle)
14613 amit.gupta 738
    worksheet.write(row, inc(), 'Created On', boldStyle)
16726 amit.gupta 739
    #worksheet1.write(row, i, 'Created On', boldStyle)
14613 amit.gupta 740
    worksheet.write(row, inc(), 'Store Id', boldStyle)
16726 amit.gupta 741
    #worksheet1.write(row, i, 'Store Id', boldStyle)
14613 amit.gupta 742
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
16785 amit.gupta 743
    worksheet.write(row, inc(), 'SubOrder Id', boldStyle)
16726 amit.gupta 744
    #worksheet1.write(row, i, 'Merchant Order Id', boldStyle)
14616 amit.gupta 745
    worksheet.write(row, inc(), 'Product title', boldStyle)
16726 amit.gupta 746
    #worksheet1.write(row, i, 'Product title', boldStyle)
14613 amit.gupta 747
    worksheet.write(row, inc(), 'Amount Paid', boldStyle)
16726 amit.gupta 748
    #worksheet1.write(row, i, 'Amount Paid', boldStyle)
14613 amit.gupta 749
    worksheet.write(row, inc(), 'Cashback', boldStyle)
16726 amit.gupta 750
    #worksheet1.write(row, i, 'Cashback', boldStyle)
14613 amit.gupta 751
    worksheet.write(row, inc(), 'Order Status', boldStyle)
16726 amit.gupta 752
    #worksheet1.write(row, i, 'Order Status', boldStyle)
14613 amit.gupta 753
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
16726 amit.gupta 754
    #worksheet1.write(row, i, 'Detailed Status', boldStyle)
14613 amit.gupta 755
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
16726 amit.gupta 756
    #worksheet1.write(row, i, 'Cashback Status', boldStyle)
14613 amit.gupta 757
    worksheet.write(row, inc(), 'Reconciled', boldStyle)
16726 amit.gupta 758
    #worksheet1.write(row, i, 'Reconciled', boldStyle)
14613 amit.gupta 759
    worksheet.write(row, inc(), 'IP', boldStyle)
16726 amit.gupta 760
    #worksheet1.write(row, i, 'IP', boldStyle)
16718 amit.gupta 761
    worksheet.write(row, inc(), 'Aff Status', boldStyle)
16726 amit.gupta 762
    #worksheet1.write(row, i, 'Aff Status', boldStyle)
14693 amit.gupta 763
    i=-1
764
    sh1.write(row, inc(), 'User Id', boldStyle)
765
    sh1.write(row, inc(), 'User name', boldStyle)
766
    sh1.write(row, inc(), 'Order Id', boldStyle)
767
    sh1.write(row, inc(), 'Created On', boldStyle)
768
    sh1.write(row, inc(), 'Store Id', boldStyle)
769
    sh1.write(row, inc(), 'Merchant Order Id', boldStyle)
14771 amit.gupta 770
    sh1.write(row, inc(), 'Status', boldStyle)
15932 amit.gupta 771
    sh1.write(row, inc(), 'Detailed Status', boldStyle)
14693 amit.gupta 772
    sh1.write(row, inc(), 'Product title', boldStyle)
773
    sh1.write(row, inc(), 'Referrer', boldStyle)
774
    sh1.write(row, inc(), 'Amount Paid', boldStyle)
14771 amit.gupta 775
    sh1.write(row, inc(), 'Catalog Id', boldStyle)
14693 amit.gupta 776
    sh1.write(row, inc(), 'Brand', boldStyle)
777
    sh1.write(row, inc(), 'Model', boldStyle)
778
    sh1.write(row, inc(), 'Category', boldStyle)
15932 amit.gupta 779
    sh1.write(row, inc(), 'Deal Rank', boldStyle)
16286 amit.gupta 780
    sh1.write(row, inc(), 'Max Nlc', boldStyle)
781
    sh1.write(row, inc(), 'Min Nlc', boldStyle)
782
    sh1.write(row, inc(), 'DP', boldStyle)
783
    sh1.write(row, inc(), 'Item status', boldStyle)
15932 amit.gupta 784
    sh1.write(row, inc(), 'City', boldStyle)
785
    sh1.write(row, inc(), 'State', boldStyle)
786
    sh1.write(row, inc(), 'Pincode', boldStyle)
15423 amit.gupta 787
    i =-1
788
    sh2.write(row, inc(), 'User Id', boldStyle)
789
    sh2.write(row, inc(), 'User name', boldStyle)
790
    sh2.write(row, inc(), 'Created On', boldStyle)
791
    sh2.write(row, inc(), 'Store', boldStyle)
792
    sh2.write(row, inc(), 'Status', boldStyle)
793
    sh2.write(row, inc(), 'Product title', boldStyle)
794
    sh2.write(row, inc(), 'Price', boldStyle)
795
    sh2.write(row, inc(), 'Quantity', boldStyle)
796
    sh2.write(row, inc(), 'Catalog Id', boldStyle)
797
    sh2.write(row, inc(), 'Brand', boldStyle)
798
    sh2.write(row, inc(), 'Model', boldStyle)
799
    sh2.write(row, inc(), 'Category', boldStyle)
14613 amit.gupta 800
 
801
    row=0
802
    row2=0
14632 amit.gupta 803
    row3=0
804
    db1 = client.Catalog
14613 amit.gupta 805
    for result in results:
806
        morder = db.merchantOrder.find_one({"orderId":result[0]})
807
        if morder is not None:
808
            subOrders = morder.get("subOrders")
809
            if subOrders is not None:
810
                for  subOrder in subOrders:
14632 amit.gupta 811
                    row3+=1
812
                    i=-1
14699 amit.gupta 813
                    sh1.write(row3, inc(), result[1])
15932 amit.gupta 814
                    sh1.write(row3, inc(), result[7])
14632 amit.gupta 815
                    sh1.write(row3, inc(), result[0])
15932 amit.gupta 816
                    sh1.write(row3, inc(), result[6], datetime_format)
14632 amit.gupta 817
                    sh1.write(row3, inc(), sourceMap.get(result[2]))
818
                    sh1.write(row3, inc(), morder.get("merchantOrderId"))
14771 amit.gupta 819
                    sh1.write(row3, inc(), subOrder.get("status"))
15932 amit.gupta 820
                    sh1.write(row3, inc(), subOrder.get("detailedStatus"))
14632 amit.gupta 821
                    sh1.write(row3, inc(), subOrder.get("productTitle"))
15932 amit.gupta 822
                    sh1.write(row3, inc(), result[9])
14632 amit.gupta 823
                    inc()
824
                    if int(subOrder.get("quantity")) > 0:
825
                        sh1.write(row3, i, int(subOrder.get("amountPaid"))/int(subOrder.get("quantity")))
14647 amit.gupta 826
                    skuData = getSkuData(morder.get("storeId"), subOrder.get("productCode"))
16492 amit.gupta 827
                    if morder.get("storeId") in (1,2,4,5,6):
14647 amit.gupta 828
                        skuData = db1.MasterData.find_one({'identifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
829
                    elif morder.get("storeId") == 3:
830
                        skuData = db1.MasterData.find_one({'secondaryIdentifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
14634 amit.gupta 831
                    if skuData is not None:
14771 amit.gupta 832
                        sh1.write(row3, inc(), skuData.get("skuBundleId"))
14634 amit.gupta 833
                        sh1.write(row3, inc(), skuData.get("brand"))
834
                        sh1.write(row3, inc(), skuData.get("model_name"))
835
                        sh1.write(row3, inc(), skuData.get("category"))
16213 amit.gupta 836
                        sh1.write(row3, inc(), subOrder.get("dealRank"))
16286 amit.gupta 837
                        sh1.write(row3, inc(), subOrder.get("maxNlc"))
838
                        sh1.write(row3, inc(), subOrder.get("minNlc"))
16317 amit.gupta 839
                        sh1.write(row3, inc(), utils.statusMap.get(subOrder.get("db")))
840
 
16286 amit.gupta 841
                        sh1.write(row3, inc(), subOrder.get("itemStatus"))
15932 amit.gupta 842
                    else:
843
                        sh1.write(row3, inc(), None)
844
                        sh1.write(row3, inc(), None)
845
                        sh1.write(row3, inc(), None)
846
                        sh1.write(row3, inc(), None)
847
                        sh1.write(row3, inc(), None)
16286 amit.gupta 848
                        sh1.write(row3, inc(), None)
849
                        sh1.write(row3, inc(), None)
850
                        sh1.write(row3, inc(), None)
851
                        sh1.write(row3, inc(), None)
15932 amit.gupta 852
                    sh1.write(row3, inc(), result[10])
853
                    sh1.write(row3, inc(), result[11])
854
                    sh1.write(row3, inc(), result[12])
855
 
14881 amit.gupta 856
                    #removed filter as requested by Rajneesh
857
                    #if subOrder.get("cashBackStatus") == Store.CB_APPROVED or subOrder.get("cashBackStatus") == Store.CB_PENDING:
858
                    row +=1
859
                    i=-1
860
                    worksheet.write(row, inc(), result[0])
15932 amit.gupta 861
                    worksheet.write(row, inc(), result[7])
14881 amit.gupta 862
                    worksheet.write(row, inc(), result[1])
15932 amit.gupta 863
                    worksheet.write(row, inc(), result[6], datetime_format)
14881 amit.gupta 864
                    worksheet.write(row, inc(), result[2])
865
                    worksheet.write(row, inc(), morder.get("merchantOrderId"))
16785 amit.gupta 866
                    worksheet.write(row, inc(), subOrder.get("merchantSubOrderId"))                    
14881 amit.gupta 867
                    worksheet.write(row, inc(), subOrder.get("productTitle"))
868
                    worksheet.write(row, inc(), subOrder.get("amountPaid"))
869
                    worksheet.write(row, inc(), subOrder.get("cashBackAmount"))
870
                    worksheet.write(row, inc(), subOrder.get("status"))
871
                    worksheet.write(row, inc(), subOrder.get("detailedStatus"))
872
                    worksheet.write(row, inc(), subOrder.get("cashBackStatus"))
873
                    worksheet.write(row, inc(), False if morder.get("reconciled") is None else True)
874
                    if morder.get("reconciled") and morder.get("storeId")==3:
875
                        try:
16718 amit.gupta 876
                            snapdealafinfo = db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True})
877
                            worksheet.write(row, inc(), snapdealafinfo.get("ip"))
878
                            worksheet.write(row, inc(), snapdealafinfo.get("conversionStatus"))
14881 amit.gupta 879
                        except:
16718 amit.gupta 880
                            print "Could not find", morder.get("adId"), "that is reconciled for order", morder.get("orderId")
16726 amit.gupta 881
                    #if result[8] >= 10:
882
                    #    row2 +=1 
883
                    #    i=-1
884
                        #worksheet1.write(row2, inc(), result[0])
885
                        #worksheet1.write(row2, inc(), result[7])
886
                        #worksheet1.write(row2, inc(), result[1])
887
                        #worksheet1.write(row2, inc(), result[6], datetime_format)
888
                        #worksheet1.write(row2, inc(), result[2])
889
                        #worksheet1.write(row2, inc(), morder.get("merchantOrderId"))
890
                        #worksheet1.write(row2, inc(), subOrder.get("productTitle"))
891
                        #worksheet1.write(row2, inc(), subOrder.get("amountPaid"))
892
                        #worksheet1.write(row2, inc(), subOrder.get("cashBackAmount"))
893
                        #worksheet1.write(row2, inc(), subOrder.get("status"))
894
                        #worksheet1.write(row2, inc(), subOrder.get("detailedStatus"))
895
                        #worksheet1.write(row2, inc(), subOrder.get("cashBackStatus"))
896
                        #worksheet1.write(row2, inc(), False if morder.get("reconciled") is None else True)
897
                        #worksheet1.write(row2, inc(), )
898
                        #if morder.get("reconciled") and morder.get("storeId")==3:
899
                        #    try:
900
                        #        snapdealafinfo = db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True})
901
                        #        worksheet1.write(row2, inc(), snapdealafinfo.get("ip"))
902
                        #        worksheet1.write(row2, inc(), snapdealafinfo.get("conversionStatus"))
903
                        #    except:
904
                        #        print "Could not find", morder.get("adId"), "that is reconcired for order", morder.get("orderId")
15423 amit.gupta 905
 
15542 amit.gupta 906
    flipkartOrders = session.query(FlipkartOrders).order_by(FlipkartOrders.created.desc()).all()
15540 amit.gupta 907
    flipkartOrders.reverse()
15423 amit.gupta 908
    row3=0
15430 amit.gupta 909
    #try:
15540 amit.gupta 910
    for order in flipkartOrders:
15423 amit.gupta 911
        row3 += 1
912
        i=-1
15540 amit.gupta 913
        sh2.write(row3, inc(), order.user_id)
914
        sh2.write(row3, inc(), order.email)
915
        sh2.write(row3, inc(), order.created, datetime_format)
15423 amit.gupta 916
        sh2.write(row3, inc(), "Flipkart")
15540 amit.gupta 917
        sh2.write(row3, inc(), order.status)
918
        sh2.write(row3, inc(), order.title)
919
        sh2.write(row3, inc(), order.price)
920
        sh2.write(row3, inc(), order.quantity)
921
        sh2.write(row3, inc(), order.catalogId)
922
        sh2.write(row3, inc(), order.brand)
923
        sh2.write(row3, inc(), order.model)
924
        sh2.write(row3, inc(), order.category)
14632 amit.gupta 925
 
14613 amit.gupta 926
    wb.save(XLS_FILENAME)
14632 amit.gupta 927
    workbook.save(XLS_O_FILENAME)
14647 amit.gupta 928
 
929
def getSkuData(storeId, identifier):
16492 amit.gupta 930
    if storeId in (1,2,4,5,6):
14647 amit.gupta 931
        skuData = client.Catalog.MasterData.find_one({'identifier':identifier, 'source_id':storeId})
932
    elif storeId == 3:
933
        skuData = client.Catalog.MasterData.find_one({'secondaryIdentifier':identifier, 'source_id':storeId})
934
    return skuData
935
 
14460 amit.gupta 936
def inc():
937
    global i
938
    i+=1
939
    return i
15540 amit.gupta 940
 
941
def migrateFlipkartOrders():
942
    db = client.Dtr
943
    info = reversed(list(db.flipkartOrderAffiliateInfo.find()))
944
    #try:
945
    for order in info:
946
        userId = None
947
        subTagId = None
948
        email = None
949
        subTagId = order.get("subTagId")
950
        if subTagId:
951
            click = session.query(Clicks).filter_by(tag = subTagId).first()
952
            if click is not None:
953
                userId= click.user_id 
954
                user = session.query(Users.email).filter_by(id = userId).first()
955
                if user is not None:
956
                    email = user.email
957
 
958
        flipkartOrder = FlipkartOrders()
959
        flipkartOrder.user_id = userId
960
        flipkartOrder.identifier = order.get("identifier")
961
        flipkartOrder.email = email
962
        flipkartOrder.subtagId = order.get("subTagId")
963
        flipkartOrder.created = datetime.strptime(order.get("saleDate"), "%Y-%m-%d")
964
        flipkartOrder.status = order.get("conversionStatus")
965
        flipkartOrder.title = order.get("productTitle")
966
        flipkartOrder.price = order.get("price")
967
        flipkartOrder.quantity = order.get("quantity")
968
        flipkartOrder.productCode = order.get("productCode")
969
        skuData = getSkuData(2, order.get("productCode"))
970
        if skuData is not None:
971
            flipkartOrder.catalogId = skuData.get("skuBundleId")
972
            flipkartOrder.brand = skuData.get("brand")
973
            flipkartOrder.model = skuData.get("model_name")
974
            flipkartOrder.category =categoryMap.get(skuData.get("category_id"))
975
            flipkartOrder.title =skuData.get("source_product_name")
976
 
977
    session.commit()
14632 amit.gupta 978
def addHeaders(sheet):
979
    global i
980
    i = 0
981
    sheet.write(0, inc(), )
14450 amit.gupta 982
def main():
14647 amit.gupta 983
 
14450 amit.gupta 984
    generateSnapDealReco()
14647 amit.gupta 985
    generateFlipkartReco()
15791 manish.sha 986
    generateShopcluesReco()
14650 amit.gupta 987
    generateAmazonReco(XLS_A_FILENAME)
14613 amit.gupta 988
    getUserOrders()
16266 manish.sha 989
    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 990
    #sendmail(["amit.gupta@shop2020.in"], "", "Affiliate Reco", XLS_FILENAME, XLS_F_FILENAME, XLS_A_FILENAME)
16266 manish.sha 991
    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 992
 
993
if __name__ == '__main__':
15440 amit.gupta 994
    #info = client.Dtr.flipkartOrderAffiliateInfo.find()
995
    #print info
996
    main()
14460 amit.gupta 997