Skip to content

Instantly share code, notes, and snippets.

@CoutinhoElias
Last active June 17, 2022 21:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CoutinhoElias/db72cf4c5d2ad37bb486a66822a3f8c8 to your computer and use it in GitHub Desktop.
Save CoutinhoElias/db72cf4c5d2ad37bb486a66822a3f8c8 to your computer and use it in GitHub Desktop.
Only my code
from kivymd.uix.button import MDFillRoundFlatButton, MDRaisedButton
from kivymd.font_definitions import theme_font_styles
from kivymd.uix.label import MDLabel
import json
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd import images_path
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelOneLine
from kivy.uix.screenmanager import Screen
from kivymd.uix.list import (
ImageLeftWidget,
ThreeLineIconListItem,
OneLineListItem,
)
# Imports para trabalhar com Firebase
from config import config
import pyrebase
import requests
from datetime import date
from datetime import datetime
today = date.today()
today_now = datetime.now()
Builder.load_string("""
<Content>
adaptive_height: True
orientation: 'vertical'
# TwoLineIconListItem:
# text: "(050)-123-45-67"
# secondary_text: "Mobile"
#
# IconLeftWidget:
# icon: 'phone'
<TelaFechamento>:
name: 'tela_fechamento'
ScrollView:
pos_hint: {"top": .89}
MDGridLayout:
id: box
cols: 1
adaptive_height: True
""")
class InvoicePanel(MDExpansionPanel):
pass
class Content(MDBoxLayout):
'''Custom content.'''
# Classe criada para permitir alinhamento
class OneLineListItemAligned(OneLineListItem):
def __init__(self, halign, **kwargs):
super(OneLineListItemAligned, self).__init__(**kwargs)
self.ids._lbl_primary.halign = halign
from kivy.utils import get_color_from_hex
from kivymd.color_definitions import colors
class TelaFechamento(Screen):
def fechar_pedido(self):
# Inicializando o banco de dados.
firebase = pyrebase.initialize_app(config)
db = firebase.database()
app = MDApp.get_running_app()
user_profiles = db.child('UserProfile').child(str(app.logged_user)).get(
token=app.USER_MASTER)
idpedido = {}
# Preenchendo os dados das listas
for produto in user_profiles.each():
if 'Cart' in produto.key():
items = produto.val().get('Cart')
for k, v in items['Opened'].items():
idpedido[k] = v
chave = datetime.now().strftime("%Y%m%d%H%M%S%f")
#print(json.dumps(id_pedido, indent=4))
# ********************************************************************************************************************************
# Criar pedidos importados no WShop
db.child('UserProfile').child(str(app.logged_user)).child(produto.key()).child('Confirmed').child(
chave).set(idpedido, token=app.USER_MASTER)
# Aqui abaixo devo criar o código para excluir de Cart
# Code here, Code here, Code here, .....
def pedidos_abertos(self):
# Inicializando o banco de dados.
firebase = pyrebase.initialize_app(config)
db = firebase.database()
app = MDApp.get_running_app()
json_data = db.child('UserProfile').child(str(app.logged_user)).get(
token=app.USER_MASTER)
for produtos in json_data.each():
#print(json.dumps(produtos.key(), indent=4))
if produtos.key() == 'Cart':
cart = produtos
try:
openeds = cart.val()['Opened']
#print(json.dumps(openeds, indent=4), '...............')
# adicionar fatura como item principal
cw = Content() # preencha o conteúdo à medida que os dados são analisados
ep = InvoicePanel(icon="./images/pedidos/shopping-cart.png", panel_cls=MDExpansionPanelOneLine(text=f'Produtos no carrinho:'),
content=cw)
self.ids.box.add_widget(ep)
# -----------------------------------------------------
# Cria o Widget Especificamente para fechar o pedido.
##close_items = MDRaisedButton(
## text="[color=ffffff]FATURAR ESTES ITENS[/color]", size_hint=(.9, .9))
##cw.add_widget(close_items)
close_items = OneLineListItemAligned(
text='Fechar este pedido agora?',
md_bg_color=app.theme_cls.primary_dark,
halign="center", font_style="H6", on_press=self.fechar_pedido)
#close_items.bind(on_release=print("----------Click!"))
cw.add_widget(close_items)
# -----------------------------------------------------
for key_item, value_item in openeds.items():
#print(json.dumps(key_item, indent=4), '************* key_item')
# Cria a imagem que será usada no TwoLineIconListItem.
image = ImageLeftWidget(
source=value_item['url']
)
# Cria o Widget conforme sua escolha.
items = ThreeLineIconListItem(text=value_item['product_code'],
secondary_text=value_item['product_description'],
tertiary_text='{} x R${} = R${}'.format(value_item['quantidade'], value_item['price'], value_item['total_item']), md_bg_color=get_color_from_hex('#FFFDE7'))
# Adiciona a imagem ao Widget acima.
items.add_widget(image)
cw.add_widget(items)
except:
print('Ainda não possui pedidos!')
def pedidos_faturados(self):
# Inicializando o banco de dados.
firebase = pyrebase.initialize_app(config)
db = firebase.database()
app = MDApp.get_running_app()
json_data = db.child('UserProfile').child(str(app.logged_user)).get(
token=app.USER_MASTER)
for produtos in json_data.each():
#print(json.dumps(produtos.key(), indent=4))
if produtos.key() == 'Cart':
cart = produtos
try:
invoices = cart.val()['Invoice']
for key_invoice, value_invoice in invoices.items():
#print(json.dumps(value_invoice, indent=4))
# adicionar fatura como item principal
cw = Content() # preencha o conteúdo à medida que os dados são analisados
ep = InvoicePanel(icon='./images/pedidos/invoice.png', panel_cls=MDExpansionPanelOneLine(text=f'Confirmado: {key_invoice}'),
content=cw)
self.ids.box.add_widget(ep)
for key_item, value_item in value_invoice.items():
#print(json.dumps(key_item, indent=4))
# Cria a imagem que será usada no TwoLineIconListItem.
image = ImageLeftWidget(
source=value_item['url']
)
# Cria o Widget conforme sua escolha.
items = ThreeLineIconListItem(text=value_item['product_code'],
secondary_text=value_item['product_description'],
tertiary_text='{} x R${} = R${}'.format(value_item['quantidade'], value_item['price'], value_item['total_item']))
# Adiciona a imagem ao Widget acima.
items.add_widget(image)
cw.add_widget(items)
except:
print('Ainda não possui pedidos!')
def on_enter(self):
self.pedidos_abertos()
self.pedidos_faturados()
def on_kv_post(self, base_widget):
app = MDApp.get_running_app()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment