Rev 3559 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 01-Oct-2011@author: Varun GuptaMax uses: 100BB Playbook 16GB 1090 offBB Playbook 64GB 1690 offHTC P510e Flyer 500 offMotorola Xoom WiFi 3G 1700 offSamsung P7500 Galaxy Tab 2501 offSpice Mi-720 Tab 1000 off'''from shop2020.thriftpy.model.v1.user.ttypes import PromotionExceptionfrom shop2020.model.v1.user.impl.PromotionRuleDataUtilities import get_coupon_usage_count, get_coupon_usage_count_by_userfrom shop2020.clients.CatalogClient import CatalogClientdef execute(cart, coupon_code, args):#Allow only first 100 users to use the couponcount_coupon_usage = get_coupon_usage_count(coupon_code)if count_coupon_usage >= 100:raise PromotionException(112, 'This promotion is over.')if cart.lines:total_selling_price = 0total_discounted_price = 0has_qualified_model = Falsefor line in cart.lines:line.discountedPrice = line.actualPriceif line.itemId == 1543: #Playbook 16GBhas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 1090elif line.itemId == 1550: #Playbook 64GBhas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 1690elif line.itemId == 1551: #HTC Flyer P510ehas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 500elif line.itemId == 1552: #Motorola Xoom WiFi 3Ghas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 1700elif line.itemId == 2005: #Samsung P7500 Galaxy Tabhas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 2501elif line.itemId == 2022: #Spice Mi-720 Tabhas_qualified_model = Trueif line.actualPrice:line.discountedPrice = line.actualPrice - 1000total_selling_price += line.actualPrice * line.quantitytotal_discounted_price += line.discountedPrice + (line.actualPrice * (line.quantity - 1))if has_qualified_model is False:raise PromotionException(115, 'This coupon is applicable only for selective tablets.')cart.totalPrice = total_selling_pricecart.discountedPrice = total_discounted_pricereturn cart