Created
May 18, 2021 18:21
-
-
Save CoutinhoElias/c4b86d06b7b6ca6137aca65dc63398d6 to your computer and use it in GitHub Desktop.
usando peewee com join
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# MEUS MODELOS | |
from peewee import CompositeKey ,SqliteDatabase, Model, CharField, TextField, ForeignKeyField, FloatField | |
import os | |
app_path = os.path.dirname(os.path.abspath(__file__)) | |
db = SqliteDatabase(os.path.join(app_path, 'contagem.db')) | |
#db = SqliteDatabase('contagem.db') | |
class BaseModel(Model): | |
class Meta: | |
database = db | |
class Produto(BaseModel): | |
cdchamada = CharField(null=True, unique=True) | |
dsdescricaoecommerce = TextField(null=True) | |
dsobservacao = TextField(null=True) | |
idproduto = CharField(primary_key=True, null=False) | |
nmproduto = CharField(index=True, null=True) | |
stativo = CharField(null=True) | |
class Meta: | |
table_name = 'produto' | |
#CompositeKey('dscodigo', 'tpcodigo') | |
class Codigos(BaseModel): | |
dscodigo = CharField() | |
iddetalhe = CharField(null=True) | |
#idproduto = CharField() | |
idproduto = ForeignKeyField(Produto.idproduto, backref='codigos') | |
tpcodigo = CharField() | |
class Meta: | |
table_name = 'codigos' | |
class Contagem(BaseModel): | |
idproduto = ForeignKeyField(Codigos.idproduto, backref='contagem') | |
quantidade = FloatField(null=False) | |
class Meta: | |
table_name = 'contagem' | |
db.create_tables([Codigos, Produto, Contagem]) | |
# FUNÇÃO SALVAR, VEJA O PROBLEMA NA LINHA 68 | |
def salvar(self): | |
self.ids.codigo_digitado.text = self.ids.codigo_digitado.text.strip().zfill(6) | |
# Pesquisa pelo produto digitado no campo. | |
cadastro_produto = Produto.select(). \ | |
join(Codigos, on=(Codigos.idproduto_id == Produto.idproduto)). \ | |
where(Codigos.dscodigo == self.ids.codigo_digitado.text) | |
try: | |
consulta_update = cadastro_produto.get() | |
contagem_anterior = Contagem.select().where(Contagem.idproduto == consulta_update.idproduto).get() | |
if contagem_anterior: | |
print(consulta_update.cdchamada, 'UPDATE') | |
contagem_atual = Contagem.update(quantidade = contagem_anterior.quantidade + 1) \ | |
.where(Contagem.idproduto == consulta_update.idproduto) | |
# Atualize a quantidade. | |
contagem_atual.execute() | |
except: | |
try: | |
consulta_insert = cadastro_produto.get() | |
if consulta_insert: | |
print('O produto {} não estava na CONTAGEM! Será adicionado'.format(consulta_insert.cdchamada)) | |
Contagem.create( | |
idproduto = consulta_insert.idproduto, | |
quantidade = 1 | |
) | |
print('O produto {} não estava na LISTAGEM! Será exibido'.format(consulta_insert.cdchamada)) | |
produto_contado = Codigos.select(). \ | |
join(Contagem, on=(Contagem.idproduto == Produto.idproduto)). \ | |
where(Codigos.dscodigo == self.ids.codigo_digitado.text) | |
print(produto_contado) | |
add_lista = produto_contado.get() | |
items = SwipeToDeleteItem(text=str(add_lista.dscodigo) +' * '+ str(add_lista.quantidade)+' * '+ str(add_lista.tpcodigo)) | |
self.ids.produtos_da_contagem.add_widget(items) | |
except: | |
print('Produto não encontrado! ---') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment