-- FUNCTION: public.fnc_calcula_peso_ferragem_arame_aux(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_arame_aux(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_arame_aux( var_filial integer, var_prox_aux_venda integer, var_seq_item integer) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ DECLARE var_peso numeric; BEGIN SELECT SUM(valor) AS valor INTO var_peso FROM ( SELECT DISTINCT vnd_aux_orcamento_item_especificacao.sequencia_dimensao, CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0 ELSE vnd_aux_orcamento_item_especificacao_detalhe.sequencia END, CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE((TRUNC((((TRUNC(((vnd_aux_orcamento_item_especificacao.comprimento / CASE WHEN vnd_aux_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_aux_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_aux_orcamento_item_especificacao_detalhe.quantidade)) * (pro_especificacao_vergalhao.fator_peso * pro_especificacao_vergalhao.comprimento)),6)),0.000000) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE((TRUNC((((TRUNC(((vnd_aux_orcamento_item_especificacao.comprimento / CASE WHEN vnd_aux_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_aux_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_aux_orcamento_item_especificacao_detalhe.quantidade)) * (pro_especificacao_vergalhao.fator_peso * pro_especificacao_vergalhao.comprimento)),6)),0.000000) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE((TRUNC((((TRUNC(((vnd_aux_orcamento_item_especificacao.comprimento / CASE WHEN vnd_aux_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_aux_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_aux_orcamento_item_especificacao_detalhe.quantidade)) * (pro_especificacao_vergalhao.fator_peso * pro_especificacao_vergalhao.comprimento)),6)),0.000000) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE((TRUNC(( ((SELECT SUM(det1.quantidade) FROM vnd_aux_orcamento_item_especificacao_detalhe AS det1 WHERE det1.filial = vnd_aux_orcamento_item.filial_orc AND det1.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda AND det1.sequencia_item = vnd_aux_orcamento_item.sequencia AND det1.sequencia_dimensao = 1 ) * (SELECT SUM(det2.quantidade) FROM vnd_aux_orcamento_item_especificacao_detalhe AS det2 WHERE det2.filial = vnd_aux_orcamento_item.filial_orc AND det2.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda AND det2.sequencia_item = vnd_aux_orcamento_item.sequencia AND det2.sequencia_dimensao = 2 )) * (pro_especificacao_vergalhao.fator_peso * pro_especificacao_vergalhao.comprimento)),6)),0.000000) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END AS valor FROM vnd_aux_orcamento_item LEFT JOIN vnd_aux_orcamento_item_especificacao ON vnd_aux_orcamento_item_especificacao.filial = vnd_aux_orcamento_item.filial_orc AND vnd_aux_orcamento_item_especificacao.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda AND vnd_aux_orcamento_item_especificacao.sequencia_item = vnd_aux_orcamento_item.sequencia LEFT JOIN vnd_aux_orcamento_item_especificacao_detalhe ON vnd_aux_orcamento_item_especificacao_detalhe.filial = vnd_aux_orcamento_item.filial_orc AND vnd_aux_orcamento_item_especificacao_detalhe.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_item = vnd_aux_orcamento_item.sequencia AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_aux_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN par_producao ON par_producao.filial = vnd_aux_orcamento_item.filial_orc LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.produto_ref = par_producao.produto_associado_producao JOIN pro_produto ON pro_produto.filial_pro = vnd_aux_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_aux_orcamento_item_especificacao.produto JOIN pro_grupo_qtde_especificacao ON pro_grupo_qtde_especificacao.filial = pro_produto.filial_pro AND pro_grupo_qtde_especificacao.grupo = pro_produto.grupo WHERE vnd_aux_orcamento_item.filial_orc = var_filial AND vnd_aux_orcamento_item.prox_aux_venda = var_prox_aux_venda AND vnd_aux_orcamento_item.sequencia = var_seq_item AND par_producao.produto_associado_producao IS NOT NULL ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_arame_aux(integer, integer, integer) OWNER TO postgres;