def decreaseStockFromOrder(registry, order): if not hasattr(order, 'stock_decreased'): order.stock_decreased = PersistentDict() uid_catalog = getToolByName(registry.context, 'uid_catalog') for product in order.products: stock = IStock(uid_catalog(UID=product[0])[0].getObject()) if len(product[5]): # we have variations variations = [v[0] for v in product[5]] stock.setVariationStock(stock.variationStock(variations)-int(product[3])+order.stock_decreased.get(product[0], 0), variations) else: stock.setStock(stock.stock()-int(product[3])+order.stock_decreased.get(product[0], 0)) order.stock_decreased[product[0]] = int(product[3])
def store(self): provider = IStock(self.context) stockable = self.stockable() for item in stockable: try: value = int(self.request.form.get(item['key'], 0)) if not item.has_key('objs'): provider.setStock(value) else: provider.setVariationStock(value, item['objs']) except: self.errors[item['key']] = _(u'There was an error when saving this stock entry') return len(self.errors) == 0