Query para exibir itens e subitens

6 views
Skip to first unread message

Rodrigo attique santana

unread,
Mar 15, 2018, 3:33:23 PM3/15/18
to web2py-users-brazil
Galera estou com um problema de modelagem.
Tenho a seguinte estrutura

db.define_table(
'itens'
,'nome'
,'foto', 'upload'
)

db.define_table(
'acessorios'
,'nome'
,'foto', 'upload'
,'aplicacao', 'reference aplicacoes' # canto, mesa, sala etc... Referente a uma aplicação padrão
)

db.define_table(
'acessorios_itens'
,'acessorio_id', 'reference acessorios'
,'item_id', 'reference itens'
,'aplicacao', 'reference aplicacoes' # canto, mesa, sala etc... o usuário ainda poderá mudar a aplicação do acessório no item
,'grupo', # por exemplo: aplicação do acc no item é sala, ele ainda pode colocar sala1
)

db.define_table(
'vendas'
,'data','date'
,'....'
)

db.define_table(
'itens_venda'
,'item_id','reference itens'
,'venda_id','reference vendas'
,'grupos', 'list:string' # Adiciona aqui os grupos de acessórios que devem ser carregados
,'aplicacoes','list:string' # Adiciona os subgrupos
)

# Query para carregar isso

itens_venda = db.itens_vendas(request.args(0))

# Precisa carregar todos os acessorios que possuem aplicação cadastrada em itens_venda
# e depois filtrar pelos grupos definidos manualmente pelo usuário
# Exemplo:
#itens_venda.aplicacoes = ['calço','roleta','dobradiça']
#itens_venda.grupos = ['calco1','calco2']

query = (
(db.acessorios_item.venda_id==itens_venda.venda_id)
& (db.acessorios_item.aplicacoes.contains(itens_venda.aplicacoes))
& (db.acessorios_item.grupos.contains(itens_venda.grupos))
)

acessorios = db(query).select()

Explicando: Um item possui vários acessórios. Cada acessório de um item (acessórios_itens) possui uma aplicação diferente no item, logo eu posso repetir o acessório X n vezes no acessório W utilizando diferentes aplicações.

Ao realizar uma venda irei adicionar um item a ela, ao fazer isto todos os acessórios do item serão carregados.
Nos itens da venda eu posso filtrar os acessórios que quero pela adicionando sua aplicação em aplicacoes (tabela itens_venda) e seus subgrupos em grupos (tabela itens_venda). 

Porém como faço a query para carregar estes itens?
Pois veja eu tenho que carregar todos os grupos e carregar os subgrupos.



Reply all
Reply to author
Forward
0 new messages