private void ImportarArquivo(string arquivo, ResultadoImportação resultado)
        {
            try
            {
                ParserXmlAtacadoCancelamento parser = new ParserXmlAtacadoCancelamento(arquivo);

                if (!parser.Cancelamento)
                {
                    resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.NãoÉCancelamento));
                    return;
                }

                string id = SaídaFiscal.ObterIdNfe(parser.Id);

                if (idsJáCancelados.Contains(id))
                {
                    resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.CancelamentoJáRegistrado, id));
                    return;
                }

                if (!idsSaídas.Contains(id))
                { 
                    throw new NotaInexistente(id);
                }

                SaídaFiscal.Cancelar(id);
                resultado.ArquivosSucesso.Adicionar(new Arquivo(arquivo, id));
                idsJáCancelados.Add(id);
            }
            catch (Exception erro)
            {
                resultado.AdicionarFalha(arquivo, erro);
            }
        }
        private bool IgnorarArquivo(string arquivo, ResultadoImportação resultado, DocumentoFiscal saída)
        {
            if (idsCadastrados.Contains(saída.Id.ToLower()))
            {
                resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.ChaveJáImportada, saída.Id));
                return true;
            }

            return false;
        }
        protected override bool IgnorarDocumentoCNPJEmissor(ResultadoImportação resultado, string arquivo, DocumentoFiscal documento)
        {
            if (documento.EmitidoPorEstaEmpresa)
            {
                resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.NotaEmitidaOutraEmpresa, documento.Id));
                return true;
            }

            return false;
        }
        protected override ResultadoImportação ImportarArquivos(string caminho, SearchOption opções, BackgroundWorker thread)
        {
            MapaIdNfe.Instância.Recarregar();

            ResultadoImportação resultado = new ResultadoImportação(DESCRIÇÃO);
            List<string> arquivos = ObterArquivos(caminho, PADRÂO_ARQUIVO, opções);
            List<LeitorPdf> pdfs = LeitorPdf.Interpretar(arquivos, resultado, thread);
            SaidaFiscalPdf.CadastrarLimpandoCache(pdfs, thread);

            return resultado;
        }
        private bool IgnorarDocumento(ResultadoImportação resultado, string arquivo, DocumentoFiscal documento)
        {
            if (idsCadastrados.Contains(documento.Id.ToLower()))
            {
                resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.ChaveJáImportada, documento.Id));
                return true;
            }

            if (IgnorarDocumentoCNPJEmissor(resultado, arquivo, documento))
                return true;

            return false;
        }
        protected override ResultadoImportação ImportarArquivos(string pasta, SearchOption opções, BackgroundWorker thread)
        {
            ResultadoImportação resultado = new ResultadoImportação(descrição);
            List<string> arquivos = ObterArquivos(pasta, padrãoArquivo, opções);

            foreach (string arquivo in arquivos)
            {
                AtualizarPorcentagem(thread, resultado, arquivos);
                ImportarArquivo(arquivo, resultado);
            }

            return resultado;
        }
        protected override ResultadoImportação ImportarArquivos(string pasta, SearchOption opções, BackgroundWorker thread)
        {
            ResultadoImportação resultado = new ResultadoImportação(DESCRIÇÃO);
            List<string> arquivos = ObterArquivos(pasta, PADRÂO_ARQUIVO, opções);

            int arquivosProcessados = 0;
            foreach (string arquivo in arquivos)
            {
                thread.ReportProgress(100 * arquivosProcessados++ / arquivos.Count);
                ImportarArquivo(arquivo, resultado);
            }

            return resultado;
        }
        private void ImportarArquivo(string arquivo, ResultadoImportação resultado)
        {
            try
            {
                DocumentoFiscal documento = Interpretar(arquivo);

                if (IgnorarDocumento(resultado, arquivo, documento))
                    return;

                CadastrarDocumento(documento, resultado, arquivo);
            } catch (Exception erro)
            {
                resultado.AdicionarFalha(arquivo, erro);
            }
        }
예제 #9
0
        internal static List<LeitorPdf> Interpretar(List<string> arquivos, ResultadoImportação resultado, BackgroundWorker thread)
        {
            List<LeitorPdf> lidos = new List<LeitorPdf>();

            foreach (string arquivo in arquivos)
            {
                Importador.AtualizarPorcentagem(thread, resultado, arquivos);
        
                LeitorPdf leitor = TentaLerArquivo(resultado, arquivo);

                if (leitor != null)
                    lidos.Add(leitor);
            }

            return lidos;
        }
        private void ImportarArquivo(string arquivo, ResultadoImportação resultado)
        {
            try
            {
                foreach (CupomFiscal cupom in Interpretador.InterpretaArquivo(arquivo).CuponsFiscais)
                {
                    DocumentoFiscal saída = new AdaptadorVarejo(cupom).Transformar();

                    if (IgnorarArquivo(arquivo, resultado, saída))
                        continue;

                    Cadastrar(arquivo, resultado, saída);
                }
            }
            catch (Exception erro)
            {
                resultado.AdicionarFalha(arquivo, erro);
            }
        }
 private void Cadastrar(string arquivo, ResultadoImportação resultado, DocumentoFiscal saída)
 {
     saída.Cadastrar();
     idsCadastrados.Add(saída.Id);
     resultado.ArquivosSucesso.Adicionar(new Arquivo(arquivo, saída.Id));
 }
 private void CadastrarDocumento(DocumentoFiscal documento, ResultadoImportação resultado, string arquivo)
 {
     documento.Cadastrar();
     idsCadastrados.Add(documento.Id.ToLower());
     resultado.ArquivosSucesso.Adicionar(new Arquivo(arquivo, documento.Id));
 }
 protected abstract bool IgnorarDocumentoCNPJEmissor(ResultadoImportação resultado, string arquivo, DocumentoFiscal documento);
예제 #14
0
 public static void AtualizarPorcentagem(BackgroundWorker thread, ResultadoImportação resultado, List<string> arquivos)
 {
     if (arquivos.Count < 100 || resultado.TotalArquivos % 10 == 0)
         thread.ReportProgress(100 * resultado.TotalArquivos / arquivos.Count);
 }
예제 #15
0
        private static LeitorPdf TentaLerArquivo(ResultadoImportação resultado, string arquivo)
        {
            try
            {
                LeitorPdf leitor = new LeitorPdf(arquivo);

                leitor.id = MapaIdNfe.Instância.ObterId(leitor.Nfe.Value);

                if (leitor.id == null)
                {
                    resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.SaídaFiscalNãoCadastradaParaPdf));
                    return null;
                }

                if (SaidaFiscalPdf.Cache.Contém((leitor.id)))
                {
                    resultado.ArquivosIgnorados.Adicionar(new ArquivoIgnorado(arquivo, Motivo.ChaveJáImportada, leitor.id));
                    return null;
                }

                resultado.ArquivosSucesso.Adicionar(new Arquivo(leitor.ToString(), leitor.id));
                SaidaFiscalPdf.Cache.Adicionar(leitor.id);

                return leitor;
            }
            catch (Exception erro)
            {
                resultado.AdicionarFalha(arquivo, erro);
                return null;
            }
        }