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