def _add_item(self, skuCode=None, quantity=1, var1choice=None, var2choice=None): """ Add item to cart """ context = aq_inner(self.context) varConf = IVariationConfig(self.context) # get current items in cart session = self.request.SESSION cart_items = session.get(CART_KEY, {}) variation_code = varConf.variation_code(var1choice, var2choice) # We got no skuCode, so look it up by variation key if not skuCode: skuCode = varConf.sku_code(var1choice, var2choice) item_key = varConf.key(var1choice, var2choice) item = cart_items.get(item_key, None) item_title = context.Title() quantity = int(quantity) vat_rate = Decimal(context.getField('vat').get(context)) supplier_name, supplier_email = self._get_supplier_info(context) has_variations = varConf.hasVariations() if has_variations: variation_dict = varConf.getVariationDict() if not variation_dict[variation_code]['active']: # Item is disabled return False variation_pretty_name = varConf.getPrettyName(variation_code) item_title = '%s - %s' % (context.Title(), variation_pretty_name) price = Decimal(variation_dict[variation_code]['price']) # add item to cart if item is None: item = {'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': str(price * quantity), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'variation_code': variation_code, 'vat_rate': vat_rate, 'vat_amount': str(calc_vat(vat_rate, price)) } # item already in cart, update quantity else: item['quantity'] = item.get('quantity', 0) + quantity item['total'] = str(item['quantity'] * price) item['vat_amount'] = str(calc_vat(vat_rate, price, quantity)) else: price = Decimal(context.Schema().getField('price').get(context)) # add item to cart if item is None: item = {'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': str(price * quantity), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'vat_rate': vat_rate, 'vat_amount': str(calc_vat(vat_rate, price)) } # item already in cart, update quantitiy else: item['quantity'] = item.get('quantity', 0) + quantity item['total'] = str(item['quantity'] * price) item['vat_amount'] = str(calc_vat(vat_rate, price, quantity)) # store cart in session cart_items[item_key] = item session[CART_KEY] = cart_items return True
def _add_item(self, skuCode=None, quantity=1, var1choice=None, var2choice=None): """ Add item to cart """ context = aq_inner(self.context) varConf = IVariationConfig(self.context) # get current items in cart session = self.request.SESSION cart_items = session.get(CART_KEY, {}) variation_code = varConf.variation_code(var1choice, var2choice) # We got no skuCode, so look it up by variation key if not skuCode: skuCode = varConf.sku_code(var1choice, var2choice) item_key = varConf.key(var1choice, var2choice) item = cart_items.get(item_key, None) item_title = context.Title() quantity = int(quantity) vat_rate = Decimal(context.getField('vat').get(context)) supplier_name, supplier_email = self._get_supplier_info(context) has_variations = varConf.hasVariations() if has_variations: variation_dict = varConf.getVariationDict() if not variation_dict[variation_code]['active']: # Item is disabled return False variation_pretty_name = varConf.getPrettyName(variation_code) item_title = '%s - %s' % (context.Title(), variation_pretty_name) price = Decimal(variation_dict[variation_code]['price']) # add item to cart if item is None: item = { 'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': str(price * quantity), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'variation_code': variation_code, 'vat_rate': vat_rate, 'vat_amount': str(calc_vat(vat_rate, price)) } # item already in cart, update quantity else: item['quantity'] = item.get('quantity', 0) + quantity item['total'] = str(item['quantity'] * price) item['vat_amount'] = str(calc_vat(vat_rate, price, quantity)) else: price = Decimal(context.Schema().getField('price').get(context)) # add item to cart if item is None: item = { 'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': str(price * quantity), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'vat_rate': vat_rate, 'vat_amount': str(calc_vat(vat_rate, price)) } # item already in cart, update quantitiy else: item['quantity'] = item.get('quantity', 0) + quantity item['total'] = str(item['quantity'] * price) item['vat_amount'] = str(calc_vat(vat_rate, price, quantity)) # store cart in session cart_items[item_key] = item session[CART_KEY] = cart_items return True
def _add_item(self, skuCode=None, quantity=1, var1choice=None, var2choice=None, dimensions=None): """ Add item to cart """ context = aq_inner(self.context) varConf = IVariationConfig(self.context) # get current items in cart session = self.request.SESSION cart_items = session.get(CART_KEY, OrderedDict()) variation_code = varConf.variation_code(var1choice, var2choice) # We got no skuCode, so look it up by variation key if not skuCode: skuCode = varConf.sku_code(var1choice, var2choice) item_key = self.get_item_key(self.context.UID(), variation_code, dimensions) item = cart_items.get(item_key, None) item_title = context.Title() quantity = int(quantity) vat_rate = Decimal(context.getField('vat').get(context)) supplier_name, supplier_email = self._get_supplier_info(context) if dimensions is None: dimensions = [] price_modifier = self.context.getPriceModifier() has_variations = varConf.hasVariations() if has_variations: variation_dict = varConf.getVariationDict() if not variation_dict[variation_code]['active']: # Item is disabled return False variation_pretty_name = varConf.getPrettyName(variation_code) item_title = '%s - %s' % (context.Title(), variation_pretty_name) price = Decimal(variation_dict[variation_code]['price']) price_per_item = self.calc_price_per_item(price, dimensions, price_modifier) # add item to cart if item is None: total = self.calc_item_total(price, quantity, dimensions, price_modifier) item = {'uid': self.context.UID(), 'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': '{:.2f}'.format(total), 'price_per_item': '{:.2f}'.format(price_per_item), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'variation_code': variation_code, 'vat_rate': vat_rate, 'vat_amount': str(self.calc_vat(vat_rate, total)), 'dimensions': dimensions, 'selectable_dimensions': context.getSelectableDimensions(), 'price_modifier': price_modifier } # item already in cart, update quantity else: item['quantity'] = item.get('quantity', 0) + quantity total = self.calc_item_total(price, item['quantity'], dimensions, price_modifier) item['dimensions'] = dimensions item['total'] = '{:.2f}'.format(total) item['price_per_item'] = '{:.2f}'.format(price_per_item) item['vat_amount'] = str(self.calc_vat(vat_rate, total)) else: price = Decimal(context.Schema().getField('price').get(context)) price_per_item = self.calc_price_per_item(price, dimensions, price_modifier) # add item to cart if item is None: total = self.calc_item_total(price, quantity, dimensions, price_modifier) item = {'uid': self.context.UID(), 'title': item_title, 'description': context.Description(), 'skucode': skuCode, 'quantity': quantity, 'price': str(price), 'show_price': context.showPrice, 'total': '{:.2f}'.format(total), 'price_per_item': '{:.2f}'.format(price_per_item), 'url': context.absolute_url(), 'supplier_name': supplier_name, 'supplier_email': supplier_email, 'vat_rate': vat_rate, 'vat_amount': str(self.calc_vat(vat_rate, total)), 'dimensions': dimensions, 'selectable_dimensions': context.getSelectableDimensions(), 'price_modifier': price_modifier } # item already in cart, update quantity else: item['quantity'] = item.get('quantity', 0) + quantity total = self.calc_item_total(price, item['quantity'], dimensions, price_modifier) item['dimensions'] = dimensions item['total'] = '{:.2f}'.format(total) item['price_per_item'] = '{:.2f}'.format(price_per_item) item['vat_amount'] = str(self.calc_vat(vat_rate, total)) # store cart in session cart_items[item_key] = item session[CART_KEY] = cart_items return True