/// <summary>
        /// Busca todas as importacoes ja concluidas (status 1), tanto da vendas viva quanto
        /// pagamento operadora, e insere na tabela de TBN_RESULTADOPROCESSAMENTO com a data atual e status 6 NAO CONCILIADO
        /// ignora todas as conciliacoes de TBN_PAGAMENTOOPERADORA x TBN_VENDASVIVA ja realizadas, considerando apenas novas conciliacoes
        /// </summary>
        public void Conciliar()
        {
            ImportacaoPlanilhaBLL _bllImportacaoPlanilha = new ImportacaoPlanilhaBLL();
            VendasVivaBLL         _bllVendasViva         = new VendasVivaBLL();
            PagamentoOperadoraBLL _bllPagamentoOperadora = new PagamentoOperadoraBLL();
            bool isProsseguir = false;

            // 1) Busca apenas importações concluídas que tiveram planilhas de loja e operadora
            // ja importadas
            var listaImportacoesConcluidasPorLoja = _bllImportacaoPlanilha.ListaImportacoesConcluidasPorLoja();

            isProsseguir = listaImportacoesConcluidasPorLoja.Count > 0;

            // 2) Busca as lojas que ja tiveram planilhas importadas
            if (isProsseguir)
            {
                var idLojas = listaImportacoesConcluidasPorLoja.GroupBy(p => new { p.idLoja }).Select(x => x.First());
                foreach (var item in idLojas)
                {
                    // 3) Verifica se cada importação concluída possui tipo planilha 1 e 2 concluídas
                    var tipoPlanilha_1 = listaImportacoesConcluidasPorLoja.FindAll(p => p.idLoja == item.idLoja && p.idTipoPlanilha == 1);
                    var tipoPlanilha_2 = listaImportacoesConcluidasPorLoja.FindAll(p => p.idLoja == item.idLoja && p.idTipoPlanilha == 2);

                    // 4) Caso nao exista tipo planilha 1 ou 2, deve desconsiderar a loja na conciliação
                    if (tipoPlanilha_1.Count.Equals(0) || tipoPlanilha_2.Count.Equals(0))
                    {
                        // recupera a lista de lojas para excluir da conciliação, pois nao tem planilha dos 2 tipos ja importadas
                        var listaImportacaoExcluir = listaImportacoesConcluidasPorLoja.FindAll(p => p.idLoja == item.idLoja);
                        foreach (var itemExcluir in listaImportacaoExcluir)
                        {
                            listaImportacoesConcluidasPorLoja.Remove(itemExcluir);
                        }
                    }
                }
            }

            // 5) Verifica se sobrou alguma importação de loja para seguir com a conciliação
            isProsseguir = listaImportacoesConcluidasPorLoja.Count > 0;

            // 6) Reserva todas as importações com status 1 Concluído importação,
            // e trava com status 5 Em processamento
            if (isProsseguir)
            {
                foreach (var item in listaImportacoesConcluidasPorLoja)
                {
                    isProsseguir = _bllImportacaoPlanilha.AtualizarStatusImportacao(item.id, 1, 5);
                }
            }

            // 7) Cria registro de processamento para as importações com status 5
            if (isProsseguir)
            {
                isProsseguir = _dal.Conciliar();
            }

            // 8) Atualizar todos os ID`s da VendasViva processados para
            // status 7 CONCILIADO
            if (isProsseguir)
            {
                isProsseguir = _bllVendasViva.AtualizarStatus(7, "C");
            }

            // 9) Atualizar todos os ID`s da PagamentoOperadora processados
            // para status 7 CONCILIADO
            if (isProsseguir)
            {
                isProsseguir = _bllPagamentoOperadora.AtualizarStatus(7, "C");
            }

            // 10) Atualizar todos os ID`s da VendasViva em processamento mas
            // que nao puderam ser conciliados, para status 6 NAO CONCILIADO
            if (isProsseguir)
            {
                isProsseguir = _bllVendasViva.AtualizarStatus(6, "N");
            }

            // 11) Atualizar todos os ID`s da PagamentoOperadora em processamento
            // mas que nao puderam ser conciliados, para status 6 NAO CONCILIADO
            if (isProsseguir)
            {
                isProsseguir = _bllPagamentoOperadora.AtualizarStatus(6, "N");
            }

            // 12) Pega todas as importações com status 5 Em processamento
            // e libera com status 7 CONCILIADO
            if (isProsseguir)
            {
                isProsseguir = _bllImportacaoPlanilha.AtualizarStatusImportacao(5, 7);
            }
        }
Beispiel #2
0
        public void Importar()
        {
            VendasVivaBLL         _bllVendasViva         = new VendasVivaBLL();
            PagamentoOperadoraBLL _bllPagamentoOperadora = new PagamentoOperadoraBLL();
            bool isProsseguir = false;

            // 1) Verifica se existe alguma importação com status 4 Pendente importação
            isProsseguir = ListarTodosPorStatus(null, 4).Count > 0;

            // 2) Reserva todas as importações com status 4 Pendente importação,
            // e trava com status 2 Importando
            if (isProsseguir)
            {
                isProsseguir = AtualizarStatusImportacao(4, 2);
            }

            // 3) Recupera a listagem de importações com status 2 Importando
            var lista = new List <ImportacaoPlanilha>();

            if (isProsseguir)
            {
                try
                {
                    lista = ListarTodosPorStatus(null, 2);
                }
                catch (Exception)
                {
                    isProsseguir = false;
                }
            }

            // 4) Inicia varredura de arquivos para a Importação dos registros com status 2 Importando
            if (isProsseguir)
            {
                foreach (var item in lista)
                {
                    //Seta diretorios
                    var appSettings      = ConfigurationManager.AppSettings;
                    var _diretorioPadrao = appSettings["DiretorioImportacao"];

                    string _diretorioPendente   = appSettings["_diretorioPendente"];
                    string _diretorioProcessado = appSettings["_diretorioProcessado"];
                    string _diretorioLog        = appSettings["_diretorioLog"];

                    item._diretorioPendente   = string.Format("{0}{1}", _diretorioPadrao, _diretorioPendente);
                    item._diretorioProcessado = string.Format("{0}{1}", _diretorioPadrao, _diretorioProcessado);
                    item._diretorioLog        = string.Format("{0}{1}", _diretorioPadrao, _diretorioLog);

                    // 5) Realiza a importação
                    switch (item.idTipoPlanilha)
                    {
                    case 1:
                        // 6) Importa VendasViva - Lista todas planilhas 1-VendasViva (pendentes)
                        _bllVendasViva.Importar(item);
                        break;

                    case 2:
                        // 7) Importa PagamentoOperadora - Lista todas planilhas 2-PagamentoOperadora (pendentes)
                        _bllPagamentoOperadora.Importar(item);
                        break;

                    default:
                        break;
                    }
                }
            }
        }