Subversion Repositories SmartDukaan

Rev

Rev 11863 | Rev 11869 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 06-Dec-2011

@author: varungupta
'''

from shop2020.clients.CatalogClient import CatalogClient
from shop2020.clients.UserClient import UserClient
from shop2020.model.v1.user.impl.Dataservice import PrivateDealUser
from shop2020.thriftpy.model.v1.user.ttypes import PromotionException, Discount


def execute(cart, coupon_code, args):
    user_client = UserClient().get_client()
    user = user_client.getUserByCartId(cart.id)
    if user.isAnonymous:
        raise PromotionException(115, 'Please try logging in')
        
    #email = user.email.lower().strip()
    privateDealUser = PrivateDealUser.get_by(id=user.userId)
    print "privateDealUser.isActive" + `privateDealUser.isActive`
    if privateDealUser is not None and privateDealUser.isActive:
        if cart.lines is not None:
            discounts = []
            itemIds = []
            [itemIds.append(line.itemId) for line in cart.lines]
            catalog_client = CatalogClient().get_client()
            privateDeals= catalog_client.getAllActivePrivateDeals(itemIds,0)
            if(len(privateDeals) == 0):
                raise PromotionException(115, 'None of the products have valid Private Deal')
            dealItems = privateDeals.keys()
            total_discounts = 0
            for line in cart.lines:
                if line.itemId in dealItems:
                    discountAmount = line.actualPrice - privateDeals[line.itemId].dealPrice
                    if discountAmount > 0:
                        discount = Discount()
                        discount.cart_id = cart.id
                        discount.item_id = line.itemId
                        discount.quantity = line.quantity
                        discount.discount = discountAmount 
                        discounts.append(discount)
                        total_discounts = total_discounts + discountAmount*line.quantity
                    if privateDeals[line.itemId].dealTextOption==0:
                        line.dealText = ''
                        cart.message = 'Deal text has changed'
                    if privateDeals[line.itemId].dealTextOption==2:
                        line.dealText =  privateDeals[line.itemId].dealText
                        cart.message = 'Deal text has changed'
                        
                    if privateDeals[line.itemId].dealFreebieOption==0:
                        line.freebieId = 0
                    if privateDeals[line.itemId].dealFreebieOption==2:
                        line.freebieId =  privateDeals[line.itemId].dealFreebieItemId
                        
                         
            cart.discountedPrice = cart.totalPrice - round(total_discounts, 0)
            return cart, discounts
    else:
        raise PromotionException(115, 'Invalid Coupon code')