Subversion Repositories SmartDukaan

Rev

Rev 12743 | 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 = []
12739 amit.gupta 31
            [itemIds.append(firstLine.itemId) for firstLine in cart.lines]
11659 amit.gupta 32
            catalog_client = CatalogClient().get_client()
11660 amit.gupta 33
            privateDeals= catalog_client.getAllActivePrivateDeals(itemIds,0)
12739 amit.gupta 34
            if(len(privateDeals) != 0):
35
                dealItems = privateDeals.keys()
36
                total_discounts = 0
37
                discountsMap = {}
38
                for firstLine in cart.lines:
39
                    if firstLine.itemId in dealItems:
40
                        discountAmount = firstLine.actualPrice - privateDeals[firstLine.itemId].dealPrice
41
                        if discountAmount > 0:
42
                            discount = Discount()
43
                            discount.cart_id = cart.id
44
                            discount.item_id = firstLine.itemId
45
                            discount.quantity = firstLine.quantity
46
                            discount.discount = discountAmount 
47
                            discounts.append(discount)
48
                            discountsMap[firstLine.itemId] = discount
49
                            total_discounts = total_discounts + discountAmount*firstLine.quantity
50
                        if privateDeals[firstLine.itemId].dealTextOption==0:
51
                            firstLine.dealText = ''
52
                            cart.message = 'Offer on deal is changed/removed'
53
                        if privateDeals[firstLine.itemId].dealTextOption==2:
54
                            firstLine.dealText =  privateDeals[firstLine.itemId].dealText
55
                            cart.message = 'Offer on deal is changed/removed'
56
 
57
                        if privateDeals[firstLine.itemId].dealFreebieOption==0:
58
                            firstLine.freebieId = 0
59
                        if privateDeals[firstLine.itemId].dealFreebieOption==2:
60
                            firstLine.freebieId =  privateDeals[firstLine.itemId].dealFreebieItemId
61
                cart.discountedPrice = cart.totalPrice - round(total_discounts, 0)
12743 amit.gupta 62
                if cart.discountedPrice >= 1999:
12739 amit.gupta 63
                    counter = privateDealUser.counter
64
                    if counter is not None:
65
                        if datetime.datetime.now() - counter.createdOn < datetime.timedelta(30) and counter.lastPurchasedOn is None:
66
                            firstLine = cart.lines[0]
67
                            if discountsMap.has_key(firstLine.itemId):
68
                                discount1 = discountsMap[firstLine.itemId]
69
                            else:
70
                                discount1 = Discount()
71
                                discount1.cart_id = cart.id
72
                                discount1.item_id = firstLine.itemId
73
                                discount1.quantity = firstLine.quantity
74
                                discount1.discount = 0 
75
                                discounts.append(discount1)
76
                            discount1.discount += round(200/discount1.quantity, 0)
77
                            cart.discountedPrice -= round(200/discount1.quantity, 0)*discount1.quantity
78
            else:
12790 amit.gupta 79
                counter = privateDealUser.counter
80
                if cart.totalPrice >= 1999 and counter is not None and datetime.datetime.now() - counter.createdOn < datetime.timedelta(30) and counter.lastPurchasedOn is None:
81
                    firstLine = cart.lines[0]
82
                    discount1 = Discount()
83
                    discount1.cart_id = cart.id
84
                    discount1.item_id = firstLine.itemId
85
                    discount1.quantity = firstLine.quantity
86
                    discount1.discount = 0
87
                    discount1.discount += round(200/discount1.quantity, 0)
88
                    discounts.append(discount1)
89
                    cart.discountedPrice = cart.totalPrice - discount1.discount*discount1.quantity
12739 amit.gupta 90
                else:
91
                    raise PromotionException(115, 'None of the products have valid Private Deal')
11653 amit.gupta 92
 
93
            return cart, discounts
11663 amit.gupta 94
    else:
95
        raise PromotionException(115, 'Invalid Coupon code')
96