DROP VIEW public.view_dis_romaneio_producao_peso; DROP VIEW public.view_vnd_padrao_ferragem; -- View: public.view_vnd_padrao_ferragem CREATE OR REPLACE VIEW public.view_vnd_padrao_ferragem AS SELECT tabaux.filial, tabaux.tipo, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.cliente, tabaux.orcamento, tabaux.data, tabaux.sequencia, tabaux.qtd_vda, tabaux.produto, tabaux.produto_ref, tabaux.produto_ref_descr, tabaux.codigo, tabaux.descricao, round(sum(tabaux.total_peso), 6) AS total_peso, round(sum(tabaux.total_valor), 6) AS total_valor, round(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, tabaux.tipo_linha FROM ( SELECT vnd_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'mm'::text) AS mes, vnd_orcamento.vendedor, vnd_orcamento.cliente, vnd_orcamento.orcamento, vnd_orcamento.data_passou_cx AS data, vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade AS qtd_vda, vnd_orcamento_item.produto, 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, 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(( SELECT sum(COALESCE(view_vnd_calcula_bitola.orc_vlr_total, 0.000000)) / (sum(COALESCE(view_vnd_calcula_bitola.det_peso, 0.000000)) + sum(COALESCE(view_vnd_calcula_bitola.esp_peso, 0.000000))) FROM view_vnd_calcula_bitola WHERE view_vnd_calcula_bitola.orcamento = vnd_orcamento_item.orcamento AND view_vnd_calcula_bitola.sequencia = vnd_orcamento_item.sequencia), 0.000000) * (vnd_orcamento.vlr_total_liquido / vnd_orcamento.vlr_total_bruto) AS total_valor, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_orcamento_item.produto = prd_ref.codigo AND vnd_orcamento_item.produto = COALESCE(vnd_orcamento_item_especificacao_detalhe.cod_especificacao, 0) THEN 0 ELSE 1 END AS tipo_linha 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 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 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 JOIN pro_especificacao_vergalhao pro_esp_verg_espc ON pro_esp_verg_espc.codigo = vnd_orcamento_item_especificacao_detalhe.cod_especificacao JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_espc.produto_ref WHERE vnd_orcamento.situacao::text = 'A'::text AND vnd_orcamento.tipo::text <> 'O'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.venda_sn::text = 'S'::text UNION ALL SELECT vnd_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'mm'::text) AS mes, vnd_orcamento.vendedor, vnd_orcamento.cliente, vnd_orcamento.orcamento, vnd_orcamento.data_passou_cx AS data, vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade AS qtd_vda, vnd_orcamento_item.produto, 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, 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(( SELECT sum(COALESCE(view_vnd_calcula_bitola.orc_vlr_total, 0.000000)) / (sum(COALESCE(view_vnd_calcula_bitola.det_peso, 0.000000)) + sum(COALESCE(view_vnd_calcula_bitola.esp_peso, 0.000000))) FROM view_vnd_calcula_bitola WHERE view_vnd_calcula_bitola.orcamento = vnd_orcamento_item.orcamento AND view_vnd_calcula_bitola.sequencia = vnd_orcamento_item.sequencia), 0.000000) * (vnd_orcamento.vlr_total_liquido / vnd_orcamento.vlr_total_bruto) AS total_valor, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_orcamento_item.produto = prd_ref.codigo AND vnd_orcamento_item.produto = COALESCE(vnd_orcamento_item_especificacao.cod_especificacao_estribo, 0) THEN 0 ELSE 1 END AS tipo_linha 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 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 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 JOIN pro_especificacao_vergalhao pro_esp_verg_estr ON pro_esp_verg_estr.codigo = vnd_orcamento_item_especificacao.cod_especificacao_estribo JOIN pro_produto prd_ref ON prd_ref.codigo = pro_esp_verg_estr.produto_ref WHERE vnd_orcamento.situacao::text = 'A'::text AND vnd_orcamento.tipo::text <> 'O'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.venda_sn::text = 'S'::text UNION ALL SELECT vnd_orcamento_item.filial_orc AS filial, pro_produto.produto_servico AS tipo, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYY'::text) AS ano, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'mm'::text) AS mes, vnd_orcamento.vendedor, vnd_orcamento.cliente, vnd_orcamento.orcamento, vnd_orcamento.data_passou_cx AS data, vnd_orcamento_item.sequencia, vnd_orcamento_item.quantidade AS qtd_vda, vnd_orcamento_item.produto, pro_produto.codigo AS produto_ref, pro_produto.descricao AS produto_ref_descr, pro_produto.codigo, pro_produto.descricao, vnd_orcamento_item.quantidade AS total_peso, vnd_orcamento_item.vlr_total * (vnd_orcamento.vlr_total_liquido / vnd_orcamento.vlr_total_bruto) AS total_valor, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND pro_produto.flag_mix::text = 'N'::text AND vnd_orcamento_item.produto = pro_produto.codigo THEN 0 ELSE 1 END AS tipo_linha 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::text = 'A'::text AND vnd_orcamento.tipo::text <> 'O'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.venda_sn::text = 'S'::text AND pro_produto.produto_servico::text <> 'S'::text ) tabaux GROUP BY tabaux.filial, tabaux.tipo, tabaux.ano, tabaux.mes, tabaux.vendedor, tabaux.cliente, tabaux.orcamento, tabaux.data, 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 OWNER TO postgres; COMMENT ON VIEW public.view_vnd_padrao_ferragem IS 'View Padrao de Vendas - Ferragem'; -- View: public.view_dis_romaneio_producao_peso CREATE OR REPLACE VIEW public.view_dis_romaneio_producao_peso AS SELECT tabela_ax.filial, tabela_ax.data_prev_entrega, tabela_ax.orcamento, tabela_ax.cliente, tabela_ax.nome, tabela_ax.uf, tabela_ax.cidade, tabela_ax.bairro, tabela_ax.peso, tabela_ax.status FROM ( SELECT tabaux.filial, COALESCE(( SELECT max(tblentg.data_prev_entrega) AS max FROM view_dis_romaneio_producao tblentg WHERE tblentg.filial = tabaux.filial AND tblentg.orcamento = tabaux.orcamento AND tblentg.situacao::text <> 'B'::text LIMIT 1), tabaux.data_prev_entrega) AS data_prev_entrega, tabaux.orcamento, tabaux.cliente, tabaux.nome, tabaux.uf, tabaux.cidade, tabaux.bairro, trunc(COALESCE(( SELECT sum(view_vnd_padrao_ferragem.total_peso) AS sum FROM view_vnd_padrao_ferragem WHERE view_vnd_padrao_ferragem.filial = tabaux.filial AND view_vnd_padrao_ferragem.orcamento = tabaux.orcamento), 0.000000), 6) AS peso, COALESCE(tabaux.status, '3'::text) AS status FROM ( SELECT view_dis_romaneio_producao.filial, view_dis_romaneio_producao.orcamento, view_dis_romaneio_producao.endereco_entrega, view_dis_romaneio_producao.cliente, substr(upper(view_dis_romaneio_producao.nome::text), 0, 30) AS nome, view_dis_romaneio_producao.uf, substr(upper(view_dis_romaneio_producao.cidade::text), 0, 30) AS cidade, substr(upper(view_dis_romaneio_producao.bairro::text), 0, 30) AS bairro, view_dis_romaneio_producao.sequencia, view_dis_romaneio_producao.produto, substr(view_dis_romaneio_producao.descricao::text, 1, 20) AS descricao, view_dis_romaneio_producao.unidade, view_dis_romaneio_producao.produto_servico, view_dis_romaneio_producao.tipo_entrega, view_dis_romaneio_producao.observacao, view_dis_romaneio_producao.ordem_producao, view_dis_romaneio_producao.qtd_venda, view_dis_romaneio_producao.qtd_a_prod, view_dis_romaneio_producao.qtd_ja_prod, view_dis_romaneio_producao.situacao, view_dis_romaneio_producao.data_prev_entrega, view_dis_romaneio_producao.qtd_dis, view_dis_romaneio_producao.qtd_ja_ent, view_dis_romaneio_producao.qtd_a_ent, CASE WHEN view_dis_romaneio_producao.produto_servico::text = 'F'::text AND view_dis_romaneio_producao.ordem_producao <> 0 AND view_dis_romaneio_producao.qtd_ja_prod > 0::numeric THEN view_dis_romaneio_producao.qtd_ja_prod - view_dis_romaneio_producao.qtd_ja_ent - view_dis_romaneio_producao.qtd_dis WHEN view_dis_romaneio_producao.produto_servico::text = 'F'::text AND view_dis_romaneio_producao.ordem_producao <> 0 AND view_dis_romaneio_producao.qtd_ja_prod = 0::numeric THEN 0::numeric WHEN view_dis_romaneio_producao.produto_servico::text = 'F'::text AND view_dis_romaneio_producao.ordem_producao = 0 THEN 0::numeric WHEN view_dis_romaneio_producao.produto_servico::text = 'P'::text THEN view_dis_romaneio_producao.qtd_venda - view_dis_romaneio_producao.qtd_ja_ent - view_dis_romaneio_producao.qtd_dis ELSE NULL::numeric END AS qtd_aux, ( SELECT max(tblentg.status) AS max FROM view_dis_romaneio_producao tblentg WHERE tblentg.filial = view_dis_romaneio_producao.filial AND tblentg.orcamento = view_dis_romaneio_producao.orcamento AND tblentg.situacao::text <> 'B'::text LIMIT 1) AS status FROM view_dis_romaneio_producao) tabaux WHERE tabaux.qtd_venda <> tabaux.qtd_dis GROUP BY tabaux.filial, tabaux.data_prev_entrega, tabaux.orcamento, tabaux.cliente, tabaux.nome, tabaux.uf, tabaux.cidade, tabaux.bairro, tabaux.status ORDER BY (min(tabaux.data_prev_entrega)), tabaux.orcamento) tabela_ax GROUP BY tabela_ax.filial, tabela_ax.data_prev_entrega, tabela_ax.orcamento, tabela_ax.cliente, tabela_ax.nome, tabela_ax.uf, tabela_ax.cidade, tabela_ax.bairro, tabela_ax.peso, tabela_ax.status ORDER BY tabela_ax.filial, tabela_ax.data_prev_entrega, tabela_ax.orcamento; ALTER TABLE public.view_dis_romaneio_producao_peso OWNER TO postgres; COMMENT ON VIEW public.view_dis_romaneio_producao_peso IS 'View Distribuição Producao com Peso';