-- View: public.view_com_necessidade_compra_ano_mes DROP 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 ALL 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 ALL 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 ALL 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 ALL SELECT gar_troca_devoluc_item.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';