| 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 |
|