select distinct forn.pessoa as PESSOA_FORN
, forn.nome_completo as NOME_FORNECEDOR
, nome_estabelecimento as ESTABELECIMENTO
, prod.id as produto_id
, prod.produto
, prod.descricao
, estoque_atual
, ordem_compra
, pedido_venda
, estoque_minimo
, quantidade_repor
, rpp.*
from(
select prod_id
, estabelecimento_id as estab_id
, produto
, descricao_produto
, descricao_detalhada
, marca
, referencia_produto
, tipo_produto
, simbolo
, sum(estoque_atual) as estoque_atual
, sum(oc) as ordem_compra
, sum(pv) as pedido_venda
, sum(minimo) as estoque_minimo
, sum(minimo - (estoque_atual - pv)) as quantidade_repor
, (select sum(ip.quantidade)
from itens_pedidos ip
join pedidos p on p.id = ip.pedido_id
where p.situacao not in ('C')
and ip.produto_id = prod_id
and p.data_conclusao between current_date - interval '30 day'
and current_date) as venda_30
, (select sum(ip.quantidade)
from itens_pedidos ip
join pedidos p on p.id = ip.pedido_id
where p.situacao not in ('C')
and ip.produto_id = prod_id
and p.data_conclusao between current_date - interval '90 day'
and current_date) as venda_90
from (
select ep.id
, ep.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia_produto
, m.marca
, tp.tipo_produto
, um.simbolo
, ep.estoque_atual
, 0 as oc
, 0 as pv
, case when (ep.estoque_minimo < 0) then 0 else ep.estoque_minimo end as minimo
from estoques_produtos ep
join tipos_estoques te on te.id = ep.tipo_estoque_id
join produtos p on (p.id = ep.produto_id)
join unidades_medidas um on (um.id = p.unidade_medida_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tp on tp.id = p.tipo_produto_id
where p.situacao <> 'C'
union
select i.id
, ped.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia
, m.marca
, tprod.tipo_produto
, um.simbolo
, 0 as estoque_atual
, i.quantidade_pendente as oc
, 0 as pv
, 0 as minimo
from itens_pedidos i
join pedidos ped on (ped.id = i.pedido_id)
join tipos_pedidos tp on (tp.id = ped.tipo_pedido_id)
join produtos p on (p.id = i.produto_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tprod on tprod.id = p.tipo_produto_id
join unidades_medidas um on (um.id = p.unidade_medida_id)
where tp.categoria = 'C' and p.situacao in ('M', 'P')
and p.situacao <> 'C'
union
select i.id
, ped.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia
, m.marca
, tprod.tipo_produto
, um.simbolo
, 0 as estoque_atual
, 0 as oc
, case when (i.quantidade_efetiva = null)
then i.quantidade_pendente
else i.quantidade_efetiva end as pv
, 0 as minimo
from itens_pedidos i
join pedidos ped on (ped.id = i.pedido_id)
join tipos_pedidos tp on (tp.id = ped.tipo_pedido_id)
join produtos p on (p.id = i.produto_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tprod on tprod.id = p.tipo_produto_id
join unidades_medidas um on (um.id = p.unidade_medida_id)
where tp.categoria in ('V', 'S')
and ped.situacao in ('M', 'P')
and tprod.servico = 'N'
and p.situacao <> 'C'
) query
group by produto
, descricao_produto
, descricao_detalhada
, referencia_produto
, marca
, tipo_produto
, simbolo
, prod_id
, estabelecimento_id
having sum(coalesce(minimo,0) - (coalesce(estoque_atual,0) - coalesce(pv,0)) ) >= 0
)q
join referencias_produtos_pessoas rpp on rpp.produto_id = q.prod_id
join pessoas forn on forn.id = rpp.empresa_id
join estabelecimentos estab on estab.id = estab_id
join produtos prod on prod.id = rpp.produto_id
order by prod.produto, forn.nome_completo
ORCCOM.PRO_GERAR_ITENS_COMPRA.ADITIONAL_ITEMS: Deverá conter uma relação de nome/dominio/label de colunas adicionais (definidas no CUSTOM_SQL) e que devem ser apresentadas na tela.
marca: ADSRT.TEXT :Marca estoque_atual: ADSRT.DOUBLE : Estoque atual estoque_minimo: ADSRT.DOUBLE :Estoque mínimo quantidade_repor: ADSRT.DOUBLE :Qtd reporORCCOM.PRO_GERAR_ITENS_COMPRA.ATRIBUTOS_ORDEM_COMPRA: Atributos que devem ser preenchidos na capa da ordem de compra durante o processo.
ATRIBUTO=VALORQualquer atributo existente na entidade PEDIDOS pode ser utilizado.
VENDEDOR_ID=12345 REPRESENTANTE_ID=93984 DATA_PROGRAMADA=[SYSDATE+14]
| Código de identificação do produto. Calculado automaticamente ou informado conforme parametrização da respectiva engenharia de produto. | |
| Texto que descreve o produto. Este é o texto utilizado por padrão em todos os documentos fiscais e interfaces de uso interno. | |
| Código (único) de identificação da pessoa (física ou jurídica). | |
| Nome completo da pessoa física ou razão social da pessoa jurídica. Razão social é o nome devidamente registrado sob o qual uma pessoa jurídica se individualiza e exerce suas atividades. A razão social diferencia-se do nome dado a um estabelecimento ou do nome comercial com que a empresa pode ser reconhecida junto ao público, o qual é conhecido como nome fantasia. | |
| Estabelecimento para o qual deverá ser criada a ordem de compra. | |
| Apresenta os campos criados dinamicamente a partir do SQL, que estejam informadas na preferência [ORCCOM.PRO_GERAR_ITENS_COMPRA.ADITIONAL_ITEMS] | |
| Caso informado indica a quantidade de produtos a ser solicitada. | |
| Quando informado indica o preço do produto. | |
| Número de dias para o qual se deseja ter estoque. Quando informado pode ser utilizado na pesquisa pelo SQL customizado. | |
| Link para a ordem de compra |
marca: ADSRT.TEXT :Marca estoque_atual: ADSRT.DOUBLE : Estoque atual estoque_minimo: ADSRT.DOUBLE :Estoque mínimo quantidade_repor: ADSRT.DOUBLE :Qtd repor
Tipo: TEXT_LONG
Atributos que devem ser preenchidos na capa da ordem de compra durante o processo.
Deve ser informado um atributo por linha no formato:
ATRIBUTO=VALORQualquer atributo existente na entidade PEDIDOS pode ser utilizado.
VENDEDOR_ID=12345 REPRESENTANTE_ID=93984 DATA_PROGRAMADA=[SYSDATE+14]
Tipo: TEXT_LONG
select distinct forn.pessoa as PESSOA_FORN
, forn.nome_completo as NOME_FORNECEDOR
, nome_estabelecimento as ESTABELECIMENTO
, prod.id as produto_id
, prod.produto
, prod.descricao
, estoque_atual
, ordem_compra
, pedido_venda
, estoque_minimo
, quantidade_repor
, rpp.*
from(
select prod_id
, estabelecimento_id as estab_id
, produto
, descricao_produto
, descricao_detalhada
, marca
, referencia_produto
, tipo_produto
, simbolo
, sum(estoque_atual) as estoque_atual
, sum(oc) as ordem_compra
, sum(pv) as pedido_venda
, sum(minimo) as estoque_minimo
, sum(minimo - (estoque_atual - pv)) as quantidade_repor
, (select sum(ip.quantidade)
from itens_pedidos ip
join pedidos p on p.id = ip.pedido_id
where p.situacao not in ('C')
and ip.produto_id = prod_id
and p.data_conclusao between current_date - interval '30 day'
and current_date) as venda_30
, (select sum(ip.quantidade)
from itens_pedidos ip
join pedidos p on p.id = ip.pedido_id
where p.situacao not in ('C')
and ip.produto_id = prod_id
and p.data_conclusao between current_date - interval '90 day'
and current_date) as venda_90
from (
select ep.id
, ep.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia_produto
, m.marca
, tp.tipo_produto
, um.simbolo
, ep.estoque_atual
, 0 as oc
, 0 as pv
, case when (ep.estoque_minimo < 0) then 0 else ep.estoque_minimo end as minimo
from estoques_produtos ep
join tipos_estoques te on te.id = ep.tipo_estoque_id
join produtos p on (p.id = ep.produto_id)
join unidades_medidas um on (um.id = p.unidade_medida_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tp on tp.id = p.tipo_produto_id
where p.situacao <> 'C'
union
select i.id
, ped.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia
, m.marca
, tprod.tipo_produto
, um.simbolo
, 0 as estoque_atual
, i.quantidade_pendente as oc
, 0 as pv
, 0 as minimo
from itens_pedidos i
join pedidos ped on (ped.id = i.pedido_id)
join tipos_pedidos tp on (tp.id = ped.tipo_pedido_id)
join produtos p on (p.id = i.produto_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tprod on tprod.id = p.tipo_produto_id
join unidades_medidas um on (um.id = p.unidade_medida_id)
where tp.categoria = 'C' and p.situacao in ('M', 'P')
and p.situacao <> 'C'
union
select i.id
, ped.estabelecimento_id as estabelecimento_id
, p.id as prod_id
, p.produto
, p.descricao as descricao_produto
, p.descricao_detalhada
, p.referencia_fabricante as referencia
, m.marca
, tprod.tipo_produto
, um.simbolo
, 0 as estoque_atual
, 0 as oc
, case when (i.quantidade_efetiva = null)
then i.quantidade_pendente
else i.quantidade_efetiva end as pv
, 0 as minimo
from itens_pedidos i
join pedidos ped on (ped.id = i.pedido_id)
join tipos_pedidos tp on (tp.id = ped.tipo_pedido_id)
join produtos p on (p.id = i.produto_id)
left join marcas m on m.id = p.marca_id
join tipos_produtos tprod on tprod.id = p.tipo_produto_id
join unidades_medidas um on (um.id = p.unidade_medida_id)
where tp.categoria in ('V', 'S')
and ped.situacao in ('M', 'P')
and tprod.servico = 'N'
and p.situacao <> 'C'
) query
group by produto
, descricao_produto
, descricao_detalhada
, referencia_produto
, marca
, tipo_produto
, simbolo
, prod_id
, estabelecimento_id
having sum(coalesce(minimo,0) - (coalesce(estoque_atual,0) - coalesce(pv,0)) ) >= 0
)q
join referencias_produtos_pessoas rpp on rpp.produto_id = q.prod_id
join pessoas forn on forn.id = rpp.empresa_id
join estabelecimentos estab on estab.id = estab_id
join produtos prod on prod.id = rpp.produto_id
order by prod.produto, forn.nome_completo
Tipo: SOURCE_CODE