diff --git a/brewman/views/recipe.py b/brewman/views/recipe.py index c914f3c1..b4c55a27 100644 --- a/brewman/views/recipe.py +++ b/brewman/views/recipe.py @@ -85,7 +85,7 @@ def save(request): menu_item = MenuItem(0, name, units=units, is_semi=is_semi, fraction=fraction, fraction_units=fraction_units, product_group_id=product_group_id, ledger_id=Ledger.all_purchases(), - price=recipe_cost, is_active=True).create() + price=round(recipe_cost / recipe_quantity, 2), is_active=True).create() recipe = Recipe(date=date, product_id=menu_item.id, quantity=recipe_quantity, sale_price=sale_price, notes='') recipe.product = menu_item @@ -150,7 +150,7 @@ def update(request): rate = ingredient_price / (product.fraction * product.product_yield) recipe_cost += rate * quantity recipe_items.append(RecipeItem(None, product.id, quantity, ingredient_price)) - recipe.product.price = recipe_cost + recipe.product.price = round(recipe_cost / recipe.quantity, 2) for i in range(len(recipe.recipe_items), 0, -1): recipe_item = recipe.recipe_items.pop() DBSession.delete(recipe_item) @@ -167,6 +167,12 @@ def update(request): raise ValidationError("Sale Price must be a decimal >= 0") except (ValueError, InvalidOperation): raise ValidationError("Sale Price must be a decimal >= 0") + try: + recipe_quantity = Decimal(json.get('Quantity', 0)) + if recipe_quantity < 0: + raise ValidationError("Quantity must be a decimal >= 0") + except (ValueError, InvalidOperation): + raise ValidationError("Quantity must be a decimal >= 0") recipe_items = [] for item in json['RecipeItems']: product = ProductBase.by_id(uuid.UUID(item['Product']['ProductID'])) @@ -177,15 +183,14 @@ def update(request): recipe_items.append(RecipeItem(None, product.id, quantity, ingredient_price)) menu_item = recipe.product - print(menu_item.id) - recipe = Recipe(date=date, product_id=menu_item.id, quantity=1, sale_price=sale_price, notes='') + recipe = Recipe(date=date, product_id=menu_item.id, quantity=recipe_quantity, sale_price=sale_price, notes='') recipe.product = menu_item + menu_item.price = round(recipe_cost / recipe_quantity, 2) DBSession.add(recipe) for item in recipe_items: item.recipe_id = recipe.id recipe.recipe_items.append(item) DBSession.add(item) - print('One') transaction.commit() return recipe_info(recipe.id)