Subversion Repositories SmartDukaan

Rev

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