Subversion Repositories SmartDukaan

Rev

Rev 14512 | Rev 14525 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14512 Rev 14524
Line 2... Line 2...
2
Created on Mar 13, 2015
2
Created on Mar 13, 2015
3
 
3
 
4
@author: amit
4
@author: amit
5
'''
5
'''
6
from datetime import date, datetime, timedelta
6
from datetime import date, datetime, timedelta
7
from dtr.storage.Mysql import getOrdersAfterDate
7
from dtr.storage.Mysql import getOrdersAfterDate, \
-
 
8
    getOrdersByTag
8
from email import encoders
9
from email import encoders
9
from email.mime.base import MIMEBase
10
from email.mime.base import MIMEBase
10
from email.mime.multipart import MIMEMultipart
11
from email.mime.multipart import MIMEMultipart
11
from email.mime.text import MIMEText
12
from email.mime.text import MIMEText
12
from pymongo.mongo_client import MongoClient
13
from pymongo.mongo_client import MongoClient
13
from xlrd import open_workbook
14
from xlrd import open_workbook
-
 
15
from xlutils.copy import copy
14
from xlwt.Workbook import Workbook
16
from xlwt.Workbook import Workbook
15
import MySQLdb
17
import MySQLdb
16
from xlutils.copy import copy
-
 
17
import smtplib
18
import smtplib
18
import time
19
import time
19
import xlwt
20
import xlwt
20
#from xlwt import 
21
#from xlwt import 
21
 
22
 
Line 94... Line 95...
94
                    break
95
                    break
95
                                         
96
                                         
96
 
97
 
97
        wb.save(XLS_FILENAME)
98
        wb.save(XLS_FILENAME)
98
def generateSnapDealReco():
99
def generateSnapDealReco():
-
 
100
    global i
99
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
101
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
100
    db = client.Dtr
102
    db = client.Dtr
101
    
103
    notReconciled = {}
102
    matchedList = []
104
    matchedList = []
103
    workbook = xlwt.Workbook()
105
    workbook = xlwt.Workbook()
104
    worksheet = workbook.add_sheet("Snapdeal Reconciled")
106
    worksheet = workbook.add_sheet("Snapdeal Reconciled")
105
    worksheet1 = workbook.add_sheet("Snapdeal Reconciled All")
107
    worksheet1 = workbook.add_sheet("Snapdeal Reconciled All")
106
    worksheet2 = workbook.add_sheet("Snapdeal Orders not reconciled")
108
    worksheet2 = workbook.add_sheet("Snapdeal Orders not reconciled")
Line 115... Line 117...
115
        if order is None:
117
        if order is None:
116
            continue
118
            continue
117
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
119
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
118
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
120
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
119
        anotherrow += 1
121
        anotherrow += 1
120
        if len(aff) > 0 and order["subTagId"] not in matchedList: 
122
        if len(aff) > 0 and order["subTagId"] not in matchedList and int(order["paidAmount"])==int(aff[0]["saleAmount"]): 
121
            matchedList.append(order["subTagId"])
123
            matchedList.append(order["subTagId"])
122
            aff[0]['reconciled'] = True
124
            aff[0]['reconciled'] = True
123
            db.snapdealOrderAffiliateInfo.save(aff[0])
125
            db.snapdealOrderAffiliateInfo.update({"adId":aff[0].get("adId")}, {"$set":{"reconcile":True}}, multi=True)
124
            order['reconciled'] = True
126
            order['reconciled'] = True
125
            db.merchantOrder.save(order)
127
            db.merchantOrder.save(order)
126
            row += 1
128
            row += 1
127
            global i
-
 
128
            i=-1 
129
            i=-1 
129
            worksheet.write(row, inc(), orderId)
130
            worksheet.write(row, inc(), orderId)
130
            worksheet1.write(anotherrow, i, orderId)
131
            worksheet1.write(anotherrow, i, orderId)
131
            worksheet.write(row, inc(), row1[1])
132
            worksheet.write(row, inc(), row1[1])
132
            worksheet1.write(anotherrow, i, row1[1])
133
            worksheet1.write(anotherrow, i, row1[1])
Line 138... Line 139...
138
            worksheet1.write(anotherrow, i, order['subTagId'])
139
            worksheet1.write(anotherrow, i, order['subTagId'])
139
            worksheet.write(row, inc(), order['placedOn'])
140
            worksheet.write(row, inc(), order['placedOn'])
140
            worksheet1.write(anotherrow, i, order['placedOn'])
141
            worksheet1.write(anotherrow, i, order['placedOn'])
141
            worksheet.write(row, inc(), int(order['paidAmount']))
142
            worksheet.write(row, inc(), int(order['paidAmount']))
142
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
143
            worksheet1.write(anotherrow, i, int(order['paidAmount']))
143
            if int(order["paidAmount"]) == aff[0]["saleAmount"]:
-
 
144
                worksheet.write(row, inc(), aff[0]['saleDate'])
144
            worksheet.write(row, inc(), aff[0]['saleDate'])
145
                worksheet1.write(anotherrow, i, aff[0]['saleDate'])
145
            worksheet1.write(anotherrow, i, aff[0]['saleDate'])
146
                worksheet.write(row, inc(), aff[0]['saleAmount'])
146
            worksheet.write(row, inc(), aff[0]['saleAmount'])
147
                worksheet1.write(anotherrow, i, aff[0]['saleAmount'])
147
            worksheet1.write(anotherrow, i, aff[0]['saleAmount'])
148
                worksheet.write(row, inc(), aff[0]['payOut'])
148
            worksheet.write(row, inc(), aff[0]['payOut'])
149
                worksheet1.write(anotherrow, i, aff[0]['payOut'])
149
            worksheet1.write(anotherrow, i, aff[0]['payOut'])
150
            k = i
150
            k = i
151
            row -= 1
151
            row -= 1
152
            anotherrow -= 1
152
            anotherrow -= 1
153
            for subOrder in order['subOrders']:
153
            for subOrder in order['subOrders']:
154
                i = k
154
                i = k
Line 167... Line 167...
167
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
167
                worksheet.write(row, inc(), subOrder['cashBackAmount'])
168
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
168
                worksheet1.write(anotherrow, i, subOrder['cashBackAmount'])
169
 
169
 
170
        else:
170
        else:
171
            row2 +=1
171
            row2 +=1
172
            i=-1 
172
            i=-1
173
            worksheet1.write(anotherrow, inc(), orderId)
173
            worksheet1.write(anotherrow, inc(), orderId)
174
            worksheet2.write(row2, i, orderId)
174
            worksheet2.write(row2, i, orderId)
175
            worksheet1.write(anotherrow, inc(), row1[1])
175
            worksheet1.write(anotherrow, inc(), row1[1])
176
            worksheet2.write(row2, i, row1[1])
176
            worksheet2.write(row2, i, row1[1])
177
            worksheet1.write(anotherrow, inc(), row1[-1])
177
            worksheet1.write(anotherrow, inc(), row1[-1])
Line 182... Line 182...
182
            worksheet2.write(row2, i, order['subTagId'])
182
            worksheet2.write(row2, i, order['subTagId'])
183
            worksheet1.write(anotherrow, inc(), order['placedOn'])
183
            worksheet1.write(anotherrow, inc(), order['placedOn'])
184
            worksheet2.write(row2, i, order['placedOn'])
184
            worksheet2.write(row2, i, order['placedOn'])
185
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
185
            worksheet1.write(anotherrow, inc(), int(order['paidAmount']))
186
            worksheet2.write(row2, i, int(order['paidAmount']))
186
            worksheet2.write(row2, i, int(order['paidAmount']))
-
 
187
            timestamp1 = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
187
            worksheet1.write(anotherrow, inc(), "")
188
            notReconciled[orderId] = (anotherrow, i, int(order['paidAmount']), timestamp1, order["subTagId"]) 
-
 
189
            inc()
188
            worksheet1.write(anotherrow, inc(), "")
190
            inc()
189
            worksheet1.write(anotherrow, inc(), "")
191
            inc()
190
            k = i
192
            k = i
191
            anotherrow -= 1
193
            anotherrow -= 1
192
            row2 -= 1
194
            row2 -= 1
193
            for subOrder in order['subOrders']:
195
            for subOrder in order['subOrders']:
194
                anotherrow += 1
196
                anotherrow += 1
Line 204... Line 206...
204
                worksheet2.write(row2, i-3, subOrder['status'])
206
                worksheet2.write(row2, i-3, subOrder['status'])
205
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
207
                worksheet1.write(anotherrow, inc(), subOrder['cashBackStatus'])
206
                worksheet2.write(row2, i-3, subOrder['cashBackStatus'])
208
                worksheet2.write(row2, i-3, subOrder['cashBackStatus'])
207
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
209
                worksheet1.write(anotherrow, inc(), subOrder['cashBackAmount'])
208
                worksheet2.write(row2, i-3, subOrder['cashBackAmount'])
210
                worksheet2.write(row2, i-3, subOrder['cashBackAmount'])
-
 
211
                
-
 
212
    last30Days =  date.today() - timedelta(days=30)
-
 
213
    int(time.mktime(last30Days.timetuple()))
-
 
214
    row = 0
-
 
215
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
-
 
216
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
-
 
217
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
-
 
218
        row += 1
-
 
219
        i=-1
-
 
220
        affNotReconciledSheet.write(row, inc(), offer.get("adId")) 
-
 
221
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
-
 
222
        affNotReconciledSheet.write(row, inc(), offer.get("saleDate")) 
-
 
223
        affNotReconciledSheet.write(row, inc(), offer.get("saleAmount")) 
-
 
224
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
-
 
225
        affNotReconciledSheet.write(row, inc(), offer.get("conversionStatus"))
-
 
226
        
-
 
227
        subTagId = offer.get("subTagId")
-
 
228
        saleTime = offer.get("saleTime")
-
 
229
        orders = getOrdersByTag(subTagId, 3)
-
 
230
        for order in orders:
-
 
231
            if notReconciled.has_key(order[0]):
-
 
232
                (roww, column, paidAmount, timestamp1, oSubTagId) = notReconciled[order[0]]
-
 
233
                if paidAmount==int(offer.get("saleAmount")) and timestamp1 <= saleTime and timestamp1 + 120 >= saleTime:
-
 
234
                    i = column
-
 
235
                    try:
-
 
236
                        worksheet1.write(roww, inc(), subTagId)        
-
 
237
                        worksheet1.write(roww, inc(), offer.get("saleAmount"))        
-
 
238
                        worksheet1.write(roww, inc(), offer.get("payOut"))
-
 
239
                        print "found match for user", order[1] 
-
 
240
                    except:
-
 
241
                        print "found another match for user", order[1] 
-
 
242
                        i=17
-
 
243
                        worksheet1.write(roww, inc(), subTagId)        
-
 
244
                        worksheet1.write(roww, inc(), offer.get("saleAmount"))        
-
 
245
                        worksheet1.write(roww, inc(), offer.get("payOut"))
-
 
246
        
209
            
247
         
210
        workbook.save(XLS_FILENAME)
248
        workbook.save(XLS_FILENAME)
211
            
249
            
212
def sendmail(email, message, title):
250
def sendmail(email, message, title):
213
    if email == "":
251
    if email == "":
214
        return
252
        return
Line 300... Line 338...
300
    affNotReconciledSheet.write(row, inc(), 'subTagId', boldStyle) 
338
    affNotReconciledSheet.write(row, inc(), 'subTagId', boldStyle) 
301
    affNotReconciledSheet.write(row, inc(), 'Sale Date', boldStyle) 
339
    affNotReconciledSheet.write(row, inc(), 'Sale Date', boldStyle) 
302
    affNotReconciledSheet.write(row, inc(), 'Sale Amount', boldStyle) 
340
    affNotReconciledSheet.write(row, inc(), 'Sale Amount', boldStyle) 
303
    affNotReconciledSheet.write(row, inc(), 'Pay Out', boldStyle) 
341
    affNotReconciledSheet.write(row, inc(), 'Pay Out', boldStyle) 
304
    affNotReconciledSheet.write(row, inc(), 'Status', boldStyle) 
342
    affNotReconciledSheet.write(row, inc(), 'Status', boldStyle) 
305
    db = client.Dtr
-
 
306
    last30Days =  date.today() - timedelta(days=30)
-
 
-
 
343
 
307
    int(time.mktime(last30Days.timetuple()))
344
def getUserAmountReconciled():
308
    for offer in db.snapdealOrderAffiliateInfo.find({"reconciled":{"$exists":False}, 
-
 
309
                                                     "saleTime":{"$gt":int(time.mktime(last30Days.timetuple())),
-
 
310
                                                                 "$lt":int(time.mktime(date.today().timetuple()))}} ):
-
 
311
        row += 1
-
 
312
        i=-1
345
    pass
313
        affNotReconciledSheet.write(row, inc(), offer.get("adId")) 
-
 
314
        affNotReconciledSheet.write(row, inc(), offer.get("subTagId")) 
-
 
315
        affNotReconciledSheet.write(row, inc(), offer.get("saleDate")) 
-
 
316
        affNotReconciledSheet.write(row, inc(), offer.get("saleAmount")) 
-
 
317
        affNotReconciledSheet.write(row, inc(), offer.get("payOut")) 
-
 
318
        affNotReconciledSheet.write(row, inc(), offer.get("conversionStatus")) 
-
 
-
 
346
 
319
    
347
 
320
def inc():
348
def inc():
321
    global i
349
    global i
322
    i+=1
350
    i+=1
323
    return i
351
    return i
324
    
352
    
325
def main():
353
def main():
326
    generateSnapDealReco()
354
    generateSnapDealReco()
327
    generateFlipkartReco()
355
    #generateFlipkartReco()
328
    sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
356
    #sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
329
 
357
 
330
if __name__ == '__main__':
358
if __name__ == '__main__':
331
    main()
359
    main()
332
    
360
    
333
361