Subversion Repositories SmartDukaan

Rev

Rev 12722 | Rev 12739 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
11653 amit.gupta 1
'''
2
Created on 06-Dec-2011
3
 
4
@author: varungupta
5
'''
6
 
7
from shop2020.clients.CatalogClient import CatalogClient
8
from shop2020.clients.UserClient import UserClient
9
from shop2020.model.v1.user.impl.Dataservice import PrivateDealUser
10
from shop2020.thriftpy.model.v1.user.ttypes import PromotionException, Discount
12722 amit.gupta 11
import datetime
11653 amit.gupta 12
 
13
 
14
def execute(cart, coupon_code, args):
15
    user_client = UserClient().get_client()
16
    user = user_client.getUserByCartId(cart.id)
11663 amit.gupta 17
    if user.isAnonymous:
18
        raise PromotionException(115, 'Please try logging in')
19
 
12722 amit.gupta 20
    privateDealUser = PrivateDealUser.get_by(id=user.userId)
11653 amit.gupta 21
    #email = user.email.lower().strip()
12722 amit.gupta 22
 
23
 
24
 
11666 amit.gupta 25
    print "privateDealUser.isActive" + `privateDealUser.isActive`
11664 amit.gupta 26
    if privateDealUser is not None and privateDealUser.isActive:
12722 amit.gupta 27
        #Check if user have any order placed successfully
11665 amit.gupta 28
        if cart.lines is not None:
11653 amit.gupta 29
            discounts = []
30
            itemIds = []
31
            [itemIds.append(line.itemId) for line in cart.lines]
11659 amit.gupta 32
            catalog_client = CatalogClient().get_client()
11660 amit.gupta 33
            privateDeals= catalog_client.getAllActivePrivateDeals(itemIds,0)
11653 amit.gupta 34
            if(len(privateDeals) == 0):
35
                raise PromotionException(115, 'None of the products have valid Private Deal')
36
            dealItems = privateDeals.keys()
37
            total_discounts = 0
38
            for line in cart.lines:
39
                if line.itemId in dealItems:
11662 amit.gupta 40
                    discountAmount = line.actualPrice - privateDeals[line.itemId].dealPrice
41
                    if discountAmount > 0:
42
                        discount = Discount()
43
                        discount.cart_id = cart.id
44
                        discount.item_id = line.itemId
45
                        discount.quantity = line.quantity
46
                        discount.discount = discountAmount 
47
                        discounts.append(discount)
11669 amit.gupta 48
                        total_discounts = total_discounts + discountAmount*line.quantity
11653 amit.gupta 49
                    if privateDeals[line.itemId].dealTextOption==0:
50
                        line.dealText = ''
11915 amit.gupta 51
                        cart.message = 'Offer on deal is changed/removed'
11653 amit.gupta 52
                    if privateDeals[line.itemId].dealTextOption==2:
53
                        line.dealText =  privateDeals[line.itemId].dealText
11915 amit.gupta 54
                        cart.message = 'Offer on deal is changed/removed'
11653 amit.gupta 55
 
56
                    if privateDeals[line.itemId].dealFreebieOption==0:
57
                        line.freebieId = 0
58
                    if privateDeals[line.itemId].dealFreebieOption==2:
59
                        line.freebieId =  privateDeals[line.itemId].dealFreebieItemId
60
 
61
 
62
            cart.discountedPrice = cart.totalPrice - round(total_discounts, 0)
12733 amit.gupta 63
            if cart.discountedPrice > 2000:
64
                counter = privateDealUser.counter
65
                if counter is not None:
66
                    if datetime.datetime.now() - counter.createdOn < datetime.timedelta(30) and counter.lastPurchasedOn is None:
67
                        firstTimeDiscount = 200
11653 amit.gupta 68
            return cart, discounts
11663 amit.gupta 69
    else:
70
        raise PromotionException(115, 'Invalid Coupon code')
71