Produtos

Como configurar o SQL para apresentar informações da última compra no cadastro de produtos?

PROD.CAD_PRODUTOS.FAQ-77252
Na interface Produtos há a possibilidade de configurar um SQL para apresentar informações a respeito da última compra feita para um produto, sendo apresentado ao listar e/ou consultar produtos. Para isto, deve-se montar uma consulta (SQL) e incluí-la na preferência PROD.CAD_PRODUTOS.SQL_INFORMACOES_ULTIMA_COMPRA.

A consulta deve seguir as seguintes instruções:

Exemplo 1:
select '<b>Quantidade:</b> ' || itdoc.quantidade || '<p><b>Última aquisição em:</b> ' || to_char(doc.data_emissao, 'DD/MM/YYYY')
from v_custos_produtos cp
join movimentos_estoques me on me.id = cp.ultima_aquisicao_id
join itens_doc_entradas_saidas itdoc on itdoc.id = me.item_documento_id
left join doc_entradas_saidas doc on doc.id = itdoc.documento_id
where cp.produto_id = PRODUTO.ID
order by data_atualizacao desc
limit 1
Resultado:
[IMG:EXEMPLO_1_1]
[IMG:EXEMPLO_1_2]

Exemplo 2:
select '<table>
<tr>
<td><b>Quantidade:</b></td>
<td>' || case when ((itdoc.quantidade / itdoc.quantidade::integer) = 1) then to_char(itdoc.quantidade,'FM9G999G999D') else to_char(itdoc.quantidade,'FM9G999G999D9999') end || '</td>
</tr>
<tr>
<td><b>Data:</b></td>
<td>' || TO_CHAR(doc.data_emissao, 'DD/MM/YYYY') || '</td> 
</tr>
<tr>
<td><b>Fornecedor:</b></td>
<td>' || p.nome_completo || ' (pessoa=' || p.pessoa || ')' || '</td>
</tr>
<tr>
<td><b>Documento:</b></td>
<td>' || e.especie || ' ' || doc.numero || '</td>
</tr>
<tr>
<td><b>Valor unitário:</b></td>
<td>' || to_char(itdoc.valor_unitario,'L9G999G990D99') 
|| case when coalesce(itdoc.valor_ipi,0) > 0 then '+ IPI ' || to_char(coalesce(itdoc.valor_ipi,0),'L9G999G990D99') || ' (' || to_char(coalesce(itdoc.aliquota_ipi,0),'999') || '%)' else '' end
|| case when coalesce((select ofit.valor_tributo/itdoc.quantidade
from operacoes_fiscais_itens_documento ofit 
where ofit.tributo_id = (select id from tributos trib where trib.sigla = 'SUBST') 
and  ofit.item_documento_id = itdoc.id),0) > 0 then ' + ICMS ST ' || 
to_char(coalesce((select ofit.valor_tributo/itdoc.quantidade
from operacoes_fiscais_itens_documento ofit 
where ofit.tributo_id = (select id from tributos trib where trib.sigla = 'SUBST') 
and  ofit.item_documento_id = itdoc.id),0),'L9G999G990D99') else '' end
|| ' = ' || to_char(coalesce(itdoc.valor_custo_financeiro,0),'L9G999G990D99')
|| '</td>
</table>'
from v_custos_produtos cp
join movimentos_estoques me on me.id = cp.ultima_aquisicao_id
join itens_doc_entradas_saidas itdoc on itdoc.id = me.item_documento_id
left join doc_entradas_saidas doc on doc.id = itdoc.documento_id
left join pessoas p on p.id = doc.emitente_id
left join especies e on e.id = doc.especie_id
where cp.produto_id = PRODUTO.ID
order by me.data_hora desc
limit 1
Resultado:
[IMG:EXEMPLO_2_1]
[IMG:EXEMPLO_2_2]
´

Atenção
O comando SQL deve ser elaborado com muito cuidado, pois a consulta executada poderá comprometer o funcionamento e o desempenho do sistema!

Ver também: