Skip to content

Instantly share code, notes, and snippets.

@CoutinhoElias
Created May 18, 2021 18:21
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/c4b86d06b7b6ca6137aca65dc63398d6 to your computer and use it in GitHub Desktop.
Save CoutinhoElias/c4b86d06b7b6ca6137aca65dc63398d6 to your computer and use it in GitHub Desktop.
usando peewee com join
# 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