Produtos
Sugestão de scripts para uso na coluna Estoques
PROD.CAD_PRODUTOS.FAQ-143475
Este artigo apresenta algumas opções de script que podem ser utilizados na coluna "Estoques" da interface PROD.CAD_PRODUTOS.
Padrão
Padrão com conjuntos
Neste script, conjuntos são apresentados com a capacidade de entrega baseado nas quantidades de estoque disponível (físico menos reservas). Esta quantidade é apresentada como se fosse um tipo de estoque chamado "Disponível" no estabelecimento ativo do usuário.
item texto text_html;
set table off;
set heading off;
select '<span style="white-space:nowrap; '
|| case when estabelecimento_id = ${session.ESTABELECIMENTO_ID} then '' else 'color:#aaa;' end
|| '">'
|| tipo_estoque || '-' || estabelecimento || ': <span style="'
|| case when disponivel > 0 then '' else 'color:red; font-weight:bold;' end
|| '">'
|| disponivel
|| '</span></span>' as texto
from (
select *
, fisico - coalesce(reservado, 0) as disponivel
from (
select te.tipo_estoque
, e.nome_estabelecimento as estabelecimento
, coalesce(estoque_atual,0) as fisico
, (select sum(quantidade)
from v_reservas_produtos rp
where rp.produto_id = ep.produto_id
and rp.tipo_estoque_id = ep.tipo_estoque_id
and rp.estabelecimento_id = ep.estabelecimento_id) as reservado
, e.id as estabelecimento_id
from estoques_produtos ep
join tipos_estoques te on te.id = ep.tipo_estoque_id
join estabelecimentos e on e.id = ep.estabelecimento_id
where ep.produto_id = ${id}
and ep.estabelecimento_id = ${session.ESTABELECIMENTO_ID}
) q
union all
select 'Disponível' as tipo_estoque
, estabelecimento
, null as fisico
, null as reservado
, estabelecimento_id
, floor(min((fisico-coalesce(reservado,0))/quantidade_por_jogo)) as disponivel
from (
select p.produto
, p.id as produto_id
, c.quantidade as quantidade_por_jogo
, estoque_atual as fisico
, e.nome_estabelecimento as estabelecimento
, te.tipo_estoque
, e.id as estabelecimento_id
, (select sum(quantidade)
from v_reservas_produtos rp
where rp.produto_id = ep.produto_id
and rp.tipo_estoque_id = ep.tipo_estoque_id
and rp.estabelecimento_id = ep.estabelecimento_id) as reservado
from componentes_produtos c
join produtos p on p.id = c.componente_produto_id
join estoques_produtos ep on ep.produto_id = c.componente_produto_id
join tipos_estoques te on te.id = ep.tipo_estoque_id
join estabelecimentos e on e.id = ep.estabelecimento_id
where c.produto_id = ${id}
and te.SOMA_NO_ESTOQUE_VENDA = 'S'
and ep.estabelecimento_id = ${session.ESTABELECIMENTO_ID}
) q
group by estabelecimento, estabelecimento_id
) q