/// <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); } }
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; } } } }