--######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- 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 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; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_arame(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_arame(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_arame( var_filial integer, var_orcamento 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 CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE((TRUNC((((TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao_detalhe AS det1 WHERE det1.filial = vnd_orcamento_item.filial_orc AND det1.orcamento = vnd_orcamento_item.orcamento AND det1.sequencia_item = vnd_orcamento_item.sequencia AND det1.sequencia_dimensao = 1 ) * (SELECT SUM(det2.quantidade) FROM vnd_orcamento_item_especificacao_detalhe AS det2 WHERE det2.filial = vnd_orcamento_item.filial_orc AND det2.orcamento = vnd_orcamento_item.orcamento AND det2.sequencia_item = vnd_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_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN par_producao ON par_producao.filial = vnd_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_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_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(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem( var_filial integer, var_orcamento 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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) UNION ALL ( SELECT COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.largura * 2) + (vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.diametro_estribo * 3.14159) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM((TRUNC((((((vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.largura) + vnd_orcamento_item_especificacao.acrescimo_estribo) * TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0.000000 WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_detalhe(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_detalhe(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_detalhe( var_filial integer, var_orcamento 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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_detalhe(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_detalhe_dimensao(integer, integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_detalhe_dimensao(integer, integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao( var_filial integer, var_orcamento integer, var_seq_item integer, var_seq_dimensao 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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND vnd_orcamento_item_especificacao.sequencia_dimensao = var_seq_dimensao AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao(integer, integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_detalhe_dimensao_aux(integer, integer, integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_detalhe_dimensao_aux(integer, integer, integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_aux( var_filial integer, var_prox_aux_vnd integer, var_seq_item integer, var_seq_dimensao integer, var_sequencia_detalhe 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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.altura) * 2) + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) 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 pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_aux_orcamento_item_especificacao_detalhe.cod_especificacao 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_vnd AND vnd_aux_orcamento_item.sequencia = var_seq_item AND vnd_aux_orcamento_item_especificacao.sequencia_dimensao = var_seq_dimensao AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia = var_sequencia_detalhe AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_aux(integer, integer, integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_detalhe_dimensao_item(integer, integer, integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_detalhe_dimensao_item(integer, integer, integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_item( var_filial integer, var_orcamento integer, var_seq_item integer, var_seq_dimensao integer, var_seq_dimensao_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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * vnd_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND vnd_orcamento_item_especificacao.sequencia_dimensao = var_seq_dimensao AND vnd_orcamento_item_especificacao_detalhe.sequencia = var_seq_dimensao_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_item(integer, integer, integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(integer, integer, integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(integer, integer, integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux( var_filial integer, var_prox_aux_venda integer, var_seq_item integer, var_seq_dimensao integer, var_seq_dimensao_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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_aux_orcamento_item_especificacao.comprimento + vnd_aux_orcamento_item_especificacao.altura) * 2) + vnd_aux_orcamento_item_especificacao.acrescimo) * vnd_aux_orcamento_item_especificacao_detalhe.quantidade) * vnd_aux_orcamento_item.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) 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 pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_aux_orcamento_item_especificacao_detalhe.cod_especificacao 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 vnd_aux_orcamento_item_especificacao.sequencia_dimensao = var_seq_dimensao AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia = var_seq_dimensao_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(integer, integer, integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_especificacao(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_especificacao(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_especificacao( var_filial integer, var_orcamento 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 TRUNC(COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.largura * 2) + (vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.diametro_estribo * 3.14159) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(((TRUNC((((((vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.largura) + vnd_orcamento_item_especificacao.acrescimo_estribo) * TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0.000000 WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) * vnd_orcamento_item.quantidade,6) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_especificacao(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_especificacao_aux(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_especificacao_aux(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_especificacao_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 TRUNC(COALESCE(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.largura * 2) + (vnd_aux_orcamento_item_especificacao.altura * 2) + vnd_aux_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) 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.diametro_estribo * 3.14159) + vnd_aux_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(((TRUNC((((((vnd_aux_orcamento_item_especificacao.altura * 2) + vnd_aux_orcamento_item_especificacao.largura) + vnd_aux_orcamento_item_especificacao.acrescimo_estribo) * 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)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0.000000 WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) * vnd_aux_orcamento_item.quantidade,6) 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 pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo 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 pro_especificacao_vergalhao.produto_ref IS NOT NULL ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_especificacao_aux(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_prod_associado(integer, integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_prod_associado(integer, integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_prod_associado( var_filial integer, var_orcamento 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 COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) ) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) ) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC(((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) ) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC(((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) ) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY pro_grupo_qtde_especificacao.tipo_calculo ) UNION ALL ( SELECT SUM(valor) FROM ( SELECT CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE((TRUNC((((TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao_detalhe AS det1 WHERE det1.filial = vnd_orcamento_item.filial_orc AND det1.orcamento = vnd_orcamento_item.orcamento AND det1.sequencia_item = vnd_orcamento_item.sequencia AND det1.sequencia_dimensao = 1 ) * (SELECT SUM(det2.quantidade) FROM vnd_orcamento_item_especificacao_detalhe AS det2 WHERE det2.filial = vnd_orcamento_item.filial_orc AND det2.orcamento = vnd_orcamento_item.orcamento AND det2.sequencia_item = vnd_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_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN par_producao ON par_producao.filial = vnd_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_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND par_producao.produto_associado_producao IS NOT NULL ) AS tabaux ) UNION ALL ( SELECT COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END )+0.999999),0)) * ((vnd_orcamento_item_especificacao.largura * 2) + (vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.diametro_estribo * 3.14159) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(((TRUNC((((((vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.largura) + vnd_orcamento_item_especificacao.acrescimo_estribo) * TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0.000000 WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND vnd_orcamento_item.sequencia = var_seq_item AND pro_especificacao_vergalhao.produto_ref IS NOT NULL ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_prod_associado(integer, integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- FUNCTION: public.fnc_calcula_peso_ferragem_total_pedido(integer, integer) -- DROP FUNCTION IF EXISTS public.fnc_calcula_peso_ferragem_total_pedido(integer, integer); CREATE OR REPLACE FUNCTION public.fnc_calcula_peso_ferragem_total_pedido( var_filial integer, var_orcamento integer) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ DECLARE var_peso numeric; BEGIN -- Funcao que retorna o valor total do peso do pedido descontando o que já está em producao SELECT COALESCE((SUM(valor)),0) AS valor INTO var_peso FROM ( --CALCULO DA ESPECIFICACAO ( SELECT vnd_orcamento_item.sequencia, (vnd_orcamento_item.quantidade - COALESCE((SELECT SUM(prd_ordem_producao.quantidade_pecas) FROM prd_ordem_producao_x_pedido INNER JOIN prd_ordem_producao ON prd_ordem_producao.filial = prd_ordem_producao_x_pedido.filial_ordem_producao AND prd_ordem_producao.ordem_producao = prd_ordem_producao_x_pedido.ordem_producao WHERE prd_ordem_producao_x_pedido.filial_pedido = vnd_orcamento_item.filial_orc AND prd_ordem_producao_x_pedido.pedido = vnd_orcamento_item.orcamento AND prd_ordem_producao_x_pedido.pedido_seq_item = vnd_orcamento_item.sequencia),0)) * COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(SUM(TRUNC((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN COALESCE(SUM(TRUNC((((((vnd_orcamento_item_especificacao.comprimento + vnd_orcamento_item_especificacao.altura) * 2) + vnd_orcamento_item_especificacao.acrescimo) * vnd_orcamento_item_especificacao_detalhe.quantidade) * pro_especificacao_vergalhao.fator_peso),6)),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade, vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item_especificacao.largura, vnd_orcamento_item_especificacao.comprimento, vnd_orcamento_item_especificacao.altura, vnd_orcamento_item_especificacao.acrescimo, pro_especificacao_vergalhao.fator_peso, vnd_orcamento_item_especificacao_detalhe.quantidade , vnd_orcamento_item_especificacao.acrescimo_estribo, pro_grupo_qtde_especificacao.tipo_calculo ) UNION ALL --CALCULO DO PRODUTO ASSOCIADO (ARAME) ( SELECT vnd_orcamento_item.sequencia, (vnd_orcamento_item.quantidade - COALESCE((SELECT SUM(prd_ordem_producao.quantidade_pecas) FROM prd_ordem_producao_x_pedido INNER JOIN prd_ordem_producao ON prd_ordem_producao.filial = prd_ordem_producao_x_pedido.filial_ordem_producao AND prd_ordem_producao.ordem_producao = prd_ordem_producao_x_pedido.ordem_producao WHERE prd_ordem_producao_x_pedido.filial_pedido = vnd_orcamento_item.filial_orc AND prd_ordem_producao_x_pedido.pedido = vnd_orcamento_item.orcamento AND prd_ordem_producao_x_pedido.pedido_seq_item = vnd_orcamento_item.sequencia),0)) * COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE((TRUNC((((TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * (vnd_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_orcamento_item_especificacao_detalhe AS det1 WHERE det1.filial = vnd_orcamento_item.filial_orc AND det1.orcamento = vnd_orcamento_item.orcamento AND det1.sequencia_item = vnd_orcamento_item.sequencia AND det1.sequencia_dimensao = 1 ) * (SELECT SUM(det2.quantidade) FROM vnd_orcamento_item_especificacao_detalhe AS det2 WHERE det2.filial = vnd_orcamento_item.filial_orc AND det2.orcamento = vnd_orcamento_item.orcamento AND det2.sequencia_item = vnd_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 ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN vnd_orcamento_item_especificacao_detalhe ON vnd_orcamento_item_especificacao_detalhe.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item.sequencia AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN par_producao ON par_producao.filial = vnd_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_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND par_producao.produto_associado_producao IS NOT NULL GROUP BY vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade, vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item_especificacao.largura, vnd_orcamento_item_especificacao.comprimento, vnd_orcamento_item_especificacao.altura, vnd_orcamento_item_especificacao.acrescimo, pro_especificacao_vergalhao.fator_peso, vnd_orcamento_item_especificacao_detalhe.quantidade, vnd_orcamento_item_especificacao.espacamento_estribo, vnd_orcamento_item_especificacao.acrescimo_estribo, pro_grupo_qtde_especificacao.tipo_calculo, pro_especificacao_vergalhao.comprimento ) UNION ALL --CALCULO DOS ESTRIBOS ( SELECT vnd_orcamento_item.sequencia, (vnd_orcamento_item.quantidade - COALESCE((SELECT SUM(prd_ordem_producao.quantidade_pecas) FROM prd_ordem_producao_x_pedido INNER JOIN prd_ordem_producao ON prd_ordem_producao.filial = prd_ordem_producao_x_pedido.filial_ordem_producao AND prd_ordem_producao.ordem_producao = prd_ordem_producao_x_pedido.ordem_producao WHERE prd_ordem_producao_x_pedido.filial_pedido = vnd_orcamento_item.filial_orc AND prd_ordem_producao_x_pedido.pedido = vnd_orcamento_item.orcamento AND prd_ordem_producao_x_pedido.pedido_seq_item = vnd_orcamento_item.sequencia),0)) * COALESCE(CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'Q' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.largura * 2) + (vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'R' THEN COALESCE(((TRUNC((( (TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * ((vnd_orcamento_item_especificacao.diametro_estribo * 3.14159) + vnd_orcamento_item_especificacao.acrescimo_estribo)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'T' THEN COALESCE(((TRUNC((((((vnd_orcamento_item_especificacao.altura * 2) + vnd_orcamento_item_especificacao.largura) + vnd_orcamento_item_especificacao.acrescimo_estribo) * TRUNC(((vnd_orcamento_item_especificacao.comprimento / CASE WHEN vnd_orcamento_item_especificacao.espacamento_estribo <= 0 THEN 1 ELSE vnd_orcamento_item_especificacao.espacamento_estribo END)+0.999999),0)) * pro_especificacao_vergalhao.fator_peso),6))),0) WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'S' THEN 0.000000 WHEN pro_grupo_qtde_especificacao.tipo_calculo = 'N' THEN 0.000000 END ,0.000000) AS valor FROM vnd_orcamento_item LEFT JOIN vnd_orcamento_item_especificacao ON vnd_orcamento_item_especificacao.filial = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_especificacao.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_especificacao.sequencia_item = vnd_orcamento_item.sequencia LEFT JOIN pro_especificacao_vergalhao ON pro_especificacao_vergalhao.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item_especificacao.filial_pro AND pro_produto.codigo = vnd_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_orcamento_item.filial_orc = var_filial AND vnd_orcamento_item.orcamento = var_orcamento AND pro_especificacao_vergalhao.produto_ref IS NOT NULL GROUP BY vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade, vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item_especificacao.largura, vnd_orcamento_item_especificacao.comprimento, vnd_orcamento_item_especificacao.altura, vnd_orcamento_item_especificacao.acrescimo, pro_especificacao_vergalhao.fator_peso, vnd_orcamento_item_especificacao.diametro_estribo, vnd_orcamento_item_especificacao.espacamento_estribo, vnd_orcamento_item_especificacao.acrescimo_estribo, pro_grupo_qtde_especificacao.tipo_calculo ) ) AS tabaux WHERE valor > 0; RETURN var_peso; END; $BODY$; ALTER FUNCTION public.fnc_calcula_peso_ferragem_total_pedido(integer, integer) OWNER TO postgres; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## -- View: public.view_vnd_padrao_ferragem_digitacao_pedido -- DROP VIEW public.view_vnd_padrao_ferragem_digitacao_pedido; CREATE OR REPLACE VIEW public.view_vnd_padrao_ferragem_digitacao_pedido AS SELECT tabaux.filial, tabaux.tipo, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.prox_aux_venda, tabaux.sequencia, tabaux.qtd_vda, tabaux.produto, tabaux.produto_ref, tabaux.produto_ref_descr, tabaux.codigo, tabaux.descricao, SUM(tabaux.total_peso) AS total_peso, fnc_arredonda_regra_abnt((SUM(tabaux.total_valor)), 6) AS total_valor, fnc_arredonda_regra_abnt((SUM(tabaux.total_valor) / CASE WHEN sum(tabaux.total_peso) = 0::numeric THEN 1::numeric ELSE sum(tabaux.total_peso) END) , 6) AS vlr_medio, trunc(sum(tabaux.total_valor_custo), 6) AS total_valor_custo, tabaux.tipo_linha FROM ( SELECT vnd_aux_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_aux_orcamento_item.vendedor, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item.quantidade AS qtd_vda, vnd_aux_orcamento_item.produto, prd_ref.codigo AS produto_ref, prd_ref.descricao AS produto_ref_descr, COALESCE(vnd_aux_orcamento_item_especificacao_detalhe.cod_especificacao, 0) AS codigo, COALESCE(pro_esp_verg_espc.descricao, ''::character varying) AS descricao, CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'Q'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'R'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'T'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'S'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'N'::text THEN 0.000000 ELSE NULL::numeric END AS total_peso, trunc( CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'Q'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'R'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'T'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'S'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'N'::text THEN 0.000000 ELSE NULL::numeric END * COALESCE(vnd_aux_orcamento_item_especificacao.preco_kg, 0.000000) * COALESCE(( SELECT vnd_aux_desconto_pedido.vlr_liquido / vnd_aux_desconto_pedido.vlr_bruto FROM vnd_aux_desconto_pedido WHERE vnd_aux_desconto_pedido.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda), 1::numeric), 16) AS total_valor, trunc( CASE WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'Q'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'R'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'T'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'S'::text THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_item_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item_especificacao.sequencia_dimensao, vnd_aux_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) WHEN pro_grupo_qtde_especificacao.tipo_calculo::text = 'N'::text THEN 0.000000 ELSE NULL::numeric END * COALESCE(prc_tabela_preco.preco_custo, 0.000000), 16) AS total_valor_custo, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_aux_orcamento_item.produto = prd_ref.codigo AND vnd_aux_orcamento_item.produto = COALESCE(vnd_aux_orcamento_item_especificacao_detalhe.cod_especificacao, 0) THEN 0 ELSE 1 END AS tipo_linha FROM vnd_aux_orcamento_item JOIN pro_produto ON vnd_aux_orcamento_item.filial_pro = pro_produto.filial_pro AND vnd_aux_orcamento_item.produto = pro_produto.codigo 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 JOIN vnd_aux_orcamento_item_especificacao_detalhe ON vnd_aux_orcamento_item_especificacao_detalhe.filial = vnd_aux_orcamento_item_especificacao.filial AND vnd_aux_orcamento_item_especificacao_detalhe.prox_aux_venda = vnd_aux_orcamento_item_especificacao.prox_aux_venda AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_item = vnd_aux_orcamento_item_especificacao.sequencia_item AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_aux_orcamento_item_especificacao.sequencia_dimensao JOIN pro_especificacao_vergalhao pro_esp_verg_espc ON pro_esp_verg_espc.codigo = vnd_aux_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_espc.produto_ref LEFT JOIN prc_tabela_preco ON prc_tabela_preco.filial_pro = prd_ref.filial_pro AND prc_tabela_preco.produto = prd_ref.codigo JOIN pro_grupo_qtde_especificacao ON pro_grupo_qtde_especificacao.filial = pro_produto.filial_pro AND pro_grupo_qtde_especificacao.grupo = pro_produto.grupo UNION ALL SELECT vnd_aux_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_aux_orcamento_item.vendedor, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item.quantidade AS qtd_vda, vnd_aux_orcamento_item.produto, prd_ref.codigo AS produto_ref, prd_ref.descricao AS produto_ref_descr, COALESCE(vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo, 0) AS codigo, COALESCE(pro_esp_verg_estr.descricao, ''::character varying) AS descricao, CASE WHEN vnd_aux_orcamento_item_especificacao_detalhe.sequencia = 1 THEN trunc(COALESCE(fnc_calcula_peso_ferragem_especificacao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000), 6) ELSE 0.000000 END AS total_peso, trunc( CASE WHEN vnd_aux_orcamento_item_especificacao_detalhe.sequencia = 1 THEN trunc(COALESCE(fnc_calcula_peso_ferragem_especificacao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000), 6) ELSE 0.000000 END * COALESCE(vnd_aux_orcamento_item_especificacao.preco_kg, 0.000000) * COALESCE(( SELECT vnd_aux_desconto_pedido.vlr_liquido / vnd_aux_desconto_pedido.vlr_bruto FROM vnd_aux_desconto_pedido WHERE vnd_aux_desconto_pedido.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda), 1::numeric), 16) AS total_valor, trunc( CASE WHEN vnd_aux_orcamento_item_especificacao_detalhe.sequencia = 1 THEN trunc(COALESCE(fnc_calcula_peso_ferragem_especificacao_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000), 6) ELSE 0.000000 END * COALESCE(prc_tabela_preco.preco_custo, 0.000000), 16) AS total_valor_custo, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_aux_orcamento_item.produto = prd_ref.codigo AND vnd_aux_orcamento_item.produto = COALESCE(vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo, 0) THEN 0 ELSE 1 END AS tipo_linha FROM vnd_aux_orcamento_item JOIN pro_produto ON vnd_aux_orcamento_item.filial_pro = pro_produto.filial_pro AND vnd_aux_orcamento_item.produto = pro_produto.codigo 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 JOIN vnd_aux_orcamento_item_especificacao_detalhe ON vnd_aux_orcamento_item_especificacao_detalhe.filial = vnd_aux_orcamento_item_especificacao.filial AND vnd_aux_orcamento_item_especificacao_detalhe.prox_aux_venda = vnd_aux_orcamento_item_especificacao.prox_aux_venda AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_item = vnd_aux_orcamento_item_especificacao.sequencia_item AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_aux_orcamento_item_especificacao.sequencia_dimensao JOIN pro_especificacao_vergalhao pro_esp_verg_estr ON pro_esp_verg_estr.codigo = vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_estr.produto_ref LEFT JOIN prc_tabela_preco ON prc_tabela_preco.filial_pro = prd_ref.filial_pro AND prc_tabela_preco.produto = prd_ref.codigo UNION ALL SELECT vnd_aux_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_aux_orcamento_item.vendedor, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item.quantidade AS qtd_vda, vnd_aux_orcamento_item.produto, pro_produto.codigo AS produto_ref, pro_produto.descricao AS produto_ref_descr, pro_produto.codigo, pro_produto.descricao, vnd_aux_orcamento_item.quantidade AS total_peso, trunc(vnd_aux_orcamento_item.vlr_total * COALESCE(( SELECT vnd_aux_desconto_pedido.vlr_liquido / vnd_aux_desconto_pedido.vlr_bruto FROM vnd_aux_desconto_pedido WHERE vnd_aux_desconto_pedido.prox_aux_venda = vnd_aux_orcamento_item.prox_aux_venda), 1::numeric), 16) AS total_valor, trunc(COALESCE(prc_tabela_preco.preco_custo, 0.000000) * fnc_calcula_indice_desc_acrescimo_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda) * vnd_aux_orcamento_item.quantidade, 16) AS total_valor_custo, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_aux_orcamento_item.produto = pro_produto.codigo AND (( SELECT count(*) AS count FROM pro_grupo_qtde_especificacao WHERE pro_grupo_qtde_especificacao.filial = vnd_aux_orcamento_item.filial_orc AND pro_grupo_qtde_especificacao.grupo = pro_produto.grupo AND pro_grupo_qtde_especificacao.tipo_calculo::text <> 'N'::text)) > 0 THEN 0 ELSE 1 END AS tipo_linha FROM vnd_aux_orcamento_item JOIN pro_produto ON vnd_aux_orcamento_item.filial_pro = pro_produto.filial_pro AND vnd_aux_orcamento_item.produto = pro_produto.codigo 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_especificacao.filial AND vnd_aux_orcamento_item_especificacao_detalhe.prox_aux_venda = vnd_aux_orcamento_item_especificacao.prox_aux_venda AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_item = vnd_aux_orcamento_item_especificacao.sequencia_item AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_aux_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao pro_esp_verg_estr ON pro_esp_verg_estr.codigo = vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo LEFT JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_estr.produto_ref LEFT JOIN prc_tabela_preco ON prc_tabela_preco.filial_pro = prd_ref.filial_pro AND prc_tabela_preco.produto = prd_ref.codigo UNION ALL SELECT vnd_aux_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_aux_orcamento_item.vendedor, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item.quantidade AS qtd_vda, vnd_aux_orcamento_item.produto, pro_produto.codigo AS produto_ref, pro_produto.descricao AS produto_ref_descr, pro_produto.codigo, pro_produto.descricao, trunc((COALESCE(fnc_calcula_peso_ferragem_arame_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000) * vnd_aux_orcamento_item.quantidade), 6) AS total_peso, trunc(COALESCE(fnc_calcula_peso_ferragem_arame_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000) * COALESCE(prc_tabela_preco.preco_venda, 0.000000) * vnd_aux_orcamento_item.quantidade, 16) AS total_valor, trunc(COALESCE(fnc_calcula_peso_ferragem_arame_aux(vnd_aux_orcamento_item.filial_orc, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia), 0.000000) * COALESCE(prc_tabela_preco.preco_custo, 0.000000) * vnd_aux_orcamento_item.quantidade, 16) AS total_valor_custo, 2 AS tipo_linha FROM vnd_aux_orcamento_item JOIN par_producao ON par_producao.filial = vnd_aux_orcamento_item.filial_orc 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.filial_pro AND pro_produto.codigo = par_producao.produto_associado_producao 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_especificacao.filial AND vnd_aux_orcamento_item_especificacao_detalhe.prox_aux_venda = vnd_aux_orcamento_item_especificacao.prox_aux_venda AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_item = vnd_aux_orcamento_item_especificacao.sequencia_item AND vnd_aux_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_aux_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao pro_esp_verg_estr ON pro_esp_verg_estr.codigo = vnd_aux_orcamento_item_especificacao.cod_especificacao_estribo LEFT JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_estr.produto_ref LEFT JOIN prc_tabela_preco ON prc_tabela_preco.filial_pro = pro_produto.filial_pro AND prc_tabela_preco.produto = pro_produto.codigo GROUP BY vnd_aux_orcamento_item.filial_orc, pro_produto.produto_servico, (to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text)), (to_char(vnd_aux_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text)), vnd_aux_orcamento_item.vendedor, vnd_aux_orcamento_item.prox_aux_venda, vnd_aux_orcamento_item.sequencia, vnd_aux_orcamento_item.quantidade, vnd_aux_orcamento_item.produto, pro_produto.codigo, pro_produto.descricao, prc_tabela_preco.preco_custo, prc_tabela_preco.preco_venda ) tabaux GROUP BY tabaux.filial, tabaux.tipo, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.prox_aux_venda, tabaux.sequencia, tabaux.qtd_vda, tabaux.produto, tabaux.produto_ref, tabaux.produto_ref_descr, tabaux.codigo, tabaux.descricao, tabaux.tipo_linha; ALTER TABLE public.view_vnd_padrao_ferragem_digitacao_pedido OWNER TO postgres; COMMENT ON VIEW public.view_vnd_padrao_ferragem_digitacao_pedido IS 'View Padrao digitacao Pedido - Ferragem'; --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --######################################################################################################################################## --########################################################################################################################################