Subversion Repositories SmartDukaan

Rev

Rev 17020 | Rev 17033 | 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
17001 amit.gupta 29
from dtr.utils.utils import toTimeStamp
14460 amit.gupta 30
#from xlwt import 
14450 amit.gupta 31
 
15445 amit.gupta 32
DataService.initialize()
14450 amit.gupta 33
client = MongoClient('mongodb://localhost:27017/')
34
 
35
SENDER = "cnc.center@shop2020.in"
36
PASSWORD = "5h0p2o2o"
37
SUBJECT = "DTR User Segmentation report for " + date.today().isoformat()
38
SMTP_SERVER = "smtp.gmail.com"
39
SMTP_PORT = 587    
40
 
14647 amit.gupta 41
XLS_FILENAME = "snapdealaffiliatereco.xls"
14632 amit.gupta 42
XLS_O_FILENAME = "allorders.xls"
14647 amit.gupta 43
XLS_F_FILENAME = "flipkartaffiliatereco.xls"
14650 amit.gupta 44
XLS_A_FILENAME = "amazonaffiliatereco.xls"
15791 manish.sha 45
XLS_SC_FILENAME = "shopcluesaffiliatereco.xls"
17013 manish.sha 46
XLS_HS_FILENAME = "homeshopaffiliatereco.xls"
14460 amit.gupta 47
boldStyle = xlwt.XFStyle()
48
f = xlwt.Font()
49
f.bold = True
50
boldStyle.font = f
51
i = -1
14616 amit.gupta 52
 
53
datetime_format = xlwt.XFStyle()
54
datetime_format.num_format_str = 'dd/mm/yyyy HH:MM AM/PM'
15540 amit.gupta 55
categoryMap = {3:"Mobiles", 5:"Tablets"}
14450 amit.gupta 56
def generateFlipkartReco():
14508 amit.gupta 57
    global i
58
    i = -1
14460 amit.gupta 59
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 2)
60
    db = client.Dtr
14647 amit.gupta 61
    wb = xlwt.Workbook()
62
    #rb = open_workbook(XLS_F_FILENAME)
63
    #wb = copy(rb)
14460 amit.gupta 64
    #wb = xlwt.Workbook()
65
    row = 0
14647 amit.gupta 66
    row2 = 0
67
    row3 = 0
68
    row4 = 0
69
    worksheet = wb.add_sheet("All Orders")
70
    worksheet1 = wb.add_sheet("Orders Reconciled")
71
    worksheet2 = wb.add_sheet("Orders not Reconciled")
72
    worksheet3 = wb.add_sheet("Aff not Reconciled")
14460 amit.gupta 73
    worksheet.write(row, inc(), 'Order Id', boldStyle)
14647 amit.gupta 74
    worksheet1.write(row, i, 'Order Id', boldStyle)
75
    worksheet2.write(row, i, 'Order Id', boldStyle)
14460 amit.gupta 76
    worksheet.write(row, inc(), 'User Id', boldStyle)
14647 amit.gupta 77
    worksheet1.write(row, i, 'User Id', boldStyle)
78
    worksheet2.write(row, i, 'User Id', boldStyle)
14474 amit.gupta 79
    worksheet.write(row, inc(), 'Username', boldStyle)
14647 amit.gupta 80
    worksheet1.write(row, i, 'Username', boldStyle)
81
    worksheet2.write(row, i, 'Username', boldStyle)
14771 amit.gupta 82
    worksheet.write(row, inc(), 'Version code', boldStyle)
83
    worksheet1.write(row, i, 'Version code', boldStyle)
84
    worksheet2.write(row, i, 'Version code', boldStyle)
85
    worksheet.write(row, inc(), 'Device', boldStyle)
86
    worksheet1.write(row, i, 'Device', boldStyle)
87
    worksheet2.write(row, i, 'Device', boldStyle)
14460 amit.gupta 88
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
14647 amit.gupta 89
    worksheet1.write(row, i, 'Merchant Order Id', boldStyle)
90
    worksheet2.write(row, i, 'Merchant Order Id', boldStyle)
14460 amit.gupta 91
    worksheet.write(row, inc(), 'Product Title', boldStyle)
14647 amit.gupta 92
    worksheet1.write(row, i, 'Product Title', boldStyle)
93
    worksheet2.write(row, i, 'Product Title', boldStyle)
14460 amit.gupta 94
    worksheet.write(row, inc(), 'Price', boldStyle)
14647 amit.gupta 95
    worksheet1.write(row, i, 'Price', boldStyle)
96
    worksheet2.write(row, i, 'Price', boldStyle)
14460 amit.gupta 97
    worksheet.write(row, inc(), 'Quantity', boldStyle)
14647 amit.gupta 98
    worksheet1.write(row, i, 'Quantity', boldStyle)
99
    worksheet2.write(row, i, 'Quantity', boldStyle)
14460 amit.gupta 100
    worksheet.write(row, inc(), 'Status', boldStyle)
14647 amit.gupta 101
    worksheet1.write(row, i, 'Status', boldStyle)
102
    worksheet2.write(row, i, 'Status', boldStyle)
14460 amit.gupta 103
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
14647 amit.gupta 104
    worksheet1.write(row, i, 'Detailed Status', boldStyle)
105
    worksheet2.write(row, i, 'Detailed Status', boldStyle)
14460 amit.gupta 106
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
14647 amit.gupta 107
    worksheet1.write(row, i, 'Cashback Status', boldStyle)
108
    worksheet2.write(row, i, 'Cashback Status', boldStyle)
14460 amit.gupta 109
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
14647 amit.gupta 110
    worksheet1.write(row, i, 'Our CashBack', boldStyle)
111
    worksheet2.write(row, i, 'Our CashBack', boldStyle)
112
    worksheet.write(row, inc(), 'Sale Date', boldStyle) 
113
    worksheet1.write(row, i, 'Sale Date', boldStyle)
114
    worksheet2.write(row, i, 'Sale Date', boldStyle)
14460 amit.gupta 115
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
14647 amit.gupta 116
    worksheet1.write(row, i, 'SubtagId', boldStyle)
117
    worksheet2.write(row, i, 'SubtagId', boldStyle)
14460 amit.gupta 118
    worksheet.write(row, inc(), 'Category', boldStyle)
14647 amit.gupta 119
    worksheet1.write(row, i, 'Category', boldStyle)
14460 amit.gupta 120
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
14647 amit.gupta 121
    worksheet1.write(row, i, 'Aff PayOut', boldStyle)
14460 amit.gupta 122
    worksheet.write(row, inc(), 'Aff Sale Amount', boldStyle)
14647 amit.gupta 123
    worksheet1.write(row, i, 'Aff Sale Amount', boldStyle)
14460 amit.gupta 124
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
14647 amit.gupta 125
    worksheet1.write(row, i, 'Aff Sale Date', boldStyle)
14460 amit.gupta 126
    for row1 in curs:
127
        orderId = row1[0]
128
        order = db.merchantOrder.find_one({"orderId":orderId})
129
        if order is None:
130
            continue
131
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%d %B, %Y %I:%M %p").replace(hour=0, minute=0, second=0, microsecond=0).timetuple()))
132
        #saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y %I:%M %p") + timedelta(seconds=-60)).timetuple()))
14647 amit.gupta 133
        reconciled_affiliates = []
14460 amit.gupta 134
        for subOrder in order['subOrders']: 
14647 amit.gupta 135
            affs = list(db.flipkartOrderAffiliateInfo.find({"productCode":subOrder.get("productCode"), "saleDateInt":saleTime}))
14460 amit.gupta 136
            row += 1
137
            i=-1
138
            worksheet.write(row, inc(), orderId)
139
            worksheet.write(row, inc(), row1[1])
14474 amit.gupta 140
            worksheet.write(row, inc(), row1[-1])
14771 amit.gupta 141
            worksheet.write(row, inc(), row1[-2])
142
            worksheet.write(row, inc(), row1[-3])
14460 amit.gupta 143
            worksheet.write(row, inc(), order['merchantOrderId'])
144
            worksheet.write(row, inc(), subOrder['productTitle'])
145
            worksheet.write(row, inc(), subOrder['amountPaid'])
146
            worksheet.write(row, inc(), subOrder['quantity'])
147
            worksheet.write(row, inc(), subOrder['status'])
148
            worksheet.write(row, inc(), subOrder['detailedStatus'])
149
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
150
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
151
            worksheet.write(row, inc(), subOrder['placedOn'])
152
            worksheet.write(row, inc(), order['subTagId'])
153
            for aff in affs:
14647 amit.gupta 154
                if aff["_id"] not in reconciled_affiliates and aff['subTagId']== order['subTagId']:
155
                    reconciled_affiliates.append(aff["_id"])
156
                    row2 += 1
157
                    i = -1 
158
                    worksheet1.write(row2, inc(), orderId)
159
                    worksheet1.write(row2, inc(), row1[1])
160
                    worksheet1.write(row2, inc(), row1[-1])
14771 amit.gupta 161
                    worksheet1.write(row2, inc(), row1[-2])
162
                    worksheet1.write(row2, inc(), row1[-3])
14647 amit.gupta 163
                    worksheet1.write(row2, inc(), order['merchantOrderId'])
164
                    worksheet1.write(row2, inc(), subOrder['productTitle'])
165
                    worksheet1.write(row2, inc(), subOrder['amountPaid'])
166
                    worksheet1.write(row2, inc(), subOrder['quantity'])
167
                    worksheet1.write(row2, inc(), subOrder['status'])
168
                    worksheet1.write(row2, inc(), subOrder['detailedStatus'])
169
                    worksheet1.write(row2, inc(), subOrder['cashBackStatus'])
170
                    worksheet1.write(row2, inc(), subOrder['cashBackAmount'])
171
                    worksheet1.write(row2, inc(), subOrder['placedOn'])
172
                    worksheet1.write(row2, inc(), order['subTagId'])
173
                    db.flipkartOrderAffiliateInfo.update(
174
                        {"productCode":subOrder.get("productCode"), "saleDateInt":saleTime, "subTagId":aff['subTagId']}, 
175
                        {"$set":{"reconciled":True}})
176
                    db.merchantOrder.update({"merchantOrderId":order["merchantOrderId"]}, 
177
                                            {"$set":{"reconciled":True}})
14460 amit.gupta 178
                    worksheet.write(row, inc(), aff['category'])
14647 amit.gupta 179
                    worksheet1.write(row2, i, aff['category'])
14460 amit.gupta 180
                    worksheet.write(row, inc(), aff['payOut'])
14647 amit.gupta 181
                    worksheet1.write(row2, i, aff['payOut'])
14460 amit.gupta 182
                    worksheet.write(row, inc(), aff['saleAmount'])
14647 amit.gupta 183
                    worksheet1.write(row2, i, aff['saleAmount'])
14460 amit.gupta 184
                    worksheet.write(row, inc(), aff['saleDate'])
14647 amit.gupta 185
                    worksheet1.write(row2, i, aff['saleDate'])
14460 amit.gupta 186
                    break
14647 amit.gupta 187
            row3 += 1
188
            i=-1
189
            worksheet2.write(row3, inc(), orderId)
190
            worksheet2.write(row3, inc(), row1[1])
191
            worksheet2.write(row3, inc(), row1[-1])
14771 amit.gupta 192
            worksheet2.write(row3, inc(), row1[-2])
193
            worksheet2.write(row3, inc(), row1[-3])
14647 amit.gupta 194
            worksheet2.write(row3, inc(), order['merchantOrderId'])
195
            worksheet2.write(row3, inc(), subOrder['productTitle'])
196
            worksheet2.write(row3, inc(), subOrder['amountPaid'])
197
            worksheet2.write(row3, inc(), subOrder['quantity'])
198
            worksheet2.write(row3, inc(), subOrder['status'])
199
            worksheet2.write(row3, inc(), subOrder['detailedStatus'])
200
            worksheet2.write(row3, inc(), subOrder['cashBackStatus'])
201
            worksheet2.write(row3, inc(), subOrder['cashBackAmount'])
202
            worksheet2.write(row3, inc(), subOrder['placedOn'])
203
            worksheet2.write(row3, inc(), order['subTagId'])
204
 
205
    i=-1
206
    worksheet3.write(0, inc(), "category",boldStyle)    
207
    worksheet3.write(0, inc(), "conversionStatus",boldStyle)    
208
    worksheet3.write(0, inc(), "Product Title",boldStyle)    
209
    worksheet3.write(0, inc(), "price",boldStyle)    
210
    worksheet3.write(0, inc(), "quantity",boldStyle)    
211
    worksheet3.write(0, inc(), "payOut",boldStyle)    
212
    worksheet3.write(0, inc(), "saleDate",boldStyle)    
213
    worksheet3.write(0, inc(), "subTagId",boldStyle)
214
    for aff in db.flipkartOrderAffiliateInfo.find({"reconciled":{"$exists":False}}):
215
        row4 += 1
216
        i =-1
217
        worksheet3.write(row4, inc(), aff["category"])    
218
        worksheet3.write(row4, inc(), aff["conversionStatus"])    
219
        skuData = getSkuData(2, aff["productCode"])
220
        if skuData is None:    
221
            worksheet3.write(row4, inc(), aff["productTitle"])
222
        else:
223
            worksheet3.write(row4, inc(), skuData["product_name"])
224
        worksheet3.write(row4, inc(), aff['price'])    
225
        worksheet3.write(row4, inc(), aff['quantity'])    
226
        worksheet3.write(row4, inc(), aff['payOut'])    
227
        worksheet3.write(row4, inc(), aff['saleDate'])    
228
        worksheet3.write(row4, inc(), aff['subTagId'])    
229
 
230
 
231
 
232
    wb.save(XLS_F_FILENAME)
14450 amit.gupta 233
def generateSnapDealReco():
14524 amit.gupta 234
    global i
14460 amit.gupta 235
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
14450 amit.gupta 236
    db = client.Dtr
14524 amit.gupta 237
    notReconciled = {}
14487 amit.gupta 238
    matchedList = []
14450 amit.gupta 239
    workbook = xlwt.Workbook()
14501 amit.gupta 240
    worksheet = workbook.add_sheet("Snapdeal Reconciled")
241
    worksheet1 = workbook.add_sheet("Snapdeal Reconciled All")
14508 amit.gupta 242
    worksheet2 = workbook.add_sheet("Snapdeal Orders not reconciled")
16947 amit.gupta 243
    worksheet3 = workbook.add_sheet("DateWise Sale Summary")
14508 amit.gupta 244
    affNotReconciledSheet = workbook.add_sheet("Snapdeal Aff not reconciled")
16947 amit.gupta 245
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet, worksheet3)
14450 amit.gupta 246
    row = 0
14501 amit.gupta 247
    anotherrow = 0
15577 amit.gupta 248
    row5=0
16947 amit.gupta 249
    datemap={}
14450 amit.gupta 250
    for row1 in curs:
251
        orderId = row1[0]
252
        order = db.merchantOrder.find_one({"orderId":orderId})
253
        if order is None:
254
            continue
14496 amit.gupta 255
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
16949 amit.gupta 256
        try:
16951 amit.gupta 257
            saleTime = datetime.strptime(order['placedOn'], "%a, %d %b, %Y").strftime("%Y-%m-%d")
16949 amit.gupta 258
        except:
17001 amit.gupta 259
            saleTime = datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").strftime("%Y-%m-%d")    
16947 amit.gupta 260
 
14450 amit.gupta 261
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
16718 amit.gupta 262
        if len(aff) > 1:
263
            aff = [f for f in aff if f.get("payOut")>0]
14501 amit.gupta 264
        anotherrow += 1
14988 amit.gupta 265
        try:
266
            formattedTimestamp = order['placedOn']
267
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
268
        except:
269
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
16947 amit.gupta 270
            formattedTimestamp = datetime.strftime(utils.fromTimeStamp(timestamp1), "%b %d, %Y, %I:%M %p")
16718 amit.gupta 271
        if len(aff) > 0 and order["subTagId"] not in matchedList and int(order["paidAmount"])==int(aff[0]["saleAmount"]):
272
 
14501 amit.gupta 273
            matchedList.append(order["subTagId"])
14610 amit.gupta 274
            db.snapdealOrderAffiliateInfo.update({"adId":aff[0].get("adId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
14501 amit.gupta 275
            order['reconciled'] = True
14610 amit.gupta 276
            order['adId'] = aff[0].get("adId")
14501 amit.gupta 277
            db.merchantOrder.save(order)
278
            row += 1
279
            i=-1 
280
            worksheet.write(row, inc(), orderId)
281
            worksheet1.write(anotherrow, i, orderId)
282
            worksheet.write(row, inc(), row1[1])
283
            worksheet1.write(anotherrow, i, row1[1])
14850 amit.gupta 284
            worksheet.write(row, inc(), row1[-1])
285
            worksheet1.write(anotherrow, i, row1[-1])
286
            worksheet.write(row, inc(), row1[-2])
287
            worksheet1.write(anotherrow, i, row1[-2])
14771 amit.gupta 288
            worksheet.write(row, inc(), row1[-3])
289
            worksheet1.write(anotherrow, i, row1[-3])
14501 amit.gupta 290
            worksheet.write(row, inc(), order['merchantOrderId'])
291
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
292
            worksheet.write(row, inc(), order['subTagId'])
293
            worksheet1.write(anotherrow, i, order['subTagId'])
294
            worksheet.write(row, inc(), order['placedOn'])
295
            worksheet1.write(anotherrow, i, order['placedOn'])
14988 amit.gupta 296
            worksheet.write(row, inc(), formattedTimestamp)
297
            worksheet1.write(anotherrow, i, formattedTimestamp)
14501 amit.gupta 298
            worksheet.write(row, inc(), int(order['paidAmount']))
299
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
14524 amit.gupta 300
            worksheet.write(row, inc(), aff[0]['saleDate'])
301
            worksheet1.write(anotherrow, i, aff[0]['saleDate'])
302
            worksheet.write(row, inc(), aff[0]['saleAmount'])
303
            worksheet1.write(anotherrow, i, aff[0]['saleAmount'])
304
            worksheet.write(row, inc(), aff[0]['payOut'])
305
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
14601 amit.gupta 306
            worksheet.write(row, inc(), aff[0]['ip'])
307
            worksheet1.write(anotherrow, i, aff[0]['ip'])
16718 amit.gupta 308
            worksheet.write(row, inc(), aff[0]['conversionStatus'])
309
            worksheet1.write(anotherrow, i, aff[0]['conversionStatus'])
14501 amit.gupta 310
            k = i
14504 amit.gupta 311
            row -= 1
312
            anotherrow -= 1
14501 amit.gupta 313
            for subOrder in order['subOrders']:
314
                i = k
14503 amit.gupta 315
                row += 1
316
                anotherrow += 1
14501 amit.gupta 317
                worksheet.write(row, inc(), subOrder['productTitle'])
318
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
319
                worksheet.write(row, inc(), subOrder['amountPaid'])
320
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
321
                worksheet.write(row, inc(), subOrder['quantity'])
322
                worksheet1.write(anotherrow, i, subOrder['quantity'])
323
                worksheet.write(row, inc(), subOrder['status'])
324
                worksheet1.write(anotherrow, i, subOrder['status'])
325
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
326
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
327
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
328
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
14504 amit.gupta 329
 
14501 amit.gupta 330
        else:
14524 amit.gupta 331
            i=-1
14501 amit.gupta 332
            worksheet1.write(anotherrow, inc(), orderId)
333
            worksheet1.write(anotherrow, inc(), row1[1])
14850 amit.gupta 334
            worksheet1.write(anotherrow, inc(), row1[-1])
335
            worksheet1.write(anotherrow, inc(), row1[-2])
14771 amit.gupta 336
            worksheet1.write(anotherrow, inc(), row1[-3])
14501 amit.gupta 337
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
338
            worksheet1.write(anotherrow, inc(), order['subTagId'])
339
            worksheet1.write(anotherrow, inc(), order['placedOn'])
15576 amit.gupta 340
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
14501 amit.gupta 341
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
14873 amit.gupta 342
 
14524 amit.gupta 343
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
344
            inc()
345
            inc()
346
            inc()
14771 amit.gupta 347
            inc()
16718 amit.gupta 348
            inc()
14501 amit.gupta 349
            k = i
14504 amit.gupta 350
            anotherrow -= 1
14501 amit.gupta 351
            for subOrder in order['subOrders']:
14503 amit.gupta 352
                anotherrow += 1
14501 amit.gupta 353
                i = k
14505 amit.gupta 354
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
355
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
356
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
357
                worksheet1.write(anotherrow, inc(), subOrder['status'])
358
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
359
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
15577 amit.gupta 360
            row5 += 1
361
            i=-1
362
            worksheet2.write(row5, inc(), order["orderId"])
363
            worksheet2.write(row5, inc(), row1[1])
364
            worksheet2.write(row5, inc(), row1[-1])
365
            worksheet2.write(row5, inc(), row1[-2])
366
            worksheet2.write(row5, inc(), row1[-3])
367
            worksheet2.write(row5, inc(), order['merchantOrderId'])
368
            worksheet2.write(row5, inc(), order['subTagId'])
369
            worksheet2.write(row5, inc(), order['placedOn'])
370
            worksheet2.write(row5, inc(), formattedTimestamp)
371
            worksheet2.write(row5, inc(), int(order['paidAmount']))
372
            row5 -=1
373
            k=i
374
            for subOrder in order['subOrders']:
375
                i = k
15578 amit.gupta 376
                row5 += 1
15577 amit.gupta 377
                worksheet2.write(row5, inc(), subOrder['productTitle'])
378
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
379
                worksheet2.write(row5, inc(), subOrder['quantity'])
380
                worksheet2.write(row5, inc(), subOrder['status'])
381
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
15578 amit.gupta 382
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
14524 amit.gupta 383
 
384
    last30Days =  date.today() - timedelta(days=30)
385
    int(time.mktime(last30Days.timetuple()))
386
    row = 0
387
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
388
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
16953 amit.gupta 389
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}}, timeout=False ):
14524 amit.gupta 390
        subTagId = offer.get("subTagId")
391
        saleTime = offer.get("saleTime")
392
        orders = getOrdersByTag(subTagId, 3)
393
        for order in orders:
394
            if notReconciled.has_key(order[0]):
395
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
396
                if paidAmount==int(offer.get("saleAmount")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
397
                    i = column
14570 amit.gupta 398
                    worksheet1.write(roww, inc(), offer.get("saleDate"))        
14527 amit.gupta 399
                    worksheet1.write(roww, inc(), offer.get("saleAmount"))        
400
                    worksheet1.write(roww, inc(), offer.get("payOut"))
401
                    del notReconciled[order[0]]
14530 amit.gupta 402
                    print "found match for user", order[1]
14610 amit.gupta 403
                    db.snapdealOrderAffiliateInfo.update({"adId":offer.get("adId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
404
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("adId")}}, multi=True)
14570 amit.gupta 405
                    break
17010 amit.gupta 406
 
14570 amit.gupta 407
 
408
 
409
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
410
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
411
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
412
        row += 1
413
        i=-1
414
        affNotReconciledSheet.write(row, inc(), offer.get("adId")) 
415
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
416
        affNotReconciledSheet.write(row, inc(), offer.get("saleDate")) 
417
        affNotReconciledSheet.write(row, inc(), offer.get("saleAmount")) 
418
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
419
        affNotReconciledSheet.write(row, inc(), offer.get("conversionStatus"))
14601 amit.gupta 420
        affNotReconciledSheet.write(row, inc(), offer.get("ip"))
16947 amit.gupta 421
 
17010 amit.gupta 422
    mailBodyTemplate="""
423
        <html>
424
            <body>
425
            <table cellspacing="0" border="1" style="text-align:right">
426
                <thead>
427
                    <tr>
428
                        <th style="text-align:center">Date</th>
429
                        <th  style="text-align:center">Sale</th>
430
                        <th  style="text-align:center">Approved</th>
431
                        <th  style="text-align:center">Approved %</th>
432
                        <th  style="text-align:center">Rejected</th>
433
                        <th  style="text-align:center">Rejected %</th>
434
                    </tr>
435
                </thead>
436
                <tbody>
437
                    {0}
438
                </tbody>
439
            </table>
440
            </body>
441
        </html>
442
    """
443
    tbody=[]
444
    rowtemplate="<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td></tr>"
445
    for offer in db.flSaleSnapshot.find().limit(61).sort("_id",-1):
446
        approved = offer.get("approvedAmount")
447
        rejected = offer.get("rejectedAmount")
448
        total = approved + rejected
449
        if total ==0:
450
            continue
451
        tbody.append(rowtemplate.format(offer.get("_id"), offer.get("paidAmount"), approved, int((approved*100/total)), rejected, int((rejected*100/total))))
452
    message = mailBodyTemplate.format("".join(tbody))
15540 amit.gupta 453
    workbook.save(XLS_FILENAME)
17024 amit.gupta 454
    return message
17013 manish.sha 455
 
456
def generateHomeShopReco():
457
    global i
458
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 7)
459
    db = client.Dtr
460
    notReconciled = {}
461
    matchedList = []
462
    workbook = xlwt.Workbook()
463
    worksheet = workbook.add_sheet("HomeShop18 Reconciled")
464
    worksheet1 = workbook.add_sheet("HomeShop18 Reconciled All")
465
    worksheet2 = workbook.add_sheet("HomeShop18 Orders not reconciled")
466
    affNotReconciledSheet = workbook.add_sheet("HomeShop18 Aff not reconciled")
467
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet)
468
    row = 0
469
    anotherrow = 0
470
    row2 = 0
471
    row5=0
472
 
473
    for row1 in curs:
474
        orderId = row1[0]
475
        order = db.merchantOrder.find_one({"orderId":orderId})
476
        if order is None:
477
            continue
478
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))  26 May 2015 02:12 PM
479
        aff = list(db.shopcluesOrderAffiliateInfo.find({"merchantOrderId":order["merchantOrderId"]}))
480
        anotherrow += 1
481
        try:
482
            formattedTimestamp = order['placedOn']
483
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%d %b %Y %I:%M %p").timetuple()))
484
        except:
485
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
486
            formattedTimestamp = datetime.strftime(utils.fromTimeStamp(timestamp1), "%d %b %Y %I:%M %p")
487
 
488
        if len(aff) > 0 and order["subTagId"] not in matchedList and long(order["paidAmount"])==long(float(aff[0]["transactionValue"])): 
489
            matchedList.append(order["subTagId"])
490
            db.shopcluesOrderAffiliateInfo.update({"merchantOrderId":aff[0].get("merchantOrderId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
491
            order['reconciled'] = True
492
            order['adId'] = aff[0].get("uniqueKey")
493
            db.merchantOrder.save(order)
494
            row += 1
495
            i=-1 
496
 
497
            worksheet.write(row, inc(), orderId)
498
            worksheet1.write(anotherrow, i, orderId)
499
            worksheet.write(row, inc(), row1[1])
500
            worksheet1.write(anotherrow, i, row1[1])
501
            worksheet.write(row, inc(), row1[-1])
502
            worksheet1.write(anotherrow, i, row1[-1])
503
            worksheet.write(row, inc(), row1[-2])
504
            worksheet1.write(anotherrow, i, row1[-2])
505
            worksheet.write(row, inc(), row1[-3])
506
            worksheet1.write(anotherrow, i, row1[-3])
507
            worksheet.write(row, inc(), order['merchantOrderId'])
508
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
509
            worksheet.write(row, inc(), order['subTagId'])
510
            worksheet1.write(anotherrow, i, order['subTagId'])
511
            worksheet.write(row, inc(), order['placedOn'])
512
            worksheet1.write(anotherrow, i, order['placedOn'])
513
            worksheet.write(row, inc(), formattedTimestamp)
514
            worksheet1.write(anotherrow, i, formattedTimestamp)
515
            worksheet.write(row, inc(), int(order['paidAmount']))
516
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
517
            worksheet.write(row, inc(), datetime.strftime(utils.fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
518
            worksheet1.write(anotherrow, i, datetime.strftime(utils.fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
519
            worksheet.write(row, inc(), aff[0]['transactionValue'])
520
            worksheet1.write(anotherrow, i, aff[0]['transactionValue'])
521
            worksheet.write(row, inc(), aff[0]['payOut'])
522
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
523
            worksheet.write(row, inc(), "NA")
524
            worksheet1.write(anotherrow, i, "NA")
525
            k = i
526
            row -= 1
527
            anotherrow -= 1
528
            for subOrder in order['subOrders']:
529
                i = k
530
                row += 1
531
                anotherrow += 1
532
                worksheet.write(row, inc(), subOrder['productTitle'])
533
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
534
                worksheet.write(row, inc(), subOrder['amountPaid'])
535
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
536
                worksheet.write(row, inc(), subOrder['quantity'])
537
                worksheet1.write(anotherrow, i, subOrder['quantity'])
538
                worksheet.write(row, inc(), subOrder['status'])
539
                worksheet1.write(anotherrow, i, subOrder['status'])
540
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
541
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
542
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
543
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
544
 
545
        else:
546
            i=-1
547
            worksheet1.write(anotherrow, inc(), orderId)
548
            worksheet1.write(anotherrow, inc(), row1[1])
549
            worksheet1.write(anotherrow, inc(), row1[-1])
550
            worksheet1.write(anotherrow, inc(), row1[-2])
551
            worksheet1.write(anotherrow, inc(), row1[-3])
552
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
553
            worksheet1.write(anotherrow, inc(), order['subTagId'])
554
            worksheet1.write(anotherrow, inc(), order['placedOn'])
555
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
556
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
557
 
558
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
559
            inc()
560
            inc()
561
            inc()
562
            inc()
563
            k = i
564
            anotherrow -= 1
565
            for subOrder in order['subOrders']:
566
                anotherrow += 1
567
                i = k
568
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
569
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
570
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
571
                worksheet1.write(anotherrow, inc(), subOrder['status'])
572
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
573
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
574
            row5 += 1
575
            i=-1
576
            worksheet2.write(row5, inc(), order["orderId"])
577
            worksheet2.write(row5, inc(), row1[1])
578
            worksheet2.write(row5, inc(), row1[-1])
579
            worksheet2.write(row5, inc(), row1[-2])
580
            worksheet2.write(row5, inc(), row1[-3])
581
            worksheet2.write(row5, inc(), order['merchantOrderId'])
582
            worksheet2.write(row5, inc(), order['subTagId'])
583
            worksheet2.write(row5, inc(), order['placedOn'])
584
            worksheet2.write(row5, inc(), formattedTimestamp)
585
            worksheet2.write(row5, inc(), int(order['paidAmount']))
586
            row5 -=1
587
            k=i
588
            for subOrder in order['subOrders']:
589
                i = k
590
                row5 += 1
591
                worksheet2.write(row5, inc(), subOrder['productTitle'])
592
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
593
                worksheet2.write(row5, inc(), subOrder['quantity'])
594
                worksheet2.write(row5, inc(), subOrder['status'])
595
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
596
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
597
    last30Days =  date.today() - timedelta(days=30)
598
    int(time.mktime(last30Days.timetuple()))
599
    row = 0
600
    for offer in db.homeshopOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
601
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
602
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
603
        subTagId = offer.get("subTagId")
604
        saleTime = offer.get("transactionTime")
605
        orders = getOrdersByTag(subTagId, 7)
606
        for order in orders:
607
            if notReconciled.has_key(order[0]):
608
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
609
                if paidAmount==int(offer.get("transactionValue")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
610
                    i = column
611
                    worksheet1.write(roww, inc(), datetime.strftime(utils.fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p"))        
612
                    worksheet1.write(roww, inc(), offer.get("transactionValue"))        
613
                    worksheet1.write(roww, inc(), offer.get("payOut"))
614
                    del notReconciled[order[0]]
615
                    print "found match for user", order[1]
616
                    db.homeshopOrderAffiliateInfo.update({"transactionId":offer.get("transactionId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
617
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("uniqueKey")}}, multi=True)
618
                    break
619
 
620
    unreconciledOrders = notReconciled.keys()
621
 
622
    for offer in db.homeshopOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
623
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
624
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
625
        row += 1
626
        i=-1
627
        affNotReconciledSheet.write(row, inc(), offer.get("uniqueKey")) 
628
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
629
        affNotReconciledSheet.write(row, inc(), datetime.strftime(utils.fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p")) 
630
        affNotReconciledSheet.write(row, inc(), offer.get("transactionValue")) 
631
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
632
        affNotReconciledSheet.write(row, inc(), offer.get("status"))
633
        affNotReconciledSheet.write(row, inc(), 'NA')
634
 
635
    workbook.save(XLS_HS_FILENAME)
636
 
16995 amit.gupta 637
 
15791 manish.sha 638
def generateShopcluesReco():
639
    global i
16238 manish.sha 640
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 5)
15791 manish.sha 641
    db = client.Dtr
642
    notReconciled = {}
643
    matchedList = []
644
    workbook = xlwt.Workbook()
645
    worksheet = workbook.add_sheet("Shopclues Reconciled")
646
    worksheet1 = workbook.add_sheet("Shopclues Reconciled All")
647
    worksheet2 = workbook.add_sheet("Shopclues Orders not reconciled")
648
    affNotReconciledSheet = workbook.add_sheet("Shopclues Aff not reconciled")
649
    setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet)
650
    row = 0
651
    anotherrow = 0
652
    row2 = 0
653
    row5=0
654
 
655
    for row1 in curs:
656
        orderId = row1[0]
657
        order = db.merchantOrder.find_one({"orderId":orderId})
658
        if order is None:
659
            continue
660
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))  26 May 2015 02:12 PM
16204 manish.sha 661
        aff = list(db.shopcluesOrderAffiliateInfo.find({"merchantOrderId":order["merchantOrderId"]}))
15791 manish.sha 662
        anotherrow += 1
663
        try:
664
            formattedTimestamp = order['placedOn']
665
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%d %b %Y %I:%M %p").timetuple()))
666
        except:
667
            timestamp1 = int(time.mktime(row1[-4].timetuple()))
16947 amit.gupta 668
            formattedTimestamp = datetime.strftime(utils.fromTimeStamp(timestamp1), "%d %b %Y %I:%M %p")
15791 manish.sha 669
 
670
        if len(aff) > 0 and order["subTagId"] not in matchedList and long(order["paidAmount"])==long(float(aff[0]["transactionValue"])): 
671
            matchedList.append(order["subTagId"])
16204 manish.sha 672
            db.shopcluesOrderAffiliateInfo.update({"merchantOrderId":aff[0].get("merchantOrderId")}, {"$set":{"reconciled":True, "orderId":orderId}}, multi=True)
15791 manish.sha 673
            order['reconciled'] = True
674
            order['adId'] = aff[0].get("uniqueKey")
675
            db.merchantOrder.save(order)
676
            row += 1
677
            i=-1 
14450 amit.gupta 678
 
15791 manish.sha 679
            worksheet.write(row, inc(), orderId)
680
            worksheet1.write(anotherrow, i, orderId)
681
            worksheet.write(row, inc(), row1[1])
682
            worksheet1.write(anotherrow, i, row1[1])
683
            worksheet.write(row, inc(), row1[-1])
684
            worksheet1.write(anotherrow, i, row1[-1])
685
            worksheet.write(row, inc(), row1[-2])
686
            worksheet1.write(anotherrow, i, row1[-2])
687
            worksheet.write(row, inc(), row1[-3])
688
            worksheet1.write(anotherrow, i, row1[-3])
689
            worksheet.write(row, inc(), order['merchantOrderId'])
690
            worksheet1.write(anotherrow, i, order['merchantOrderId'])
691
            worksheet.write(row, inc(), order['subTagId'])
692
            worksheet1.write(anotherrow, i, order['subTagId'])
693
            worksheet.write(row, inc(), order['placedOn'])
694
            worksheet1.write(anotherrow, i, order['placedOn'])
695
            worksheet.write(row, inc(), formattedTimestamp)
696
            worksheet1.write(anotherrow, i, formattedTimestamp)
697
            worksheet.write(row, inc(), int(order['paidAmount']))
698
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
16947 amit.gupta 699
            worksheet.write(row, inc(), datetime.strftime(utils.fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
700
            worksheet1.write(anotherrow, i, datetime.strftime(utils.fromTimeStamp(aff[0]['transactionTime']), "%d %b %Y %I:%M %p"))
15791 manish.sha 701
            worksheet.write(row, inc(), aff[0]['transactionValue'])
702
            worksheet1.write(anotherrow, i, aff[0]['transactionValue'])
703
            worksheet.write(row, inc(), aff[0]['payOut'])
704
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
16238 manish.sha 705
            worksheet.write(row, inc(), "NA")
706
            worksheet1.write(anotherrow, i, "NA")
15791 manish.sha 707
            k = i
708
            row -= 1
709
            anotherrow -= 1
710
            for subOrder in order['subOrders']:
711
                i = k
712
                row += 1
713
                anotherrow += 1
714
                worksheet.write(row, inc(), subOrder['productTitle'])
715
                worksheet1.write(anotherrow, i, subOrder['productTitle'])
716
                worksheet.write(row, inc(), subOrder['amountPaid'])
717
                worksheet1.write(anotherrow, i, subOrder['amountPaid'])
718
                worksheet.write(row, inc(), subOrder['quantity'])
719
                worksheet1.write(anotherrow, i, subOrder['quantity'])
720
                worksheet.write(row, inc(), subOrder['status'])
721
                worksheet1.write(anotherrow, i, subOrder['status'])
722
                worksheet.write(row, inc(), subOrder['cashBackStatus'])
723
                worksheet1.write(anotherrow, i, subOrder['cashBackStatus'])
724
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
725
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
726
 
727
        else:
728
            i=-1
729
            worksheet1.write(anotherrow, inc(), orderId)
730
            worksheet1.write(anotherrow, inc(), row1[1])
731
            worksheet1.write(anotherrow, inc(), row1[-1])
732
            worksheet1.write(anotherrow, inc(), row1[-2])
733
            worksheet1.write(anotherrow, inc(), row1[-3])
734
            worksheet1.write(anotherrow, inc(), order['merchantOrderId'])
735
            worksheet1.write(anotherrow, inc(), order['subTagId'])
736
            worksheet1.write(anotherrow, inc(), order['placedOn'])
737
            worksheet1.write(anotherrow, inc(), formattedTimestamp)
738
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
739
 
740
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
741
            inc()
742
            inc()
743
            inc()
744
            inc()
745
            k = i
746
            anotherrow -= 1
747
            for subOrder in order['subOrders']:
748
                anotherrow += 1
749
                i = k
750
                worksheet1.write(anotherrow, inc(), subOrder['productTitle'])
751
                worksheet1.write(anotherrow, inc(), subOrder['amountPaid'])
752
                worksheet1.write(anotherrow, inc(), subOrder['quantity'])
753
                worksheet1.write(anotherrow, inc(), subOrder['status'])
754
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
755
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
756
            row5 += 1
757
            i=-1
758
            worksheet2.write(row5, inc(), order["orderId"])
759
            worksheet2.write(row5, inc(), row1[1])
760
            worksheet2.write(row5, inc(), row1[-1])
761
            worksheet2.write(row5, inc(), row1[-2])
762
            worksheet2.write(row5, inc(), row1[-3])
763
            worksheet2.write(row5, inc(), order['merchantOrderId'])
764
            worksheet2.write(row5, inc(), order['subTagId'])
765
            worksheet2.write(row5, inc(), order['placedOn'])
766
            worksheet2.write(row5, inc(), formattedTimestamp)
767
            worksheet2.write(row5, inc(), int(order['paidAmount']))
768
            row5 -=1
769
            k=i
770
            for subOrder in order['subOrders']:
771
                i = k
772
                row5 += 1
773
                worksheet2.write(row5, inc(), subOrder['productTitle'])
774
                worksheet2.write(row5, inc(), subOrder['amountPaid'])
775
                worksheet2.write(row5, inc(), subOrder['quantity'])
776
                worksheet2.write(row5, inc(), subOrder['status'])
777
                worksheet2.write(row5, inc(), subOrder['cashBackStatus'])
778
                worksheet2.write(row5, inc(), subOrder['cashBackAmount'])
779
 
780
    last30Days =  date.today() - timedelta(days=30)
781
    int(time.mktime(last30Days.timetuple()))
782
    row = 0
783
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
784
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
785
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
786
        subTagId = offer.get("subTagId")
787
        saleTime = offer.get("transactionTime")
15794 manish.sha 788
        orders = getOrdersByTag(subTagId, 5)
15791 manish.sha 789
        for order in orders:
790
            if notReconciled.has_key(order[0]):
791
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
792
                if paidAmount==int(offer.get("transactionValue")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
793
                    i = column
16947 amit.gupta 794
                    worksheet1.write(roww, inc(), datetime.strftime(utils.fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p"))        
15791 manish.sha 795
                    worksheet1.write(roww, inc(), offer.get("transactionValue"))        
796
                    worksheet1.write(roww, inc(), offer.get("payOut"))
797
                    del notReconciled[order[0]]
798
                    print "found match for user", order[1]
799
                    db.shopcluesOrderAffiliateInfo.update({"transactionId":offer.get("transactionId")}, {"$set":{"reconciled":True, "orderId":order[0]}}, multi=True)
800
                    db.merchantOrder.update({"orderId":order[0]}, {"$set":{"reconciled":True, "adId":offer.get("uniqueKey")}}, multi=True)
801
                    break
802
 
803
    unreconciledOrders = notReconciled.keys()
804
 
805
    for offer in db.shopcluesOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
806
                                                     "transactionTime":{"$gt":int(time.mktime(last30Days.timetuple())),
807
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
808
        row += 1
809
        i=-1
810
        affNotReconciledSheet.write(row, inc(), offer.get("uniqueKey")) 
811
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
16947 amit.gupta 812
        affNotReconciledSheet.write(row, inc(), datetime.strftime(utils.fromTimeStamp(offer.get("transactionTime")), "%d %b %Y %I:%M %p")) 
15791 manish.sha 813
        affNotReconciledSheet.write(row, inc(), offer.get("transactionValue")) 
814
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
815
        affNotReconciledSheet.write(row, inc(), offer.get("status"))
816
        affNotReconciledSheet.write(row, inc(), 'NA')
817
 
818
    workbook.save(XLS_SC_FILENAME)
819
 
14647 amit.gupta 820
def sendmail(email, message, title, *varargs):
14450 amit.gupta 821
    if email == "":
822
        return
823
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
824
    mailServer.ehlo()
825
    mailServer.starttls()
826
    mailServer.ehlo()
827
 
828
    # Create the container (outer) email message.
829
    msg = MIMEMultipart()
830
    msg['Subject'] = title
831
    msg.preamble = title
832
    html_msg = MIMEText(message, 'html')
833
    msg.attach(html_msg)
834
 
835
    #snapdeal more to be added here
14647 amit.gupta 836
    for fileName in varargs:
837
        snapdeal = MIMEBase('application', 'vnd.ms-excel')
838
        snapdeal.set_payload(file(fileName).read())
839
        encoders.encode_base64(snapdeal)
840
        snapdeal.add_header('Content-Disposition', 'attachment;filename=' + fileName)
841
        msg.attach(snapdeal)
14450 amit.gupta 842
 
843
 
844
    email.append('amit.gupta@shop2020.in')
845
    MAILTO = email 
846
    mailServer.login(SENDER, PASSWORD)
847
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
848
 
16958 amit.gupta 849
def setHeaders(worksheet, worksheet1, worksheet2, affNotReconciledSheet, worksheet3=None):
14505 amit.gupta 850
    boldStyle = xlwt.XFStyle()
851
    f = xlwt.Font()
852
    f.bold = True
853
    boldStyle.font = f
14501 amit.gupta 854
    row = 0
855
    global i
856
    i=-1    
857
    worksheet.write(row, inc(), 'Order Id', boldStyle)
858
    worksheet.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 859
    worksheet.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 860
    worksheet.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 861
    worksheet.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 862
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
863
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
864
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 865
    worksheet.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 866
    worksheet.write(row, inc(), 'Sale Amount', boldStyle)
867
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
868
    worksheet.write(row, inc(), 'Aff Sale Amt', boldStyle)
869
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 870
    worksheet.write(row, inc(), 'IP', boldStyle)
16718 amit.gupta 871
    worksheet.write(row, inc(), 'Aff Status', boldStyle)
14501 amit.gupta 872
    worksheet.write(row, inc(), 'Product Title', boldStyle)
873
    worksheet.write(row, inc(), 'Price', boldStyle)
874
    worksheet.write(row, inc(), 'Quantity', boldStyle)
875
    worksheet.write(row, inc(), 'Status', boldStyle)
876
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
877
    worksheet.write(row, inc(), 'CashBack', boldStyle)
878
 
14505 amit.gupta 879
    i = -1
14501 amit.gupta 880
    worksheet1.write(row, inc(), 'Order Id', boldStyle)
881
    worksheet1.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 882
    worksheet1.write(row, inc(), 'Username', boldStyle)
14601 amit.gupta 883
    worksheet1.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 884
    worksheet1.write(row, inc(), 'Device', boldStyle)
14501 amit.gupta 885
    worksheet1.write(row, inc(), 'Merchant Order Id', boldStyle)
886
    worksheet1.write(row, inc(), 'SubtagId', boldStyle)
887
    worksheet1.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 888
    worksheet1.write(row, inc(), 'Dtr Sale Date', boldStyle)
14501 amit.gupta 889
    worksheet1.write(row, inc(), 'Sale Amount', boldStyle)
890
    worksheet1.write(row, inc(), 'Aff Sale Date', boldStyle)
891
    worksheet1.write(row, inc(), 'Aff Sale Amt', boldStyle)
892
    worksheet1.write(row, inc(), 'Aff PayOut', boldStyle)
14601 amit.gupta 893
    worksheet1.write(row, inc(), 'IP', boldStyle)
16718 amit.gupta 894
    worksheet1.write(row, inc(), 'Aff Status', boldStyle)
14501 amit.gupta 895
    worksheet1.write(row, inc(), 'Product Title', boldStyle)
896
    worksheet1.write(row, inc(), 'Price', boldStyle)
897
    worksheet1.write(row, inc(), 'Quantity', boldStyle)
898
    worksheet1.write(row, inc(), 'Status', boldStyle)
899
    worksheet1.write(row, inc(), 'Cashback Status', boldStyle)
900
    worksheet1.write(row, inc(), 'CashBack', boldStyle) 
14508 amit.gupta 901
 
902
    i = -1
903
    worksheet2.write(row, inc(), 'Order Id', boldStyle)
904
    worksheet2.write(row, inc(), 'User Id', boldStyle)
14850 amit.gupta 905
    worksheet2.write(row, inc(), 'Username', boldStyle)
14605 amit.gupta 906
    worksheet2.write(row, inc(), 'Version Code', boldStyle)
14771 amit.gupta 907
    worksheet2.write(row, inc(), 'Device', boldStyle)
14508 amit.gupta 908
    worksheet2.write(row, inc(), 'Merchant Order Id', boldStyle)
909
    worksheet2.write(row, inc(), 'SubtagId', boldStyle)
910
    worksheet2.write(row, inc(), 'Sale Date', boldStyle)
14988 amit.gupta 911
    worksheet2.write(row, inc(), 'Dtr Sale Date', boldStyle)
14508 amit.gupta 912
    worksheet2.write(row, inc(), 'Sale Amount', boldStyle)
913
    worksheet2.write(row, inc(), 'Product Title', boldStyle)
914
    worksheet2.write(row, inc(), 'Price', boldStyle)
915
    worksheet2.write(row, inc(), 'Quantity', boldStyle)
916
    worksheet2.write(row, inc(), 'Status', boldStyle)
917
    worksheet2.write(row, inc(), 'Cashback Status', boldStyle)
918
    worksheet2.write(row, inc(), 'CashBack', boldStyle)
14450 amit.gupta 919
 
14508 amit.gupta 920
    i =-1
921
    affNotReconciledSheet.write(row, inc(), 'AdId', boldStyle) 
922
    affNotReconciledSheet.write(row, inc(), 'subTagId', boldStyle) 
923
    affNotReconciledSheet.write(row, inc(), 'Sale Date', boldStyle) 
924
    affNotReconciledSheet.write(row, inc(), 'Sale Amount', boldStyle) 
925
    affNotReconciledSheet.write(row, inc(), 'Pay Out', boldStyle) 
926
    affNotReconciledSheet.write(row, inc(), 'Status', boldStyle) 
14601 amit.gupta 927
    affNotReconciledSheet.write(row, inc(), 'IP', boldStyle)
14524 amit.gupta 928
 
16958 amit.gupta 929
    if worksheet3:
930
        i =-1
931
        worksheet3.write(row, inc(), 'Date', boldStyle) 
932
        worksheet3.write(row, inc(), 'Sale Amount', boldStyle) 
933
        worksheet3.write(row, inc(), 'Approved Sales', boldStyle) 
934
        worksheet3.write(row, inc(), 'Rejected Sales', boldStyle) 
16947 amit.gupta 935
 
14524 amit.gupta 936
def getUserAmountReconciled():
937
    pass
938
 
14613 amit.gupta 939
def getUserOrders():
940
    global i
941
    rb = open_workbook(XLS_FILENAME,formatting_info=True)
942
    wb = copy(rb)
943
    worksheet = wb.add_sheet("All Users")
16726 amit.gupta 944
    #worksheet1 = wb.add_sheet("Suspected Users")
17011 amit.gupta 945
    workbook = xlwt.Workbook("utf8")
14632 amit.gupta 946
    sh1 = workbook.add_sheet("All Orders")
15423 amit.gupta 947
    sh2 = workbook.add_sheet("Flipkart Orders")
14632 amit.gupta 948
 
14613 amit.gupta 949
    db=client.Dtr
950
    results = Mysql.fetchResult('''
15932 amit.gupta 951
        select ow.*, u.username, crm1.order_count, u.referrer, aua.city,aua.state,aua.pincode from order_view ow 
952
        left join users u on u.id = ow.user_id 
953
        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
954
        left join (select * from (select * from all_user_addresses order by source) s group by user_id)aua on aua.user_id=u.id 
955
        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 956
        ''',)
957
    row = 0
958
    i=-1
959
    worksheet.write(row, inc(), 'User Id', boldStyle)
16726 amit.gupta 960
    #worksheet1.write(row, i, 'User Id', boldStyle)
14613 amit.gupta 961
    worksheet.write(row, inc(), 'User name', boldStyle)
16726 amit.gupta 962
    #worksheet1.write(row, i, 'User name', boldStyle)
14613 amit.gupta 963
    worksheet.write(row, inc(), 'Order Id', boldStyle)
16726 amit.gupta 964
    #worksheet1.write(row, i, 'Order Id', boldStyle)
14613 amit.gupta 965
    worksheet.write(row, inc(), 'Created On', boldStyle)
16726 amit.gupta 966
    #worksheet1.write(row, i, 'Created On', boldStyle)
14613 amit.gupta 967
    worksheet.write(row, inc(), 'Store Id', boldStyle)
16726 amit.gupta 968
    #worksheet1.write(row, i, 'Store Id', boldStyle)
14613 amit.gupta 969
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
16785 amit.gupta 970
    worksheet.write(row, inc(), 'SubOrder Id', boldStyle)
16726 amit.gupta 971
    #worksheet1.write(row, i, 'Merchant Order Id', boldStyle)
14616 amit.gupta 972
    worksheet.write(row, inc(), 'Product title', boldStyle)
16726 amit.gupta 973
    #worksheet1.write(row, i, 'Product title', boldStyle)
14613 amit.gupta 974
    worksheet.write(row, inc(), 'Amount Paid', boldStyle)
16726 amit.gupta 975
    #worksheet1.write(row, i, 'Amount Paid', boldStyle)
14613 amit.gupta 976
    worksheet.write(row, inc(), 'Cashback', boldStyle)
16726 amit.gupta 977
    #worksheet1.write(row, i, 'Cashback', boldStyle)
14613 amit.gupta 978
    worksheet.write(row, inc(), 'Order Status', boldStyle)
16726 amit.gupta 979
    #worksheet1.write(row, i, 'Order Status', boldStyle)
14613 amit.gupta 980
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
16726 amit.gupta 981
    #worksheet1.write(row, i, 'Detailed Status', boldStyle)
14613 amit.gupta 982
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
16726 amit.gupta 983
    #worksheet1.write(row, i, 'Cashback Status', boldStyle)
14613 amit.gupta 984
    worksheet.write(row, inc(), 'Reconciled', boldStyle)
16726 amit.gupta 985
    #worksheet1.write(row, i, 'Reconciled', boldStyle)
14613 amit.gupta 986
    worksheet.write(row, inc(), 'IP', boldStyle)
16726 amit.gupta 987
    #worksheet1.write(row, i, 'IP', boldStyle)
16718 amit.gupta 988
    worksheet.write(row, inc(), 'Aff Status', boldStyle)
16726 amit.gupta 989
    #worksheet1.write(row, i, 'Aff Status', boldStyle)
14693 amit.gupta 990
    i=-1
991
    sh1.write(row, inc(), 'User Id', boldStyle)
992
    sh1.write(row, inc(), 'User name', boldStyle)
993
    sh1.write(row, inc(), 'Order Id', boldStyle)
994
    sh1.write(row, inc(), 'Created On', boldStyle)
995
    sh1.write(row, inc(), 'Store Id', boldStyle)
996
    sh1.write(row, inc(), 'Merchant Order Id', boldStyle)
14771 amit.gupta 997
    sh1.write(row, inc(), 'Status', boldStyle)
15932 amit.gupta 998
    sh1.write(row, inc(), 'Detailed Status', boldStyle)
14693 amit.gupta 999
    sh1.write(row, inc(), 'Product title', boldStyle)
1000
    sh1.write(row, inc(), 'Referrer', boldStyle)
1001
    sh1.write(row, inc(), 'Amount Paid', boldStyle)
14771 amit.gupta 1002
    sh1.write(row, inc(), 'Catalog Id', boldStyle)
14693 amit.gupta 1003
    sh1.write(row, inc(), 'Brand', boldStyle)
1004
    sh1.write(row, inc(), 'Model', boldStyle)
1005
    sh1.write(row, inc(), 'Category', boldStyle)
15932 amit.gupta 1006
    sh1.write(row, inc(), 'Deal Rank', boldStyle)
16286 amit.gupta 1007
    sh1.write(row, inc(), 'Max Nlc', boldStyle)
1008
    sh1.write(row, inc(), 'Min Nlc', boldStyle)
1009
    sh1.write(row, inc(), 'DP', boldStyle)
1010
    sh1.write(row, inc(), 'Item status', boldStyle)
15932 amit.gupta 1011
    sh1.write(row, inc(), 'City', boldStyle)
1012
    sh1.write(row, inc(), 'State', boldStyle)
1013
    sh1.write(row, inc(), 'Pincode', boldStyle)
15423 amit.gupta 1014
    i =-1
1015
    sh2.write(row, inc(), 'User Id', boldStyle)
1016
    sh2.write(row, inc(), 'User name', boldStyle)
1017
    sh2.write(row, inc(), 'Created On', boldStyle)
1018
    sh2.write(row, inc(), 'Store', boldStyle)
1019
    sh2.write(row, inc(), 'Status', boldStyle)
1020
    sh2.write(row, inc(), 'Product title', boldStyle)
1021
    sh2.write(row, inc(), 'Price', boldStyle)
1022
    sh2.write(row, inc(), 'Quantity', boldStyle)
1023
    sh2.write(row, inc(), 'Catalog Id', boldStyle)
1024
    sh2.write(row, inc(), 'Brand', boldStyle)
1025
    sh2.write(row, inc(), 'Model', boldStyle)
1026
    sh2.write(row, inc(), 'Category', boldStyle)
14613 amit.gupta 1027
 
1028
    row=0
1029
    row2=0
14632 amit.gupta 1030
    row3=0
1031
    db1 = client.Catalog
14613 amit.gupta 1032
    for result in results:
1033
        morder = db.merchantOrder.find_one({"orderId":result[0]})
1034
        if morder is not None:
1035
            subOrders = morder.get("subOrders")
1036
            if subOrders is not None:
1037
                for  subOrder in subOrders:
14632 amit.gupta 1038
                    row3+=1
1039
                    i=-1
14699 amit.gupta 1040
                    sh1.write(row3, inc(), result[1])
15932 amit.gupta 1041
                    sh1.write(row3, inc(), result[7])
14632 amit.gupta 1042
                    sh1.write(row3, inc(), result[0])
15932 amit.gupta 1043
                    sh1.write(row3, inc(), result[6], datetime_format)
14632 amit.gupta 1044
                    sh1.write(row3, inc(), sourceMap.get(result[2]))
1045
                    sh1.write(row3, inc(), morder.get("merchantOrderId"))
14771 amit.gupta 1046
                    sh1.write(row3, inc(), subOrder.get("status"))
15932 amit.gupta 1047
                    sh1.write(row3, inc(), subOrder.get("detailedStatus"))
14632 amit.gupta 1048
                    sh1.write(row3, inc(), subOrder.get("productTitle"))
15932 amit.gupta 1049
                    sh1.write(row3, inc(), result[9])
14632 amit.gupta 1050
                    inc()
1051
                    if int(subOrder.get("quantity")) > 0:
1052
                        sh1.write(row3, i, int(subOrder.get("amountPaid"))/int(subOrder.get("quantity")))
14647 amit.gupta 1053
                    skuData = getSkuData(morder.get("storeId"), subOrder.get("productCode"))
16492 amit.gupta 1054
                    if morder.get("storeId") in (1,2,4,5,6):
14647 amit.gupta 1055
                        skuData = db1.MasterData.find_one({'identifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
1056
                    elif morder.get("storeId") == 3:
1057
                        skuData = db1.MasterData.find_one({'secondaryIdentifier':subOrder.get("productCode").strip(), 'source_id':morder.get("storeId")})
14634 amit.gupta 1058
                    if skuData is not None:
14771 amit.gupta 1059
                        sh1.write(row3, inc(), skuData.get("skuBundleId"))
14634 amit.gupta 1060
                        sh1.write(row3, inc(), skuData.get("brand"))
1061
                        sh1.write(row3, inc(), skuData.get("model_name"))
1062
                        sh1.write(row3, inc(), skuData.get("category"))
16213 amit.gupta 1063
                        sh1.write(row3, inc(), subOrder.get("dealRank"))
16286 amit.gupta 1064
                        sh1.write(row3, inc(), subOrder.get("maxNlc"))
1065
                        sh1.write(row3, inc(), subOrder.get("minNlc"))
16317 amit.gupta 1066
                        sh1.write(row3, inc(), utils.statusMap.get(subOrder.get("db")))
1067
 
16286 amit.gupta 1068
                        sh1.write(row3, inc(), subOrder.get("itemStatus"))
15932 amit.gupta 1069
                    else:
1070
                        sh1.write(row3, inc(), None)
1071
                        sh1.write(row3, inc(), None)
1072
                        sh1.write(row3, inc(), None)
1073
                        sh1.write(row3, inc(), None)
1074
                        sh1.write(row3, inc(), None)
16286 amit.gupta 1075
                        sh1.write(row3, inc(), None)
1076
                        sh1.write(row3, inc(), None)
1077
                        sh1.write(row3, inc(), None)
1078
                        sh1.write(row3, inc(), None)
17012 amit.gupta 1079
                    print result[10]
17020 amit.gupta 1080
                    sh1.write(row3, inc(), unicode(result[10], errors='ignore') if result[10] else None)
15932 amit.gupta 1081
                    sh1.write(row3, inc(), result[11])
1082
                    sh1.write(row3, inc(), result[12])
1083
 
14881 amit.gupta 1084
                    #removed filter as requested by Rajneesh
1085
                    #if subOrder.get("cashBackStatus") == Store.CB_APPROVED or subOrder.get("cashBackStatus") == Store.CB_PENDING:
1086
                    row +=1
1087
                    i=-1
1088
                    worksheet.write(row, inc(), result[0])
15932 amit.gupta 1089
                    worksheet.write(row, inc(), result[7])
14881 amit.gupta 1090
                    worksheet.write(row, inc(), result[1])
15932 amit.gupta 1091
                    worksheet.write(row, inc(), result[6], datetime_format)
14881 amit.gupta 1092
                    worksheet.write(row, inc(), result[2])
1093
                    worksheet.write(row, inc(), morder.get("merchantOrderId"))
16785 amit.gupta 1094
                    worksheet.write(row, inc(), subOrder.get("merchantSubOrderId"))                    
14881 amit.gupta 1095
                    worksheet.write(row, inc(), subOrder.get("productTitle"))
1096
                    worksheet.write(row, inc(), subOrder.get("amountPaid"))
1097
                    worksheet.write(row, inc(), subOrder.get("cashBackAmount"))
1098
                    worksheet.write(row, inc(), subOrder.get("status"))
1099
                    worksheet.write(row, inc(), subOrder.get("detailedStatus"))
1100
                    worksheet.write(row, inc(), subOrder.get("cashBackStatus"))
1101
                    worksheet.write(row, inc(), False if morder.get("reconciled") is None else True)
1102
                    if morder.get("reconciled") and morder.get("storeId")==3:
1103
                        try:
16718 amit.gupta 1104
                            snapdealafinfo = db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True})
1105
                            worksheet.write(row, inc(), snapdealafinfo.get("ip"))
1106
                            worksheet.write(row, inc(), snapdealafinfo.get("conversionStatus"))
14881 amit.gupta 1107
                        except:
16718 amit.gupta 1108
                            print "Could not find", morder.get("adId"), "that is reconciled for order", morder.get("orderId")
16726 amit.gupta 1109
                    #if result[8] >= 10:
1110
                    #    row2 +=1 
1111
                    #    i=-1
1112
                        #worksheet1.write(row2, inc(), result[0])
1113
                        #worksheet1.write(row2, inc(), result[7])
1114
                        #worksheet1.write(row2, inc(), result[1])
1115
                        #worksheet1.write(row2, inc(), result[6], datetime_format)
1116
                        #worksheet1.write(row2, inc(), result[2])
1117
                        #worksheet1.write(row2, inc(), morder.get("merchantOrderId"))
1118
                        #worksheet1.write(row2, inc(), subOrder.get("productTitle"))
1119
                        #worksheet1.write(row2, inc(), subOrder.get("amountPaid"))
1120
                        #worksheet1.write(row2, inc(), subOrder.get("cashBackAmount"))
1121
                        #worksheet1.write(row2, inc(), subOrder.get("status"))
1122
                        #worksheet1.write(row2, inc(), subOrder.get("detailedStatus"))
1123
                        #worksheet1.write(row2, inc(), subOrder.get("cashBackStatus"))
1124
                        #worksheet1.write(row2, inc(), False if morder.get("reconciled") is None else True)
1125
                        #worksheet1.write(row2, inc(), )
1126
                        #if morder.get("reconciled") and morder.get("storeId")==3:
1127
                        #    try:
1128
                        #        snapdealafinfo = db.snapdealOrderAffiliateInfo.find_one({"adId":morder.get("adId"), "reconciled":True})
1129
                        #        worksheet1.write(row2, inc(), snapdealafinfo.get("ip"))
1130
                        #        worksheet1.write(row2, inc(), snapdealafinfo.get("conversionStatus"))
1131
                        #    except:
1132
                        #        print "Could not find", morder.get("adId"), "that is reconcired for order", morder.get("orderId")
15423 amit.gupta 1133
 
15542 amit.gupta 1134
    flipkartOrders = session.query(FlipkartOrders).order_by(FlipkartOrders.created.desc()).all()
15540 amit.gupta 1135
    flipkartOrders.reverse()
15423 amit.gupta 1136
    row3=0
15430 amit.gupta 1137
    #try:
15540 amit.gupta 1138
    for order in flipkartOrders:
15423 amit.gupta 1139
        row3 += 1
1140
        i=-1
15540 amit.gupta 1141
        sh2.write(row3, inc(), order.user_id)
1142
        sh2.write(row3, inc(), order.email)
1143
        sh2.write(row3, inc(), order.created, datetime_format)
15423 amit.gupta 1144
        sh2.write(row3, inc(), "Flipkart")
15540 amit.gupta 1145
        sh2.write(row3, inc(), order.status)
1146
        sh2.write(row3, inc(), order.title)
1147
        sh2.write(row3, inc(), order.price)
1148
        sh2.write(row3, inc(), order.quantity)
1149
        sh2.write(row3, inc(), order.catalogId)
1150
        sh2.write(row3, inc(), order.brand)
1151
        sh2.write(row3, inc(), order.model)
1152
        sh2.write(row3, inc(), order.category)
14632 amit.gupta 1153
 
14613 amit.gupta 1154
    wb.save(XLS_FILENAME)
14632 amit.gupta 1155
    workbook.save(XLS_O_FILENAME)
14647 amit.gupta 1156
 
1157
def getSkuData(storeId, identifier):
16492 amit.gupta 1158
    if storeId in (1,2,4,5,6):
14647 amit.gupta 1159
        skuData = client.Catalog.MasterData.find_one({'identifier':identifier, 'source_id':storeId})
1160
    elif storeId == 3:
1161
        skuData = client.Catalog.MasterData.find_one({'secondaryIdentifier':identifier, 'source_id':storeId})
1162
    return skuData
1163
 
14460 amit.gupta 1164
def inc():
1165
    global i
1166
    i+=1
1167
    return i
15540 amit.gupta 1168
 
1169
def migrateFlipkartOrders():
1170
    db = client.Dtr
1171
    info = reversed(list(db.flipkartOrderAffiliateInfo.find()))
1172
    #try:
1173
    for order in info:
1174
        userId = None
1175
        subTagId = None
1176
        email = None
1177
        subTagId = order.get("subTagId")
1178
        if subTagId:
1179
            click = session.query(Clicks).filter_by(tag = subTagId).first()
1180
            if click is not None:
1181
                userId= click.user_id 
1182
                user = session.query(Users.email).filter_by(id = userId).first()
1183
                if user is not None:
1184
                    email = user.email
1185
 
1186
        flipkartOrder = FlipkartOrders()
1187
        flipkartOrder.user_id = userId
1188
        flipkartOrder.identifier = order.get("identifier")
1189
        flipkartOrder.email = email
1190
        flipkartOrder.subtagId = order.get("subTagId")
1191
        flipkartOrder.created = datetime.strptime(order.get("saleDate"), "%Y-%m-%d")
1192
        flipkartOrder.status = order.get("conversionStatus")
1193
        flipkartOrder.title = order.get("productTitle")
1194
        flipkartOrder.price = order.get("price")
1195
        flipkartOrder.quantity = order.get("quantity")
1196
        flipkartOrder.productCode = order.get("productCode")
1197
        skuData = getSkuData(2, order.get("productCode"))
1198
        if skuData is not None:
1199
            flipkartOrder.catalogId = skuData.get("skuBundleId")
1200
            flipkartOrder.brand = skuData.get("brand")
1201
            flipkartOrder.model = skuData.get("model_name")
1202
            flipkartOrder.category =categoryMap.get(skuData.get("category_id"))
1203
            flipkartOrder.title =skuData.get("source_product_name")
1204
 
1205
    session.commit()
16947 amit.gupta 1206
 
1207
 
1208
def main1():
1209
    db = client.Dtr
1210
    for offer in db.snapdealOrderAffiliateInfo.find({}):
1211
        print offer.get("adId"), offer.get("saleAmount"), type(offer.get("saleAmount"))  
1212
        #obj = offer.get(saleTime)
1213
        #obj['paidAmount'] += order["paidAmount"]
14632 amit.gupta 1214
def addHeaders(sheet):
1215
    global i
1216
    i = 0
1217
    sheet.write(0, inc(), )
14450 amit.gupta 1218
def main():
14647 amit.gupta 1219
 
16995 amit.gupta 1220
    message = generateSnapDealReco()
14647 amit.gupta 1221
    generateFlipkartReco()
15791 manish.sha 1222
    generateShopcluesReco()
14650 amit.gupta 1223
    generateAmazonReco(XLS_A_FILENAME)
14613 amit.gupta 1224
    getUserOrders()
16995 amit.gupta 1225
    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)
17001 amit.gupta 1226
    #sendmail(["amit.gupta@shop2020.in"], "", "Affiliate Reco", XLS_FILENAME, XLS_F_FILENAME, XLS_A_FILENAME, XLS_SC_FILENAME)
16266 manish.sha 1227
    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)
17001 amit.gupta 1228
 
1229
 
1230
def main2():
1231
    db = client.Dtr
1232
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=1), 3)
1233
    datemap={}
1234
    for row1 in curs:
1235
        orderId = row1[0]
1236
        order = db.merchantOrder.find_one({"orderId":orderId})
1237
        if order is None:
1238
            continue
1239
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
1240
        try:
1241
            saleTime = datetime.strptime(order['placedOn'], "%a, %d %b, %Y").strftime("%Y-%m-%d")
1242
        except:
1243
            saleTime = datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").strftime("%Y-%m-%d")
1244
        print "%s\t%s\t%s\t%s"%(orderId, order['placedOn'], saleTime, order['paidAmount'])
1245
        if not datemap.has_key(saleTime):
1246
            datemap[saleTime] = {"totalAmount":0, "paidAmount":0, "rejectedAmount":0, "approvedAmount":0, "count":0}
1247
 
1248
        obj = datemap.get(saleTime)
1249
        obj['paidAmount'] += order["paidAmount"]
1250
        obj['count'] += 1
1251
 
1252
    for offer in db.snapdealOrderAffiliateInfo1.find({"saleDate":{"$gte":toTimeStamp(datetime.now() - timedelta(days=1))}}):
1253
        saleTime =  utils.fromTimeStamp(offer.get('saleDate')).strftime("%Y-%m-%d")
1254
        obj = datemap.get(saleTime)
1255
        if obj is not None:
1256
            try:
1257
                if offer.get("payOut"):
1258
                    obj['approvedAmount'] += offer["saleAmount"]
1259
                else:
1260
                    obj['rejectedAmount'] += offer["saleAmount"]
1261
            except:
1262
                print "Exception for orderId" , offer.get("orderId")
1263
        else:
1264
            print "Could not find sale date", saleTime
1265
            continue
1266
 
1267
    for key,valmap in  datemap.iteritems():
1268
        valmap['_id'] = key
1269
        db.flSaleSnapshot.save(valmap)
14450 amit.gupta 1270
 
1271
if __name__ == '__main__':
17010 amit.gupta 1272
    main2()
17008 amit.gupta 1273
    main()
17010 amit.gupta 1274
 
14460 amit.gupta 1275