DROP VIEW public.view_dis_romaneio_producao_peso; DROP VIEW public.view_dis_romaneio_producao; CREATE INDEX idx_vnd_orcamento_sit_cx_sep_tip ON public.vnd_orcamento USING btree (situacao ASC NULLS LAST, gerou_nf_caixa ASC NULLS LAST, liberado_separacao ASC NULLS LAST, tipo ASC NULLS LAST) TABLESPACE pg_default; -- View: public.view_dis_romaneio_producao CREATE OR REPLACE VIEW public.view_dis_romaneio_producao AS SELECT tabyy.filial, tabyy.orcamento, tabyy.endereco_entrega, tabyy.cliente, tabyy.nome, tabyy.uf, tabyy.cidade, tabyy.bairro, tabyy.sequencia, tabyy.produto, tabyy.descricao, tabyy.unidade, tabyy.tipo_entrega, tabyy.observacao, tabyy.ordem_producao, tabyy.situacao, tabyy.data_prev_entrega, tabyy.produto_servico, tabyy.qtd_venda, tabyy.qtd_a_prod, tabyy.qtd_ja_prod, tabyy.qtd_dis, tabyy.qtd_ja_ent, tabyy.qtd_a_ent, tabyy.status, tabyy.qtd_disp_entrega FROM ( SELECT tabaux.filial, tabaux.orcamento, tabaux.endereco_entrega, tabaux.cliente, tabaux.nome, tabaux.uf, tabaux.cidade, tabaux.bairro, tabaux.sequencia, tabaux.produto, tabaux.descricao, tabaux.unidade, tabaux.produto_servico, tabaux.qtd_venda, tabaux.tipo_entrega, tabaux.observacao, tabaux.ordem_producao, tabaux.qtd_a_prod, tabaux.qtd_ja_prod, tabaux.situacao, tabaux.data_prev_entrega, tabaux.qtd_dis, tabaux.qtd_ja_ent, CASE WHEN tabaux.produto_servico::text = 'P'::text THEN tabaux.qtd_venda - (tabaux.qtd_dis + tabaux.qtd_ja_ent) WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao = 0 THEN tabaux.qtd_venda - (tabaux.qtd_dis + tabaux.qtd_ja_ent) WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 THEN tabaux.qtd_a_prod - (tabaux.qtd_dis + tabaux.qtd_ja_ent) ELSE NULL::numeric END::numeric(18,6) AS qtd_a_ent, CASE WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 AND tabaux.qtd_ja_prod = tabaux.qtd_venda THEN '1'::text WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 AND tabaux.qtd_ja_prod > 0::numeric AND tabaux.qtd_ja_prod < tabaux.qtd_venda THEN '2'::text WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 AND tabaux.qtd_ja_prod = 0::numeric THEN '3'::text WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao = 0 THEN '3'::text WHEN tabaux.produto_servico::text = 'P'::text THEN '1'::text ELSE NULL::text END AS status, CASE WHEN tabaux.produto_servico::text = 'P'::text THEN tabaux.qtd_venda - (tabaux.qtd_dis + tabaux.qtd_ja_ent) WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao = 0 THEN 0.000000 WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 AND tabaux.qtd_ja_prod = 0::numeric THEN 0.000000 WHEN tabaux.produto_servico::text = 'F'::text AND tabaux.ordem_producao <> 0 AND tabaux.qtd_ja_prod > 0::numeric THEN tabaux.qtd_ja_prod - (tabaux.qtd_dis + tabaux.qtd_ja_ent) ELSE NULL::numeric END::numeric(18,6) AS qtd_disp_entrega FROM ( SELECT tabx.filial, tabx.orcamento, tabx.endereco_entrega, tabx.cliente, tabx.nome, tabx.uf, tabx.cidade, tabx.bairro, tabx.sequencia, tabx.produto, tabx.descricao, tabx.unidade, tabx.produto_servico, tabx.qtd_venda, tabx.tipo_entrega, tabx.observacao, tabx.ordem_producao, tabx.qtd_a_prod, tabx.qtd_ja_prod, tabx.situacao, tabx.data_prev_entrega, sum(tabx.qtd_dis) AS qtd_dis, sum(tabx.qtd_ja_ent) AS qtd_ja_ent FROM ( SELECT vnd_orcamento.filial_orc AS filial, vnd_orcamento.orcamento, vnd_orcamento.endereco_entrega, vnd_orcamento.cliente, cli_cliente.nome, cli_endereco.uf, cli_endereco.cidade, cli_endereco.bairro, vnd_orcamento_item.sequencia, vnd_orcamento_item.produto, pro_produto.descricao, pro_produto.unidade, pro_produto.produto_servico, vnd_orcamento_item.quantidade AS qtd_venda, vnd_orcamento_item.tipo_entrega, vnd_orcamento_item.observacao, COALESCE(prd_ordem_producao.ordem_producao, 0) AS ordem_producao, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND COALESCE(prd_ordem_producao.ordem_producao, 0) = 0 THEN COALESCE(vnd_orcamento_item.quantidade, 0.000000) ELSE COALESCE(prd_ordem_producao.quantidade_pecas, 0.000000)::numeric(18,6) END::numeric(18,6) AS qtd_a_prod, COALESCE(( SELECT sum(prd_baixa_producao.quantidade_produzida) AS sum FROM prd_baixa_producao WHERE prd_baixa_producao.filial = prd_ordem_producao.filial AND prd_baixa_producao.ordem_producao = prd_ordem_producao.ordem_producao AND prd_baixa_producao.situacao::text = 'A'::text), 0.000000)::numeric(18,6) AS qtd_ja_prod, CASE WHEN prd_ordem_producao.situacao IS NULL THEN 'N'::character varying ELSE prd_ordem_producao.situacao END AS situacao, CASE WHEN prd_ordem_producao_data_prev_entrega.data_prev_entrega IS NULL THEN vnd_orcamento.data_previsao_entrega ELSE prd_ordem_producao_data_prev_entrega.data_prev_entrega END AS data_prev_entrega, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND dis_romaneio_item_ord_producao.ordem_producao IS NULL THEN 0.000000 WHEN dis_romaneio.situacao = 'C'::bpchar THEN 0.000000 ELSE sum(COALESCE(dis_romaneio_item.qtd_total - dis_romaneio_item.qtd_entregue, 0.000000))::numeric(18,6) END AS qtd_dis, CASE WHEN pro_produto.produto_servico::text = 'F'::text AND dis_romaneio_item_ord_producao.ordem_producao IS NULL THEN 0.000000 WHEN dis_romaneio.situacao = 'C'::bpchar THEN 0.000000 ELSE sum(COALESCE(dis_romaneio_item.qtd_entregue, 0.000000))::numeric(18,6) END AS qtd_ja_ent FROM vnd_orcamento LEFT JOIN vnd_orcamento_item ON vnd_orcamento_item.filial_orc = vnd_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_orcamento.orcamento LEFT JOIN prd_ordem_producao_x_pedido ON prd_ordem_producao_x_pedido.filial_pedido = vnd_orcamento_item.filial_pro AND prd_ordem_producao_x_pedido.pedido = vnd_orcamento_item.orcamento AND prd_ordem_producao_x_pedido.pedido_seq_item = vnd_orcamento_item.sequencia LEFT 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 LEFT JOIN prd_ordem_producao_data_prev_entrega ON prd_ordem_producao_data_prev_entrega.filial = prd_ordem_producao.filial AND prd_ordem_producao_data_prev_entrega.ordem_producao = prd_ordem_producao.ordem_producao LEFT JOIN cli_cliente ON cli_cliente.filial = vnd_orcamento.filial_cli AND cli_cliente.codigo = vnd_orcamento.cliente LEFT JOIN cli_endereco ON cli_endereco.filial = vnd_orcamento.filial_cli AND cli_endereco.cliente = vnd_orcamento.cliente AND cli_endereco.sequencia = vnd_orcamento.endereco_entrega LEFT JOIN dis_romaneio_item ON dis_romaneio_item.filial = vnd_orcamento_item.filial_orc AND dis_romaneio_item.orcamento = vnd_orcamento_item.orcamento AND dis_romaneio_item.seq_item_orcamento = vnd_orcamento_item.sequencia LEFT JOIN dis_romaneio ON dis_romaneio.filial = dis_romaneio.filial AND dis_romaneio.romaneio = dis_romaneio_item.romaneio LEFT JOIN dis_romaneio_item_ord_producao ON dis_romaneio_item_ord_producao.filial = dis_romaneio_item.filial AND dis_romaneio_item_ord_producao.romaneio = dis_romaneio_item.romaneio AND dis_romaneio_item_ord_producao.orcamento = dis_romaneio_item.orcamento AND dis_romaneio_item_ord_producao.seq_item_orcamento = dis_romaneio_item.seq_item_orcamento AND dis_romaneio_item_ord_producao.ordem_producao = prd_ordem_producao.ordem_producao LEFT JOIN pro_produto ON pro_produto.filial_pro = vnd_orcamento_item.filial_pro AND pro_produto.codigo = vnd_orcamento_item.produto WHERE vnd_orcamento.situacao::text = 'A'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.liberado_separacao::text = 'S'::text AND vnd_orcamento.tipo::text <> 'O'::text GROUP BY vnd_orcamento.filial_orc, prd_ordem_producao.filial, vnd_orcamento.orcamento, vnd_orcamento.endereco_entrega, vnd_orcamento.cliente, cli_cliente.nome, cli_endereco.uf, cli_endereco.cidade, cli_endereco.bairro, vnd_orcamento_item.sequencia, vnd_orcamento_item.produto, pro_produto.descricao, pro_produto.unidade, pro_produto.produto_servico, vnd_orcamento_item.quantidade, vnd_orcamento_item.tipo_entrega, vnd_orcamento_item.observacao, prd_ordem_producao.ordem_producao, prd_ordem_producao.quantidade_pecas, prd_ordem_producao.situacao, prd_ordem_producao_data_prev_entrega.data_prev_entrega, dis_romaneio_item_ord_producao.ordem_producao, dis_romaneio.situacao) tabx GROUP BY tabx.filial, tabx.orcamento, tabx.endereco_entrega, tabx.cliente, tabx.nome, tabx.uf, tabx.cidade, tabx.bairro, tabx.sequencia, tabx.produto, tabx.descricao, tabx.unidade, tabx.produto_servico, tabx.qtd_venda, tabx.tipo_entrega, tabx.observacao, tabx.ordem_producao, tabx.qtd_a_prod, tabx.qtd_ja_prod, tabx.situacao, tabx.data_prev_entrega) tabaux) tabyy WHERE tabyy.qtd_a_ent > 0::numeric; ALTER TABLE public.view_dis_romaneio_producao OWNER TO postgres; COMMENT ON VIEW public.view_dis_romaneio_producao IS 'View para Montar Romaneio pela Producao'; -- 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';