-- 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, cli_cliente.nome, cli_endereco.uf, cli_endereco.cidade, cli_endereco.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.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.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, 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 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, 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.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 LEFT JOIN cli_cliente ON cli_cliente.filial = tabyy.filial AND cli_cliente.codigo = tabyy.cliente LEFT JOIN cli_endereco ON cli_endereco.filial = tabyy.filial AND cli_endereco.cliente = tabyy.cliente AND cli_endereco.sequencia = tabyy.endereco_entrega 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';