Untitled
unknown
python
3 years ago
2.1 kB
5
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...