Subversion Repositories SmartDukaan

Rev

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

Rev 16605 Rev 16631
Line 2... Line 2...
2
from datetime import datetime, timedelta
2
from datetime import datetime, timedelta
3
from dtr.config import PythonPropertyReader
3
from dtr.config import PythonPropertyReader
4
from dtr.dao import FeaturedDeals, AppTransactions
4
from dtr.dao import FeaturedDeals, AppTransactions
5
from dtr.storage import DataService
5
from dtr.storage import DataService
6
from dtr.storage.DataService import price_preferences, brand_preferences, \
6
from dtr.storage.DataService import price_preferences, brand_preferences, \
7
    user_actions, Brands, app_offers
7
    user_actions, Brands, app_offers, approved_app_transactions, user_app_cashbacks, user_app_installs
8
from dtr.storage.MemCache import MemCache
8
from dtr.storage.MemCache import MemCache
9
from dtr.utils.FetchLivePrices import returnLatestPrice
9
from dtr.utils.FetchLivePrices import returnLatestPrice
10
from dtr.utils.utils import to_java_date, CB_PENDING, CB_APPROVED, CB_INIT
10
from dtr.utils.utils import to_java_date, CB_PENDING, CB_APPROVED, CB_INIT, to_py_date
11
from elixir import *
11
from elixir import *
12
from operator import itemgetter
12
from operator import itemgetter
13
import pymongo
13
import pymongo
14
import random
14
import random
15
import re
15
import re
16
import traceback
16
import traceback
-
 
17
import time
17
 
18
 
18
con = None
19
con = None
19
 
20
 
20
DataService.initialize(db_hostname="localhost")
21
DataService.initialize(db_hostname="localhost")
21
mc = MemCache("127.0.0.1")
22
mc = MemCache("127.0.0.1")
Line 1417... Line 1418...
1417
    try:
1418
    try:
1418
        transaction = list(get_mongo_connection().AppOrder.AppTransaction.find({'_id':ObjectId(transaction_id)}))
1419
        transaction = list(get_mongo_connection().AppOrder.AppTransaction.find({'_id':ObjectId(transaction_id)}))
1419
        if len(transaction) > 0:
1420
        if len(transaction) > 0:
1420
            if (transaction[0])['payout_status'] ==1:
1421
            if (transaction[0])['payout_status'] ==1:
1421
                get_mongo_connection().AppOrder.AppTransaction.update({'_id':ObjectId(transaction_id)},{"$set":{'payout_amount':float(payout), 'payout_description': CB_APPROVED,'payout_status':2}})
1422
                get_mongo_connection().AppOrder.AppTransaction.update({'_id':ObjectId(transaction_id)},{"$set":{'payout_amount':float(payout), 'payout_description': CB_APPROVED,'payout_status':2}})
-
 
1423
            
-
 
1424
                approvedAppTransaction = approved_app_transactions()
-
 
1425
                approvedAppTransaction.app_id = transaction[0]['app_id']
-
 
1426
                approvedAppTransaction.cash_back_description = transaction[0]['cash_back_description']
-
 
1427
                approvedAppTransaction.retailer_id = transaction[0]['retailer_id']
-
 
1428
                approvedAppTransaction.transaction_id = transaction_id
-
 
1429
                approvedAppTransaction.transaction_time = to_py_date(long(transaction[0]['transaction_time']))
-
 
1430
                approvedAppTransaction.redirect_url = transaction[0]['redirect_url']
-
 
1431
                approvedAppTransaction.payout_status = long(transaction[0]['payout_status'])
-
 
1432
                approvedAppTransaction.payout_description = transaction[0]['payout_description']
-
 
1433
                approvedAppTransaction.cashback_status = long(transaction[0]['cashback_status']) 
-
 
1434
                approvedAppTransaction.payout_amount = long(payout)
-
 
1435
                approvedAppTransaction.payout_time = datetime.now()
-
 
1436
                approvedAppTransaction.offer_price = long(transaction[0]['offer_price']) 
-
 
1437
                approvedAppTransaction.overridenCashBack = transaction[0]['overridenCashBack']
-
 
1438
                if str(transaction[0]['isCashBackOverriden']) == 'false' or str(transaction[0]['isCashBackOverriden']) == 'False':
-
 
1439
                    approvedAppTransaction.isCashBackOverriden = False
-
 
1440
                else:
-
 
1441
                    approvedAppTransaction.isCashBackOverriden = True
-
 
1442
                approvedAppTransaction.user_payout = transaction[0]['user_payout']
-
 
1443
                approvedAppTransaction.cashBackConsidered = False
-
 
1444
                session.commit()
-
 
1445
                
-
 
1446
                updateResult = _updateApprovedCashbackToUser(approvedAppTransaction.id)
1422
                return {'status':'ok','message':'Payout updated'}
1447
                return {'status':'ok','message':'Payout updated'}
1423
            elif (transaction[0])['payout_status'] ==2:
1448
            elif (transaction[0])['payout_status'] ==2:
1424
                return {'status':'ok','message':'Payout already processed'}
1449
                return {'status':'ok','message':'Payout already processed'}
1425
            else:
1450
            else:
1426
                return {'status':'fail','message':'Something is wrong'}
1451
                return {'status':'fail','message':'Something is wrong'}
1427
        else:
1452
        else:
1428
            return {'status':'fail','message':'transaction_id not found'}
1453
            return {'status':'fail','message':'transaction_id not found'}
1429
    except:
1454
    except:
-
 
1455
        try:
-
 
1456
            get_mongo_connection().AppOrder.AppTransaction.update({'_id':ObjectId(transaction_id)},{"$set":{'payout_amount':None, 'payout_description': CB_INIT,'payout_status':1}})
-
 
1457
        except:
-
 
1458
            print 'Data Inconsistency in Cashback Process'
-
 
1459
            traceback.print_exc()
1430
        return  {'status':'fail','message':'Something is wrong'}
1460
        return  {'status':'fail','message':'Something is wrong'}
1431
        
1461
        
-
 
1462
def _updateApprovedCashbackToUser(approvedAppTransactionId):
-
 
1463
    approvedAppTransaction = approved_app_transactions.get_by(id=approvedAppTransactionId)
-
 
1464
    currentMonth = datetime.today().month
-
 
1465
    currentDay = datetime.today().day
-
 
1466
    currentYear = datetime.today().year
-
 
1467
    fortNight = (currentMonth - 1)*2 + (currentDay/15)
-
 
1468
    if currentDay == 30 or currentDay ==31:
-
 
1469
        fortNight = fortNight-1
-
 
1470
    userAppCashbackObj = user_app_cashbacks.query.filter(user_app_cashbacks.yearVal==currentYear).filter(user_app_cashbacks.user_id==approvedAppTransaction.retailer_id).filter(user_app_cashbacks.fortnightOfYear==fortNight).filter(user_app_cashbacks.status=='Approved').first()
-
 
1471
    userAppInstallObj = user_app_installs.query.filter(user_app_installs.user_id==approvedAppTransaction.retailer_id).filter(user_app_installs.app_id==approvedAppTransaction.app_id).filter(user_app_installs.transaction_date==datetime(currentYear, currentMonth, currentDay, 0, 0, 0, 0).date()).first()
-
 
1472
    try:
-
 
1473
        if userAppCashbackObj is None:
-
 
1474
            userAppCashbackObj = user_app_cashbacks()
-
 
1475
            userAppCashbackObj.user_id = approvedAppTransaction.retailer_id
-
 
1476
            userAppCashbackObj.status = 'Approved'
-
 
1477
            userAppCashbackObj.amount = approvedAppTransaction.user_payout
-
 
1478
            userAppCashbackObj.fortnightOfYear = fortNight
-
 
1479
            userAppCashbackObj.yearVal = currentYear
-
 
1480
        else:
-
 
1481
            userAppCashbackObj.amount = userAppCashbackObj.amount + approvedAppTransaction.user_payout
-
 
1482
            
-
 
1483
        if userAppInstallObj is None:
-
 
1484
            app_offer = app_offers.get_by(id=approvedAppTransaction.app_id)
-
 
1485
            userAppInstallObj = user_app_installs()
-
 
1486
            userAppInstallObj.user_id = approvedAppTransaction.retailer_id
-
 
1487
            userAppInstallObj.fortnightOfYear = fortNight
-
 
1488
            userAppInstallObj.transaction_date = datetime(currentYear, currentMonth, currentDay, 0, 0, 0, 0).date()
-
 
1489
            userAppInstallObj.app_id = approvedAppTransaction.app_id
-
 
1490
            userAppInstallObj.app_name = app_offer.app_name
-
 
1491
            userAppInstallObj.installCount = 1
-
 
1492
            userAppInstallObj.payoutAmount = approvedAppTransaction.user_payout
-
 
1493
        else:
-
 
1494
            userAppInstallObj.installCount = userAppInstallObj.installCount + 1
-
 
1495
            userAppInstallObj.payoutAmount = userAppInstallObj.payoutAmount +approvedAppTransaction.user_payout
-
 
1496
            
-
 
1497
        approvedAppTransaction.cashBackConsidered = True
-
 
1498
        session.commit()
-
 
1499
        return True
-
 
1500
    except:
-
 
1501
        session.rollback()
-
 
1502
        traceback.print_exc()
-
 
1503
        return False
-
 
1504
        
1432
    
1505
    
1433
    
1506
    
1434
    
1507
    
1435
def main():
1508
def main():
1436
    #generateRedirectUrl(101,1
1509
    #generateRedirectUrl(101,1