Itens de pedido

Como configurar um SQL para histórico de vendas na inclusão de itens em um pedido?

PEDVEN06.CAD_PEDIDOS_06_ITENS.FAQ-65511
O histórico de vendas apresentado na inclusão dos itens/produtos na interface Itens de pedido pode ser configurado através da preferência PEDVEN06.CAD_PEDIDOS_06_ITENS.SQL_HISTORICO_VENDAS que permite definir uma consulta com informações sobre orçamentos/pedidos do produto solicitado pelo cliente do pedido..

Exemplo 1

Vendas deste produto realizadas para este cliente (do pedido) nos últimos 14 dias, listando a data do pedido e a quantidade do produto no pedido:
item data date, label='Data';
item quantidade decimal_value, label='Quantidade'; 

select ped.data_inclusao::date as data, sum(itpe.quantidade) as quantidade
from pedidos ped
join itens_pedidos itpe on itpe.pedido_id = ped.id
join produtos prod on prod.id = itpe.produto_id
join pedidos ped2 on ped2.id = ${pedido_id}
where ped2.cliente_id = ped.cliente_id and prod.produto = '${produto}'
and ped.data_inclusao >= current_date-14 and ped.cliente_id <> coalesce((select valor::bigint from preferencias where preferencia = 'PESSOA.CONSUMIDOR_FINAL_ID' limit 1), 0)
group by 1 order by 1 desc

Exemplo 2

Apresentar a(s) imagem(ns) do produto:
item arquivo gallery, label="Imagem";
item estoque wiki, label="Estoques";

select 
( select array_to_string(array_agg(aa.arquivo), ',')
 from arquivos_anexos aa
    join arquivos_anexos_produtos aap on aap.arquivos_anexos_id = aa.id
    where aap.produto_id = p.id
) as arquivo 
, '|Estabelecimento| Estoque|'
 ||(select array_to_string(array_agg(chr(10)||'|'||estab.nome_estabelecimento || '| ' 
    || case when substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = ','
            or 
            substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = '.'
            then substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , 0
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             )
            else ''
            end
    || '|'),'')
 from estoques_produtos ep
 join tipos_estoques te on te.id = ep.tipo_estoque_id
 join estabelecimentos estab on estab.id = ep.estabelecimento_id
 where ep.produto_id = p.id) as estoque
from produtos p
    where p.produto = '${produto}'
and ( select count(1)
 from arquivos_anexos aa
    join arquivos_anexos_produtos aap on aap.arquivos_anexos_id = aa.id
    where aap.produto_id = p.id
) > 1;

item arquivo attached_image, label="Imagem";
item estoque wiki, label="Estoques";

select ( select aa.arquivo
    from arquivos_anexos aa
      join arquivos_anexos_produtos aap on aap.arquivos_anexos_id = aa.id
      where aap.produto_id = p.id
      limit 1
) as arquivo  
, '|Estabelecimento| Estoque|'
 ||(select array_to_string(array_agg(chr(10)||'|'||estab.nome_estabelecimento || '| ' 
    || case when substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = ','
            or 
            substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = '.'
            then substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , 0
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             )
            else ''
            end
    || '|'),'')
 from estoques_produtos ep
 join tipos_estoques te on te.id = ep.tipo_estoque_id
 join estabelecimentos estab on estab.id = ep.estabelecimento_id
 where ep.produto_id = p.id) as estoque
from produtos p
where p.produto = '${produto}'
and ( select count(1)
 from arquivos_anexos aa
    join arquivos_anexos_produtos aap on aap.arquivos_anexos_id = aa.id
    where aap.produto_id = p.id
) = 1;

item estoque wiki, label="Estoques";

select '|Estabelecimento| Estoque|'
 ||(select array_to_string(array_agg(chr(10)||'|'||estab.nome_estabelecimento || '| ' 
    || case when substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = ','
            or 
            substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
            )::text = '.'
            then substring (to_char(ep.estoque_atual, 'FM9G999G999G990D999')
             , 0
             ,length(to_char(ep.estoque_atual, 'FM9G999G999G990D999'))
             )
            else ''
            end
    || '|'),'')
 from estoques_produtos ep
 join tipos_estoques te on te.id = ep.tipo_estoque_id
 join estabelecimentos estab on estab.id = ep.estabelecimento_id
 where ep.produto_id = p.id) as estoque
from produtos p
    where p.produto = '${produto}'
and ( select count(1)
 from arquivos_anexos aa
    join arquivos_anexos_produtos aap on aap.arquivos_anexos_id = aa.id
    where aap.produto_id = p.id
) < 1;

Ver também: