Subversion Repositories SmartDukaan

Rev

Rev 11915 | Rev 12733 | 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
    if datetime.datetime.now() - user.addedOn < datetime.timedelta(1):
23
        if cart.totalPrice > 2000:
24
            userids = [dealUser.id for dealUser in privateDealUser.counter.dealUsers]
25
 
26
 
27
 
11666 amit.gupta 28
    print "privateDealUser.isActive" + `privateDealUser.isActive`
11664 amit.gupta 29
    if privateDealUser is not None and privateDealUser.isActive:
12722 amit.gupta 30
        #Check if user have any order placed successfully
11665 amit.gupta 31
        if cart.lines is not None:
11653 amit.gupta 32
            discounts = []
33
            itemIds = []
34
            [itemIds.append(line.itemId) for line in cart.lines]
11659 amit.gupta 35
            catalog_client = CatalogClient().get_client()
11660 amit.gupta 36
            privateDeals= catalog_client.getAllActivePrivateDeals(itemIds,0)
11653 amit.gupta 37
            if(len(privateDeals) == 0):
38
                raise PromotionException(115, 'None of the products have valid Private Deal')
39
            dealItems = privateDeals.keys()
40
            total_discounts = 0
41
            for line in cart.lines:
42
                if line.itemId in dealItems:
11662 amit.gupta 43
                    discountAmount = line.actualPrice - privateDeals[line.itemId].dealPrice
44
                    if discountAmount > 0:
45
                        discount = Discount()
46
                        discount.cart_id = cart.id
47
                        discount.item_id = line.itemId
48
                        discount.quantity = line.quantity
49
                        discount.discount = discountAmount 
50
                        discounts.append(discount)
11669 amit.gupta 51
                        total_discounts = total_discounts + discountAmount*line.quantity
11653 amit.gupta 52
                    if privateDeals[line.itemId].dealTextOption==0:
53
                        line.dealText = ''
11915 amit.gupta 54
                        cart.message = 'Offer on deal is changed/removed'
11653 amit.gupta 55
                    if privateDeals[line.itemId].dealTextOption==2:
56
                        line.dealText =  privateDeals[line.itemId].dealText
11915 amit.gupta 57
                        cart.message = 'Offer on deal is changed/removed'
11653 amit.gupta 58
 
59
                    if privateDeals[line.itemId].dealFreebieOption==0:
60
                        line.freebieId = 0
61
                    if privateDeals[line.itemId].dealFreebieOption==2:
62
                        line.freebieId =  privateDeals[line.itemId].dealFreebieItemId
63
 
64
 
65
            cart.discountedPrice = cart.totalPrice - round(total_discounts, 0)
66
            return cart, discounts
11663 amit.gupta 67
    else:
68
        raise PromotionException(115, 'Invalid Coupon code')
69