DROP VIEW public.view_com_necessida_compra; DROP VIEW public.view_com_necessida_compra_ano_mes; CREATE OR REPLACE VIEW public.view_com_necessidade_compra AS SELECT view_com_necessidade_compra.filial_pro, view_com_necessidade_compra.produto, COALESCE(sum(view_com_necessidade_compra.quantidade), 0.000000) AS quantidade, view_com_necessidade_compra.data_passou_cx, COALESCE(sum(view_com_necessidade_compra.qtd_item_dev), 0.000000) AS qtd_item_dev, COALESCE(sum(view_com_necessidade_compra.quantidade) - COALESCE(sum(view_com_necessidade_compra.qtd_item_dev), 0.000000), 0.000000) AS qtd_tot_liquido, view_com_necessidade_compra.almox_vnd FROM ( SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, COALESCE(sum(vnd_orcamento_item.quantidade), 0.000000) AS quantidade, vnd_orcamento.data_passou_cx, 0 AS qtd_item_dev, COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1) AS almox_vnd 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 LEFT JOIN vnd_orcamento_item_cpl ON vnd_orcamento_item_cpl.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_cpl.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_cpl.sequencia = vnd_orcamento_item.sequencia JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento_item.filial_orc AND par_faturamento.codigo = 1 WHERE vnd_orcamento.venda_sn::text = 'S'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.tipo::text != 'O'::text AND (vnd_orcamento.situacao::text = 'A'::text OR par_faturamento.utiliza_data_view_padrao::text = 'T'::text) AND NOT ((vnd_orcamento.filial_orc, vnd_orcamento.orcamento) IN ( SELECT vnd_pagto_ped.filial, vnd_pagto_ped.nr_pedido FROM vnd_pagto_ped JOIN bas_tipo_pagto ON vnd_pagto_ped.tipo_pgto = bas_tipo_pagto.codigo WHERE vnd_pagto_ped.filial = vnd_orcamento.filial_orc AND vnd_pagto_ped.nr_pedido = vnd_orcamento.orcamento AND (bas_tipo_pagto.soma_estatist::text = 'N'::text OR vnd_pagto_ped.tipo_pgto = par_faturamento.tipo_pgto_troco))) GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, vnd_orcamento.data_passou_cx, (COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1)) UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, vnd_cancela_orcamento.data_cancelamento AS data_passou_cx, COALESCE(sum(vnd_orcamento_item.quantidade), 0.000000) AS qtd_item_dev, COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1) AS almox_vnd 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 LEFT JOIN vnd_orcamento_item_cpl ON vnd_orcamento_item_cpl.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_cpl.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_cpl.sequencia = vnd_orcamento_item.sequencia JOIN vnd_cancela_orcamento ON vnd_orcamento_item.filial_orc = vnd_cancela_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_cancela_orcamento.orcamento JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento_item.filial_orc AND par_faturamento.codigo = 1 WHERE vnd_orcamento.venda_sn::text = 'S'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.situacao::text = 'C'::text AND par_faturamento.utiliza_data_view_padrao::text = 'T'::text AND vnd_orcamento.tipo::text != 'O'::text AND NOT ((vnd_orcamento.filial_orc, vnd_orcamento.orcamento) IN ( SELECT vnd_pagto_ped.filial, vnd_pagto_ped.nr_pedido FROM vnd_pagto_ped JOIN bas_tipo_pagto ON vnd_pagto_ped.tipo_pgto = bas_tipo_pagto.codigo WHERE vnd_pagto_ped.filial = vnd_orcamento.filial_orc AND vnd_pagto_ped.nr_pedido = vnd_orcamento.orcamento AND (bas_tipo_pagto.soma_estatist::text = 'N'::text OR vnd_pagto_ped.tipo_pgto = par_faturamento.tipo_pgto_troco))) GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, vnd_cancela_orcamento.data_cancelamento, (COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1)), vnd_orcamento_item.sequencia UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, gar_troca_devoluc.data_emissao AS data_passou_cx, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM vnd_orcamento JOIN vnd_orcamento_item ON vnd_orcamento.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento.orcamento = vnd_orcamento_item.orcamento JOIN gar_troca_devoluc ON vnd_orcamento_item.filial_orc = gar_troca_devoluc.filial AND vnd_orcamento_item.orcamento = gar_troca_devoluc.orcamento JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia AND gar_troca_devoluc_item.filial_pro = vnd_orcamento_item.filial_pro AND gar_troca_devoluc_item.produto = vnd_orcamento_item.produto AND gar_troca_devoluc_item.sequencia_item_pedido = vnd_orcamento_item.sequencia JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento_item.filial_orc AND par_faturamento.codigo = 1 WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND vnd_orcamento.situacao::text <> 'C'::text AND par_faturamento.utiliza_data_view_padrao::text = 'T'::text GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, gar_troca_devoluc.data_emissao, gar_troca_devoluc_item.almoxarifado UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, vnd_orcamento.data_passou_cx, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM vnd_orcamento JOIN vnd_orcamento_item ON vnd_orcamento.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento.orcamento = vnd_orcamento_item.orcamento JOIN gar_troca_devoluc ON vnd_orcamento_item.filial_orc = gar_troca_devoluc.filial AND vnd_orcamento_item.orcamento = gar_troca_devoluc.orcamento JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia AND gar_troca_devoluc_item.filial_pro = vnd_orcamento_item.filial_pro AND gar_troca_devoluc_item.produto = vnd_orcamento_item.produto AND gar_troca_devoluc_item.sequencia_item_pedido = vnd_orcamento_item.sequencia JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento_item.filial_orc AND par_faturamento.codigo = 1 WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND vnd_orcamento.situacao::text <> 'C'::text AND par_faturamento.utiliza_data_view_padrao::text <> 'T'::text GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, vnd_orcamento.data_passou_cx, gar_troca_devoluc_item.almoxarifado UNION SELECT gar_troca_devoluc_item.filial_pro AS filial_pro, gar_troca_devoluc_item.produto, 0 AS quantidade, gar_troca_devoluc.data_emissao AS data_passou_cx, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM gar_troca_devoluc JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia JOIN par_faturamento ON par_faturamento.filial_par = gar_troca_devoluc.filial AND par_faturamento.codigo = 1 WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND NOT ((gar_troca_devoluc.filial_orc, gar_troca_devoluc.orcamento) IN ( SELECT vnd_orcamento.filial_orc, vnd_orcamento.orcamento FROM vnd_orcamento WHERE vnd_orcamento.filial_orc = gar_troca_devoluc.filial_orc AND vnd_orcamento.orcamento = gar_troca_devoluc.orcamento)) AND par_faturamento.utiliza_troca_sem_pedido_view_padrao::text = 'S'::text GROUP BY gar_troca_devoluc_item.filial_pro, gar_troca_devoluc_item.produto, gar_troca_devoluc.data_emissao, gar_troca_devoluc_item.almoxarifado) view_com_necessidade_compra GROUP BY view_com_necessidade_compra.filial_pro, view_com_necessidade_compra.produto, view_com_necessidade_compra.data_passou_cx, view_com_necessidade_compra.almox_vnd; ALTER TABLE public.view_com_necessidade_compra OWNER TO postgres; COMMENT ON VIEW public.view_com_necessidade_compra IS 'View Padrão para Estatisticas de Vendas'; -- View: public.view_com_necessidade_compra_ano_mes -- View: public.view_com_necessidade_compra_ano_mes CREATE OR REPLACE VIEW public.view_com_necessidade_compra_ano_mes AS SELECT view_com_necessidade_compra_ano_mes.filial_pro, view_com_necessidade_compra_ano_mes.produto, COALESCE(sum(view_com_necessidade_compra_ano_mes.quantidade), 0.000000) AS quantidade, view_com_necessidade_compra_ano_mes.ano_mes, COALESCE(sum(view_com_necessidade_compra_ano_mes.qtd_item_dev), 0.000000) AS qtd_item_dev, COALESCE(sum(view_com_necessidade_compra_ano_mes.quantidade) - COALESCE(sum(view_com_necessidade_compra_ano_mes.qtd_item_dev), 0.000000), 0.000000) AS qtd_tot_liquido, view_com_necessidade_compra_ano_mes.almox_vnd FROM (SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, COALESCE(sum(vnd_orcamento_item.quantidade), 0.000000) AS quantidade, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYYmm'::text) AS ano_mes, 0 AS qtd_item_dev, COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1) AS almox_vnd FROM vnd_orcamento JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento.filial_orc AND par_faturamento.codigo = 1 JOIN vnd_orcamento_item ON vnd_orcamento_item.filial_orc = vnd_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_orcamento.orcamento LEFT JOIN vnd_orcamento_item_cpl ON vnd_orcamento_item_cpl.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_cpl.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_cpl.sequencia = vnd_orcamento_item.sequencia WHERE vnd_orcamento.venda_sn::text = 'S'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.tipo::text != 'O'::text AND (vnd_orcamento.situacao::text = 'A'::text OR par_faturamento.utiliza_data_view_padrao::text = 'T'::text) AND NOT ((vnd_orcamento.filial_orc, vnd_orcamento.orcamento) IN ( SELECT vnd_pagto_ped.filial, vnd_pagto_ped.nr_pedido FROM vnd_pagto_ped JOIN bas_tipo_pagto ON vnd_pagto_ped.tipo_pgto = bas_tipo_pagto.codigo WHERE vnd_pagto_ped.filial = vnd_orcamento.filial_orc AND vnd_pagto_ped.nr_pedido = vnd_orcamento.orcamento AND (bas_tipo_pagto.soma_estatist::text = 'N'::text OR vnd_pagto_ped.tipo_pgto = par_faturamento.tipo_pgto_troco))) GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, (to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYYmm'::text)), (COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1)) UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, to_char(vnd_cancela_orcamento.data_cancelamento::timestamp with time zone, 'YYYYmm'::text) AS ano_mes, COALESCE(sum(vnd_orcamento_item.quantidade), 0.000000) AS qtd_item_dev, COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1) AS almox_vnd FROM vnd_orcamento JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento.filial_orc AND par_faturamento.codigo = 1 JOIN vnd_orcamento_item ON vnd_orcamento_item.filial_orc = vnd_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_orcamento.orcamento LEFT JOIN vnd_orcamento_item_cpl ON vnd_orcamento_item_cpl.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento_item_cpl.orcamento = vnd_orcamento_item.orcamento AND vnd_orcamento_item_cpl.sequencia = vnd_orcamento_item.sequencia JOIN vnd_cancela_orcamento ON vnd_orcamento_item.filial_orc = vnd_cancela_orcamento.filial_orc AND vnd_orcamento_item.orcamento = vnd_cancela_orcamento.orcamento WHERE vnd_orcamento.venda_sn::text = 'S'::text AND vnd_orcamento.gerou_nf_caixa::text = 'S'::text AND vnd_orcamento.situacao::text = 'C'::text AND par_faturamento.utiliza_data_view_padrao::text = 'T'::text AND vnd_orcamento.tipo::text != 'O'::text AND NOT ((vnd_orcamento.filial_orc, vnd_orcamento.orcamento) IN ( SELECT vnd_pagto_ped.filial, vnd_pagto_ped.nr_pedido FROM vnd_pagto_ped JOIN bas_tipo_pagto ON vnd_pagto_ped.tipo_pgto = bas_tipo_pagto.codigo WHERE vnd_pagto_ped.filial = vnd_orcamento.filial_orc AND vnd_pagto_ped.nr_pedido = vnd_orcamento.orcamento AND (bas_tipo_pagto.soma_estatist::text = 'N'::text OR vnd_pagto_ped.tipo_pgto = par_faturamento.tipo_pgto_troco))) GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, (to_char(vnd_cancela_orcamento.data_cancelamento::timestamp with time zone, 'YYYYmm'::text)), (COALESCE(vnd_orcamento_item_cpl.almox_vnd, 1)) UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, to_char(gar_troca_devoluc.data_emissao::timestamp with time zone, 'YYYYmm'::text) AS ano_mes, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM vnd_orcamento JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento.filial_orc AND par_faturamento.codigo = 1 JOIN vnd_orcamento_item ON vnd_orcamento.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento.orcamento = vnd_orcamento_item.orcamento JOIN gar_troca_devoluc ON vnd_orcamento_item.filial_orc = gar_troca_devoluc.filial AND vnd_orcamento_item.orcamento = gar_troca_devoluc.orcamento JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia AND gar_troca_devoluc_item.filial_pro = vnd_orcamento_item.filial_pro AND gar_troca_devoluc_item.produto = vnd_orcamento_item.produto AND gar_troca_devoluc_item.sequencia_item_pedido = vnd_orcamento_item.sequencia WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND vnd_orcamento.situacao::text <> 'C'::text AND par_faturamento.utiliza_data_view_padrao::text = 'T'::text GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, (to_char(gar_troca_devoluc.data_emissao::timestamp with time zone, 'YYYYmm'::text)), gar_troca_devoluc_item.almoxarifado UNION SELECT vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, 0 AS quantidade, to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYYmm'::text) AS ano_mes, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM vnd_orcamento JOIN par_faturamento ON par_faturamento.filial_par = vnd_orcamento.filial_orc AND par_faturamento.codigo = 1 JOIN vnd_orcamento_item ON vnd_orcamento.filial_orc = vnd_orcamento_item.filial_orc AND vnd_orcamento.orcamento = vnd_orcamento_item.orcamento JOIN gar_troca_devoluc ON vnd_orcamento_item.filial_orc = gar_troca_devoluc.filial AND vnd_orcamento_item.orcamento = gar_troca_devoluc.orcamento JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia AND gar_troca_devoluc_item.filial_pro = vnd_orcamento_item.filial_pro AND gar_troca_devoluc_item.produto = vnd_orcamento_item.produto AND gar_troca_devoluc_item.sequencia_item_pedido = vnd_orcamento_item.sequencia WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND vnd_orcamento.situacao::text <> 'C'::text AND par_faturamento.utiliza_data_view_padrao::text <> 'T'::text GROUP BY vnd_orcamento_item.filial_pro, vnd_orcamento_item.produto, (to_char(vnd_orcamento.data_passou_cx::timestamp with time zone, 'YYYYmm'::text)), gar_troca_devoluc_item.almoxarifado UNION SELECT gar_troca_devoluc_item.filial_pro AS filial_pro, gar_troca_devoluc_item.produto, 0 AS quantidade, to_char(gar_troca_devoluc.data_emissao::timestamp with time zone, 'YYYYmm'::text) AS ano_mes, sum(gar_troca_devoluc_item.quantidade) AS qtd_item_dev, gar_troca_devoluc_item.almoxarifado AS almox_vnd FROM gar_troca_devoluc JOIN par_faturamento ON par_faturamento.filial_par = gar_troca_devoluc.filial AND par_faturamento.codigo = 1 JOIN gar_troca_devoluc_item ON gar_troca_devoluc_item.filial = gar_troca_devoluc.filial AND gar_troca_devoluc_item.sequencia = gar_troca_devoluc.sequencia WHERE gar_troca_devoluc.situacao::text <> 'C'::text AND NOT ((gar_troca_devoluc.filial_orc, gar_troca_devoluc.orcamento) IN ( SELECT vnd_orcamento.filial_orc, vnd_orcamento.orcamento FROM vnd_orcamento WHERE vnd_orcamento.filial_orc = gar_troca_devoluc.filial_orc AND vnd_orcamento.orcamento = gar_troca_devoluc.orcamento)) AND par_faturamento.utiliza_troca_sem_pedido_view_padrao::text = 'S'::text GROUP BY gar_troca_devoluc_item.filial_pro, gar_troca_devoluc_item.produto, (to_char(gar_troca_devoluc.data_emissao::timestamp with time zone, 'YYYYmm'::text)), gar_troca_devoluc_item.almoxarifado) view_com_necessidade_compra_ano_mes GROUP BY view_com_necessidade_compra_ano_mes.filial_pro, view_com_necessidade_compra_ano_mes.produto, view_com_necessidade_compra_ano_mes.ano_mes, view_com_necessidade_compra_ano_mes.almox_vnd; ALTER TABLE public.view_com_necessidade_compra_ano_mes OWNER TO postgres; COMMENT ON VIEW public.view_com_necessidade_compra_ano_mes IS 'View Padrão para Estatisticas de Vendas';