Subversion Repositories SmartDukaan

Rev

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