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