Subversion Repositories SmartDukaan

Rev

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