-- View: public.view_vnd_padrao_ferragem -- DROP VIEW public.view_vnd_padrao_ferragem; CREATE OR REPLACE VIEW public.view_vnd_padrao_ferragem AS SELECT tabaux.filial, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.cliente, tabaux.produto_ref, tabaux.produto_ref_descr, tabaux.codigo, tabaux.descricao, sum(tabaux.total_peso) AS total_peso, sum(tabaux.total_valor) AS total_valor, trunc(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 FROM ( SELECT vnd_orcamento_item.filial_orc AS filial, to_char(vnd_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_orcamento.vendedor, vnd_orcamento.cliente, prd_ref.codigo AS produto_ref, prd_ref.descricao AS produto_ref_descr, COALESCE(vnd_orcamento_item_especificacao_detalhe.cod_especificacao, 0) AS codigo, COALESCE(pro_esp_verg_espc.descricao, ''::character varying) AS descricao, CASE WHEN vnd_orcamento_item_especificacao.largura = 0::numeric AND vnd_orcamento_item_especificacao.diametro_estribo = 0::numeric THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia, vnd_orcamento_item_especificacao.sequencia_dimensao), 0.000000), 6) ELSE trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_item(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia, vnd_orcamento_item_especificacao.sequencia_dimensao, vnd_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) END AS total_peso, trunc( CASE WHEN vnd_orcamento_item_especificacao.largura = 0::numeric AND vnd_orcamento_item_especificacao.diametro_estribo = 0::numeric THEN trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia, vnd_orcamento_item_especificacao.sequencia_dimensao), 0.000000), 6) ELSE trunc(COALESCE(fnc_calcula_peso_ferragem_detalhe_dimensao_item(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia, vnd_orcamento_item_especificacao.sequencia_dimensao, vnd_orcamento_item_especificacao_detalhe.sequencia), 0.000000), 6) END * COALESCE(vnd_orcamento_item_especificacao.preco_kg, 0.000000), 6) AS total_valor FROM vnd_orcamento JOIN vnd_orcamento_item ON vnd_orcamento_item.filial_orc = vnd_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_orcamento.orcamento JOIN pro_produto ON vnd_orcamento_item.produto = pro_produto.codigo 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_especificacao.filial AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item_especificacao.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item_especificacao.sequencia_item AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao pro_esp_verg_espc ON pro_esp_verg_espc.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao LEFT JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_espc.produto_ref WHERE vnd_orcamento.situacao = 'A' AND vnd_orcamento.tipo <> 'O' AND vnd_orcamento.gerou_nf_caixa = 'S' AND vnd_orcamento.venda_sn = 'S' UNION ALL SELECT vnd_orcamento_item.filial_orc AS filial, to_char(vnd_orcamento_item.data_emissao::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_orcamento_item.data_emissao::timestamp with time zone, 'mm'::text) AS mes, vnd_orcamento.vendedor, vnd_orcamento.cliente, prd_ref.codigo AS produto_ref, prd_ref.descricao AS produto_ref_descr, COALESCE(vnd_orcamento_item_especificacao.cod_especificacao_estribo, 0) AS codigo, COALESCE(pro_esp_verg_estr.descricao, ''::character varying) AS descricao, CASE WHEN vnd_orcamento_item_especificacao_detalhe.sequencia = 1 THEN trunc(COALESCE(fnc_calcula_peso_ferragem_especificacao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia), 0.000000), 6) ELSE 0.000000 END AS total_peso, trunc( CASE WHEN vnd_orcamento_item_especificacao_detalhe.sequencia = 1 THEN trunc(COALESCE(fnc_calcula_peso_ferragem_especificacao(vnd_orcamento_item.filial_orc, vnd_orcamento_item.orcamento, vnd_orcamento_item.sequencia), 0.000000), 6) ELSE 0.000000 END * COALESCE(vnd_orcamento_item_especificacao.preco_kg, 0.000000), 6) AS total_valor FROM vnd_orcamento JOIN vnd_orcamento_item ON vnd_orcamento_item.filial_orc = vnd_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_orcamento.orcamento JOIN pro_produto ON vnd_orcamento_item.produto = pro_produto.codigo 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_especificacao.filial AND vnd_orcamento_item_especificacao_detalhe.orcamento = vnd_orcamento_item_especificacao.orcamento AND vnd_orcamento_item_especificacao_detalhe.sequencia_item = vnd_orcamento_item_especificacao.sequencia_item AND vnd_orcamento_item_especificacao_detalhe.sequencia_dimensao = vnd_orcamento_item_especificacao.sequencia_dimensao LEFT JOIN pro_especificacao_vergalhao pro_esp_verg_estr ON pro_esp_verg_estr.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo LEFT JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_estr.produto_ref WHERE vnd_orcamento.situacao = 'A' AND vnd_orcamento.tipo <> 'O' AND vnd_orcamento.gerou_nf_caixa = 'S' AND vnd_orcamento.venda_sn = 'S' ) tabaux WHERE tabaux.codigo <> 0 GROUP BY tabaux.filial, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.cliente, tabaux.produto_ref, tabaux.produto_ref_descr, tabaux.codigo, tabaux.descricao ORDER BY tabaux.filial, tabaux.ano, tabaux.mes, tabaux.codigo, tabaux.descricao; ALTER TABLE public.view_vnd_padrao_ferragem OWNER TO postgres; COMMENT ON VIEW public.view_vnd_padrao_ferragem IS 'View PadrĂ£o de Vendas - Ferragem';