João Pedro Neiva
2 years ago
committed by
joaopedroneiva
commit
848f71c9d7
9 changed files with 160 additions and 0 deletions
@ -0,0 +1,20 @@ |
|||||||
|
items: |
||||||
|
- name: "Pão Parmesão" |
||||||
|
cod: 1003 |
||||||
|
description: "Pão feito de parmesão" |
||||||
|
price_wpp: 18 |
||||||
|
price_ifood: 20 |
||||||
|
is_a_combo: false |
||||||
|
- name: "Pão Integral" |
||||||
|
cod: 1002 |
||||||
|
description: "Pão feito de de farinha integral" |
||||||
|
price_wpp: 19 |
||||||
|
price_ifood: 21 |
||||||
|
is_a_combo: false |
||||||
|
- name: "2 Pães 15% off" |
||||||
|
cod: 1032 |
||||||
|
description: "2 Paes" |
||||||
|
price_wpp: 19 |
||||||
|
price_ifood: 21 |
||||||
|
is_a_combo: true |
||||||
|
sub-items: [1003, 1002] |
@ -0,0 +1,2 @@ |
|||||||
|
#!/bin/zsh |
||||||
|
/Users/joaopedroneiva/PycharmProjects/registro-agil-pedidos/venv/bin/python /Users/joaopedroneiva/PycharmProjects/registro-agil-pedidos/src/__main__.py |
@ -0,0 +1,85 @@ |
|||||||
|
import os |
||||||
|
from src.order import Order |
||||||
|
|
||||||
|
|
||||||
|
main_menu_options = """ |
||||||
|
Choose an option: |
||||||
|
1 - Add item |
||||||
|
2 - Print Summary/PDV |
||||||
|
3 - Parse Ifood into PDVS |
||||||
|
4 - Remove Last item |
||||||
|
5 - Clear Order |
||||||
|
6 - Exit |
||||||
|
""" |
||||||
|
|
||||||
|
|
||||||
|
def add_item(): |
||||||
|
print('Add item') |
||||||
|
options = Order.list_options() |
||||||
|
for i, x in enumerate(options): |
||||||
|
print(f'{i+1} - {x}') |
||||||
|
print('x - return to main menu') |
||||||
|
print_summary() |
||||||
|
print('\n:') |
||||||
|
chosen_item = input() |
||||||
|
|
||||||
|
if chosen_item == 'x': |
||||||
|
return |
||||||
|
try: |
||||||
|
chosen_item = int(chosen_item) - 1 |
||||||
|
except ValueError: |
||||||
|
print(f'Invalid option {chosen_item}') |
||||||
|
if not chosen_item < len(options): |
||||||
|
print('Invalid Item') |
||||||
|
else: |
||||||
|
Order.add_item(options[chosen_item]) |
||||||
|
|
||||||
|
os.system('clear') |
||||||
|
add_item() |
||||||
|
|
||||||
|
|
||||||
|
def print_summary(): |
||||||
|
print('Summary:') |
||||||
|
print(Order.get_string()) |
||||||
|
|
||||||
|
|
||||||
|
def parse_ifood_string(): |
||||||
|
print('parse_ifood_string') |
||||||
|
|
||||||
|
|
||||||
|
def remove_latest_item(): |
||||||
|
Order.remove_latest_item() |
||||||
|
|
||||||
|
|
||||||
|
def clear_all_items(): |
||||||
|
Order.clear_all_items() |
||||||
|
|
||||||
|
|
||||||
|
def menu(): |
||||||
|
while True: |
||||||
|
print(main_menu_options) |
||||||
|
chosen_option = input() |
||||||
|
|
||||||
|
os.system('clear') |
||||||
|
|
||||||
|
if chosen_option == '1': |
||||||
|
add_item() |
||||||
|
elif chosen_option == '2': |
||||||
|
print_summary() |
||||||
|
elif chosen_option == '3': |
||||||
|
parse_ifood_string() |
||||||
|
elif chosen_option == '4': |
||||||
|
remove_latest_item() |
||||||
|
elif chosen_option == '5': |
||||||
|
clear_all_items() |
||||||
|
elif chosen_option == '6': |
||||||
|
return |
||||||
|
else: |
||||||
|
print('Choose a valid option.') |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
os.system('clear') |
||||||
|
|
||||||
|
Order.load_menu() |
||||||
|
menu() |
Binary file not shown.
@ -0,0 +1,39 @@ |
|||||||
|
import yaml |
||||||
|
|
||||||
|
|
||||||
|
class Order: |
||||||
|
items = list() |
||||||
|
menu = dict() |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def load_menu(): |
||||||
|
with open("../data/menu.yml", "r") as stream: |
||||||
|
Order.menu = yaml.safe_load(stream)['items'] |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def list_options(): |
||||||
|
return [option['name']for option in Order.menu] |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def add_item(item_name): |
||||||
|
Order.items.append(item_name) |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def get_string(): |
||||||
|
menu_as_dict = {x['name']: x for x in Order.menu} |
||||||
|
__items = list(map(lambda x: menu_as_dict[x], Order.items)) |
||||||
|
|
||||||
|
output = [f"**{x['name']}**\n{x['description']}" for x in __items] |
||||||
|
|
||||||
|
output = '\n'.join(output) |
||||||
|
|
||||||
|
return output |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def remove_latest_item(): |
||||||
|
Order.items = Order.items[:-1] |
||||||
|
|
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def clear_all_items(): |
||||||
|
Order.items = list() |
@ -0,0 +1,11 @@ |
|||||||
|
Item Qtde Valor unit. Incentivo Subtotal |
||||||
|
Pão Parmesão artesanal 450g 15 fatias congeladas Pao Paes Pães 1 R$ 26,99 R$ 0,00 R$ 26,99 |
||||||
|
Pão Multigrãos semi-integral artesanal 450g 15 fatias congeladas Pao Paes Pães 1 R$ 26,99 R$ 0,00 R$ 26,99 |
||||||
|
Pão fermentação natural + manteiga grátis saborizada alecrim 20g 1 R$ 22,99 R$ 0,00 R$ 26,99 |
||||||
|
Pão Multigrãos semi-integral artesanal 450g 15 fatias congeladas Pao Paes Pães 1 R$ 4,00 R$ 4,00 |
||||||
|
Manteiga saborizada com alecrim 20g 1 R$ 0,00 R$ 0,00 |
||||||
|
3 itens | Subtotal: R$ 80,97 |
||||||
|
Taxa de entrega: |
||||||
|
Tempo de entrega: 33 minutos |
||||||
|
R$ 12,99 |
||||||
|
Total do pedido R$ 93,96 |
Loading…
Reference in new issue