Untitled

 avatar
unknown
python
2 years ago
2.1 kB
2
Indexable
def next_two_weeks_shopping_list(bakery):
    
    ingredients_for_two_weeks = {ingredient['name']: 0 for ingredient in bakery['wholesalePrices']}
    inventory = {ingredient['name']: get_numbers(ingredient['amount']) * UNITS[ingredient["amount"][-2:]] for ingredient in bakery['inventory']}
    
    for sale in bakery['salesOfLastWeek']:
      for ingredient in INGREDIENTS[sale['name']]: 
        ingredients_for_two_weeks[ingredient['name']] += get_numbers(ingredient['amount']) * sale['amount'] * 2

    ingredients_for_two_weeks_without_inventory = {ingredient['name']: (ingredients_for_two_weeks[ingredient['name']] - inventory[ingredient['name']]) for ingredient in bakery['wholesalePrices']}

    for ingredient in bakery['wholesalePrices']:
      ingredients_for_two_weeks_without_inventory[ingredient['name']] = ingredients_for_two_weeks_without_inventory[ingredient['name']] * 1.1
      ingredients_for_two_weeks_without_inventory[ingredient['name']] = math.ceil(ingredients_for_two_weeks_without_inventory[ingredient['name']] / UNITS[ingredient["amount"][-2:]])
      while not ingredients_for_two_weeks_without_inventory[ingredient['name']] % get_numbers(ingredient['amount']) == 0:
        ingredients_for_two_weeks_without_inventory[ingredient['name']] += 1
        
      
    prices_for_two_weeks = {ingredient['name']: int(ingredients_for_two_weeks_without_inventory[ingredient['name']] / get_numbers(ingredient['amount'])) * ingredient['price'] for ingredient in bakery['wholesalePrices']}
  
    package_units = {" l": " l", "kg": " kg", "pc": " pc"}
    ingredients_with_units = {ingredient['name']: str(ingredients_for_two_weeks_without_inventory[ingredient['name']]) + package_units[ingredient['amount'][-2:]] for ingredient in bakery['wholesalePrices']}
      
    shopping_list = [{"name": ingredient, "amount": ingredients_with_units[ingredient], "totalPrice": prices_for_two_weeks[ingredient]} for ingredient in ingredients_for_two_weeks if prices_for_two_weeks[ingredient] > 0]

    return json.dumps(sorted(shopping_list, key= lambda x: x['totalPrice'], reverse=True), indent= 2)
Editor is loading...