Subversion Repositories SmartDukaan

Rev

Rev 20046 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
19557 manas 1
'''
2
Created on 18-Apr-2016
3
 
4
@author: manas
5
'''
6
 
7
from datetime import date, datetime, timedelta, datetime
8
from elixir import *
9
from email import encoders
10
from email.mime.base import MIMEBase
11
from email.mime.multipart import MIMEMultipart
12
from email.mime.text import MIMEText
13
from operator import or_
14
from pymongo.mongo_client import MongoClient
15
from sqlalchemy.sql.expression import func, and_
16
from time import strftime
17
from xlrd import open_workbook
18
from xlutils.copy import copy
19
from xlwt.Workbook import Workbook
20
import MySQLdb
21
import pymongo
22
import smtplib
23
import sys
24
import time
25
import xlwt
26
 
27
 
28
TMP_FILE = "WALLET_REFUND_REPORT.xls"  
29
con = None
30
orderIds = []
31
SENDER = "cnc.center@shop2020.in"
32
PASSWORD = "5h0p2o2o"
33
SUBJECT = "Wallet Refund Report for " + str(date.today() - timedelta(days=1))
34
SMTP_SERVER = "smtp.gmail.com"
35
SMTP_PORT = 587    
36
date_format = xlwt.XFStyle()
37
date_format.num_format_str = 'yyyy/mm/dd'
38
datetime_format = xlwt.XFStyle()
39
datetime_format.num_format_str = 'yyyy/mm/dd HH:MM AM/PM'
40
default_format = xlwt.XFStyle()
41
 
42
 
43
def getMailBody():
44
    inputs = "Total Credited Amount " + str(totalCreditedSum) + "<br> Total Approved Amount " + str(totalApprovedSum)+ " <br> Total Cancelled Amount " + str(totalCancelledSum) + " <br> Total Pending Amount " + str(totalPendingSum)    
45
    return inputs
46
 
47
def sendmail(email, message, fileName, title):
48
    if email == "":
49
        return
50
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
51
    mailServer.ehlo()
52
    mailServer.starttls()
53
    mailServer.ehlo()
54
 
55
    # Create the container (outer) email message.
56
    msg = MIMEMultipart()
57
    msg['Subject'] = title
58
    msg.preamble = title
59
 
60
    msg.attach(MIMEText(getMailBody(), 'html'))
61
 
62
    fileMsg = MIMEBase('application', 'vnd.ms-excel')
63
    fileMsg.set_payload(file(TMP_FILE).read())
64
    encoders.encode_base64(fileMsg)
65
    fileMsg.add_header('Content-Disposition', 'attachment;filename=' + fileName)
66
    msg.attach(fileMsg)
67
 
20172 aman.kumar 68
    MAILTO = ['rajender.singh@saholic.com','rajneesh.arora@saholic.com', 'amit.gupta@saholic.com','khushal.bhatia@saholic.com']
20046 rajender 69
    #MAILTO = ['rajender.singh@saholic.com']
19557 manas 70
    mailServer.login(SENDER, PASSWORD)
71
    mailServer.sendmail(SENDER, MAILTO, msg.as_string())
72
 
73
def get_mongo_connection(host='localhost', port=27017):
74
    global con
75
    if con is None:
76
        print "Establishing connection %s host and port %d" %(host,port)
77
        try:
78
            con = pymongo.MongoClient(host, port)
79
        except Exception, e:
80
            print e
81
            return None
82
    return con
83
 
84
def getLastDate():
85
    lastDate = datetime.now() - timedelta(days=1)
86
    last =  lastDate.strftime('%Y-%m-%d')
87
    last_date_object = datetime.strptime(last+" 00:00:00","%Y-%m-%d %H:%M:%S")
88
    print 'Last Date',last_date_object
89
    return to_java_date(last_date_object)
90
 
91
def getCurrentDate():
92
    currentDate =  datetime.now()
93
    cur =  currentDate.strftime('%Y-%m-%d')
94
    cur_date_object = datetime.strptime(cur+" 00:00:00","%Y-%m-%d %H:%M:%S")
95
    print 'Current Date',cur_date_object
96
    return to_java_date(cur_date_object)
97
 
98
totalApprovedSum = 0     
99
totalCancelledSum = 0   
100
totalCreditedSum = 0
101
totalPendingSum = 0
102
 
103
def generatePendingWalletRefundReport():
104
    global workbook
105
    global totalPendingSum
106
    workbook = xlwt.Workbook()
107
    worksheet = workbook.add_sheet("Pending")
108
    boldStyle = xlwt.XFStyle()
109
    f = xlwt.Font()
110
    f.bold = True
111
    boldStyle.font = f
112
    column = 0
113
    row = 0
114
    worksheet.write(row, 0, 'UserId', boldStyle)
115
    worksheet.write(row, 1, 'EmailId', boldStyle)
116
    worksheet.write(row, 2, 'Mobile Number', boldStyle)
117
    worksheet.write(row, 3, 'Status', boldStyle)
118
    worksheet.write(row, 4, 'Amount', boldStyle)
119
    worksheet.write(row, 5, 'Type', boldStyle)
120
    worksheet.write(row, 6, 'Store', boldStyle)   
121
    worksheet.write(row, 7, 'Reference Number', boldStyle)
122
    worksheet.write(row, 8, 'Reference Description', boldStyle)
123
    worksheet.write(row, 9, 'Approved By', boldStyle)
124
    worksheet.write(row, 10, 'Created Timestamp', boldStyle)
125
    worksheet.write(row, 11, 'Updated Timestamp', boldStyle)
126
    queryFilter = {"$and":
127
                   [
128
                    {'created_timestamp':{"$gte":getLastDate()}},
129
                    {'created_timestamp':{"$lte":getCurrentDate()}},
130
                    {'status':"Pending"}
131
                    ]
132
                   }
133
    result = get_mongo_connection().Dtr.crmrefundwallet.find(queryFilter)
134
    for r in result:
135
        row=row+1
136
        worksheet.write(row, 0, r.get('user_id'))
137
        worksheet.write(row, 1, r.get('email_id'))
138
        worksheet.write(row, 2, r.get('mobile'))
139
        worksheet.write(row, 3, r.get('status'))
140
        worksheet.write(row, 4, r.get('amount'))
141
        totalPendingSum = totalPendingSum + r.get('amount')
142
        worksheet.write(row, 5, r.get('type'))
143
        worksheet.write(row, 6, r.get('store'))   
144
        worksheet.write(row, 7, r.get('reference_no'))
145
        worksheet.write(row, 8, r.get('reference_desc'))
146
        worksheet.write(row, 9, r.get('approved_by'))
147
        worksheet.write(row, 10, to_py_date(r.get('created_timestamp')), datetime_format)
148
        worksheet.write(row, 11, to_py_date(r.get('update_timestamp')) , datetime_format)
149
    workbook.save(TMP_FILE)
150
 
151
def to_java_date(py_timestamp):
152
    try:
153
        java_date =  int(time.mktime(py_timestamp.timetuple())) * 1000 + py_timestamp.microsecond / 1000
154
        return java_date
155
    except:
156
        return None
157
 
158
def to_py_date(java_timestamp):
159
    try:
160
        date = datetime.fromtimestamp(java_timestamp/1e3)
161
    except:
162
        return None
163
 
164
    return date
165
 
166
def generateApprovedWalletRefundReport():
167
    rb = open_workbook(TMP_FILE,formatting_info=True)
168
    global totalApprovedSum
169
    workbook = copy(rb)
170
    worksheet = workbook.add_sheet("Approved")
171
    boldStyle = xlwt.XFStyle()
172
    f = xlwt.Font()
173
    f.bold = True
174
    boldStyle.font = f
175
    column = 0
176
    row = 0
177
    worksheet.write(row, 0, 'UserId', boldStyle)
178
    worksheet.write(row, 1, 'EmailId', boldStyle)
179
    worksheet.write(row, 2, 'Mobile Number', boldStyle)
180
    worksheet.write(row, 3, 'Status', boldStyle)
181
    worksheet.write(row, 4, 'Amount', boldStyle)
182
    worksheet.write(row, 5, 'Type', boldStyle)
183
    worksheet.write(row, 6, 'Store', boldStyle)   
184
    worksheet.write(row, 7, 'Reference Number', boldStyle)
185
    worksheet.write(row, 8, 'Reference Description', boldStyle)
186
    worksheet.write(row, 9, 'Approved By', boldStyle)
187
    worksheet.write(row, 10, 'Created Timestamp', boldStyle)
188
    worksheet.write(row, 11, 'Updated Timestamp', boldStyle)
189
    queryFilter = {"$and":
190
                   [
191
                    {'created_timestamp':{"$gte":getLastDate()}},
192
                    {'created_timestamp':{"$lte":getCurrentDate()}},
193
                    {'status':"Approved"}
194
                    ]
195
                   }
196
    result = get_mongo_connection().Dtr.crmrefundwallet.find(queryFilter)
197
    for r in result:
198
        row=row+1
199
        worksheet.write(row, 0, r.get('user_id'))
200
        worksheet.write(row, 1, r.get('email_id'))
201
        worksheet.write(row, 2, r.get('mobile'))
202
        worksheet.write(row, 3, r.get('status'))
203
        worksheet.write(row, 4, r.get('amount'))
204
        totalApprovedSum = totalApprovedSum + r.get('amount')
205
        worksheet.write(row, 5, r.get('type'))
206
        worksheet.write(row, 6, r.get('store'))   
207
        worksheet.write(row, 7, r.get('reference_no'))
208
        worksheet.write(row, 8, r.get('reference_desc'))
209
        worksheet.write(row, 9, r.get('approved_by'))
210
        worksheet.write(row, 10, to_py_date(r.get('created_timestamp')), datetime_format)
211
        worksheet.write(row, 11, to_py_date(r.get('update_timestamp')) , datetime_format)
212
    workbook.save(TMP_FILE)
213
 
214
def generateCreditedWalletRefundReport():
215
    rb = open_workbook(TMP_FILE,formatting_info=True)
216
    global totalCreditedSum
217
    workbook = copy(rb)
218
    worksheet = workbook.add_sheet("Credited")
219
    boldStyle = xlwt.XFStyle()
220
    f = xlwt.Font()
221
    f.bold = True
222
    boldStyle.font = f
223
    column = 0
224
    row = 0
225
    worksheet.write(row, 0, 'UserId', boldStyle)
226
    worksheet.write(row, 1, 'EmailId', boldStyle)
227
    worksheet.write(row, 2, 'Mobile Number', boldStyle)
228
    worksheet.write(row, 3, 'Status', boldStyle)
229
    worksheet.write(row, 4, 'Amount', boldStyle)
230
    worksheet.write(row, 5, 'Type', boldStyle)
231
    worksheet.write(row, 6, 'Store', boldStyle)   
232
    worksheet.write(row, 7, 'Reference Number', boldStyle)
233
    worksheet.write(row, 8, 'Reference Description', boldStyle)
234
    worksheet.write(row, 9, 'Approved By', boldStyle)
235
    worksheet.write(row, 10, 'Created Timestamp', boldStyle)
236
    worksheet.write(row, 11, 'Updated Timestamp', boldStyle)
237
    queryFilter = {"$and":
238
                   [
239
                    {'created_timestamp':{"$gte":getLastDate()}},
240
                    {'created_timestamp':{"$lte":getCurrentDate()}},
241
                    {'status':"Credited"}
242
                    ]
243
                   }
244
    result = get_mongo_connection().Dtr.crmrefundwallet.find(queryFilter)
245
    for r in result:
246
        row=row+1
247
        worksheet.write(row, 0, r.get('user_id'))
248
        worksheet.write(row, 1, r.get('email_id'))
249
        worksheet.write(row, 2, r.get('mobile'))
250
        worksheet.write(row, 3, r.get('status'))
251
        worksheet.write(row, 4, r.get('amount'))
252
        totalCreditedSum = totalCreditedSum + r.get('amount')
253
        worksheet.write(row, 5, r.get('type'))
254
        worksheet.write(row, 6, r.get('store'))   
255
        worksheet.write(row, 7, r.get('reference_no'))
256
        worksheet.write(row, 8, r.get('reference_desc'))
257
        worksheet.write(row, 9, r.get('approved_by'))
258
        worksheet.write(row, 10, to_py_date(r.get('created_timestamp')), datetime_format)
259
        worksheet.write(row, 11, to_py_date(r.get('update_timestamp')) , datetime_format)
260
    workbook.save(TMP_FILE)
261
 
262
def generateCancelledWalletRefundReport():
263
    rb = open_workbook(TMP_FILE,formatting_info=True)
264
    global totalCancelledSum
265
    workbook = copy(rb)
266
    worksheet = workbook.add_sheet("Cancelled")
267
    boldStyle = xlwt.XFStyle()
268
    f = xlwt.Font()
269
    f.bold = True
270
    boldStyle.font = f
271
    column = 0
272
    row = 0
273
    worksheet.write(row, 0, 'UserId', boldStyle)
274
    worksheet.write(row, 1, 'EmailId', boldStyle)
275
    worksheet.write(row, 2, 'Mobile Number', boldStyle)
276
    worksheet.write(row, 3, 'Status', boldStyle)
277
    worksheet.write(row, 4, 'Amount', boldStyle)
278
    worksheet.write(row, 5, 'Type', boldStyle)
279
    worksheet.write(row, 6, 'Store', boldStyle)   
280
    worksheet.write(row, 7, 'Reference Number', boldStyle)
281
    worksheet.write(row, 8, 'Reference Description', boldStyle)
282
    worksheet.write(row, 9, 'Approved By', boldStyle)
283
    worksheet.write(row, 10, 'Created Timestamp', boldStyle)
284
    worksheet.write(row, 11, 'Updated Timestamp', boldStyle)
285
    queryFilter = {"$and":
286
                   [
287
                    {'created_timestamp':{"$gte":getLastDate()}},
288
                    {'created_timestamp':{"$lte":getCurrentDate()}},
289
                    {'status':"Cancelled"}
290
                    ]
291
                   }
292
    result = get_mongo_connection().Dtr.crmrefundwallet.find(queryFilter)
293
    for r in result:
294
        row=row+1
295
        worksheet.write(row, 0, r.get('user_id'))
296
        worksheet.write(row, 1, r.get('email_id'))
297
        worksheet.write(row, 2, r.get('mobile'))
298
        worksheet.write(row, 3, r.get('status'))
299
        worksheet.write(row, 4, r.get('amount'))
300
        totalCancelledSum = totalCancelledSum + r.get('amount')
301
        worksheet.write(row, 5, r.get('type'))
302
        worksheet.write(row, 6, r.get('store'))   
303
        worksheet.write(row, 7, r.get('reference_no'))
304
        worksheet.write(row, 8, r.get('reference_desc'))
305
        worksheet.write(row, 9, r.get('approved_by'))
306
        worksheet.write(row, 10, to_py_date(r.get('created_timestamp')), datetime_format)
307
        worksheet.write(row, 11, to_py_date(r.get('update_timestamp')) , datetime_format)
308
    workbook.save(TMP_FILE)
309
 
310
 
311
def main():
312
    generatePendingWalletRefundReport()
313
    generateApprovedWalletRefundReport()
314
    generateCreditedWalletRefundReport()
315
    generateCancelledWalletRefundReport()
20046 rajender 316
    #sendmail(["rajender.singh@shop2020.in"], "", TMP_FILE, SUBJECT)
20172 aman.kumar 317
    sendmail(["rajender.singh@shop2020.in","rajneesh.arora@saholic.com", "amit.gupta@shop2020.in", "khushal.bhatia@saholic.com"], "", TMP_FILE, SUBJECT)
19557 manas 318
 
319
if __name__ == '__main__':
320
    main()
321