CREATE OR REPLACE FUNCTION public.fnc_busca_preco_impressao_orcamento( var_filial integer, var_sequencia_vnd integer, var_orcamento integer, var_tipo_b_l text) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$ DECLARE var_prc_venda numeric; BEGIN SELECT CASE WHEN (COALESCE(prc_produto_preco_combinado.aplica_indice,'S') = 'N' AND vnd_orcamento_item.desconto = 'S') OR vnd_orcamento_item.vlr_desconto > 0 OR (fnc_verifica_promocao_prc_fixo( (SELECT tipo_cliente FROM cli_cliente WHERE codigo = vnd_orcamento.cliente), vnd_orcamento.filial_orc, 1, vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto) = 'S') THEN vnd_orcamento_item.vlr_unitario ELSE CASE WHEN (COALESCE(prc_produto_preco_combinado.aplica_indice,'S') = 'S' AND vnd_orcamento_item.desconto = 'S') OR (fnc_verifica_promocao_prc_fixo( (SELECT tipo_cliente FROM cli_cliente WHERE codigo = vnd_orcamento.cliente), vnd_orcamento.filial_orc, 1, vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto) = 'S') THEN CASE WHEN var_tipo_b_l = 'P' THEN vnd_orcamento_item.vlr_unitario ELSE vnd_orcamento_item.vlr_unitario * 0.90 END ELSE CASE WHEN var_tipo_b_l = 'P' THEN ROUND((prc_tabela_preco.preco_venda * fnc_prc_calcula_promocao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, prc_tabela_preco.tabela, vnd_orcamento_item.quantidade)),(SELECT decimais_vlr_venda FROM par_faturamento WHERE filial_par = vnd_orcamento_item.filial_orc)) ELSE ROUND((prc_tabela_preco.preco_venda * fnc_prc_calcula_promocao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, prc_tabela_preco.tabela, vnd_orcamento_item.quantidade)) * 0.90,(SELECT decimais_vlr_venda FROM par_faturamento WHERE filial_par = vnd_orcamento_item.filial_orc)) END END END AS preco INTO var_prc_venda FROM vnd_orcamento_item JOIN prc_tabela_preco ON prc_tabela_preco.filial_pro = vnd_orcamento_item.filial_pro AND prc_tabela_preco.produto = vnd_orcamento_item.produto INNER JOIN vnd_orcamento ON vnd_orcamento.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento.orcamento = vnd_orcamento_item.orcamento LEFT JOIN prc_produto_preco_combinado ON prc_produto_preco_combinado.filial_pro = vnd_orcamento_item.filial_pro AND prc_produto_preco_combinado.codigo = vnd_orcamento_item.produto WHERE vnd_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_sequencia_vnd; RETURN var_prc_venda; END; $BODY$; ALTER FUNCTION public.fnc_busca_preco_impressao_orcamento(integer, integer, integer, text) OWNER TO postgres;