-- View: public.view_dis_romaneio_producao -- DROP 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 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 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 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 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 pro_produto ON pro_produto.filial_pro = vnd_orcamento_item.filial_pro AND pro_produto.codigo = vnd_orcamento_item.produto 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 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 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_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 INNER JOIN bas_tipo_entrega ON vnd_orcamento_item.tipo_entrega = bas_tipo_entrega.codigo 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.liberado_separacao::text = 'S'::text AND bas_tipo_entrega.distribuicao::text = 'S'::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) 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';