Example #1
0
        public override HeaderRetorno LerHeaderRetornoCNAB400(string registro)
        {
            try
            {
                HeaderRetorno header = new HeaderRetorno(registro);
                header.TipoRegistro   = Utils.ToInt32(registro.Substring(000, 1));
                header.CodigoRetorno  = Utils.ToInt32(registro.Substring(001, 1));
                header.LiteralRetorno = registro.Substring(002, 7);
                header.CodigoServico  = Utils.ToInt32(registro.Substring(009, 2));
                header.LiteralServico = registro.Substring(011, 8);
                header.Agencia        = Utils.ToInt32(registro.Substring(026, 5));

                header.Conta = Utils.ToInt32(registro.Substring(031, 8));

                header.DACConta = Utils.ToInt32(registro.Substring(038, 1));

                header.NomeEmpresa = registro.Substring(046, 30);
                header.CodigoBanco = Utils.ToInt32(registro.Substring(076, 3));
                header.NomeBanco   = registro.Substring(079, 15);
                header.DataGeracao = Utils.ToDateTime(Utils.ToInt32(registro.Substring(094, 6)).ToString("##-##-##"));

                header.NumeroSequencialArquivoRetorno = Utils.ToInt32(registro.Substring(391, 5));
                header.NumeroSequencial = Utils.ToInt32(registro.Substring(394, 6));
                return(header);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao ler header do arquivo de RETORNO / CNAB 400.", ex);
            }
        }
        public override void LerArquivoRetorno(IBanco banco, Stream arquivo)
        {
            try
            {
                StreamReader stream = new StreamReader(arquivo, System.Text.Encoding.UTF8);
                // Identificação do registro detalhe
                List <string> IdsRegistroDetalhe = new List <string>();

                // Lendo o arquivo
                string linha = stream.ReadLine();
                this.HeaderRetorno = banco.LerHeaderRetornoCNAB400(linha);

                // Próxima linha (DETALHE)
                linha = stream.ReadLine();

                //tem arquivo de retorno que possui somente cabeçalho
                if (linha != null)
                {
                    switch (banco.Codigo)
                    {
                    // 85 - CECRED - Código de registro detalhe 7 para CECRED
                    case (int)Bancos.CECRED:
                        IdsRegistroDetalhe.Add("7");
                        break;

                    // 1 - Banco do Brasil- Código de registro detalhe 7 para convênios com 7 posições, e detalhe 1 para convênios com 6 posições(colocado as duas, pois não interferem em cada tipo de arquivo)
                    case (int)Bancos.BancoBrasil:
                        IdsRegistroDetalhe.Add("1");    //Para convênios de 6 posições
                        IdsRegistroDetalhe.Add("7");    //Para convênios de 7 posições
                        break;

                    default:
                        IdsRegistroDetalhe.Add("1");
                        break;
                    }

                    while (linha != null)
                    {
                        if (IdsRegistroDetalhe.Contains(DetalheRetorno.PrimeiroCaracter(linha)))
                        {
                            DetalheRetorno detalhe = banco.LerDetalheRetornoCNAB400(linha);
                            ListaDetalhe.Add(detalhe);
                            OnLinhaLida(detalhe, linha);
                        }

                        linha = stream.ReadLine();
                    }
                }

                //TODO: Tratar Triller.

                stream.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao ler arquivo.", ex);
            }
        }
Example #3
0
        public override void LerArquivoRetorno(IBanco banco, Stream arquivo)
        {
            try
            {
                StreamReader stream = new StreamReader(arquivo, System.Text.Encoding.UTF8);
                string       linha  = "";
                // Identificação do registro detalhe
                List <string> IdsRegistroDetalhe = new List <string>();

                // Lendo o arquivo
                linha = stream.ReadLine();
                this.HeaderRetorno = banco.LerHeaderRetornoCNAB400(linha);

                // Próxima linha (DETALHE)
                linha = stream.ReadLine();

                // 85 - CECRED - Código de registro detalhe 7 para CECRED
                // 1 - Banco do Brasil- Código de registro detalhe 7 para convênios com 7 posições, e detalhe 1 para convênios com 6 posições(colocado as duas, pois não interferem em cada tipo de arquivo)
                if (banco.Codigo == 85)
                {
                    IdsRegistroDetalhe.Add("7");
                }
                else if (banco.Codigo == 1)
                {
                    IdsRegistroDetalhe.Add("1"); //Para convênios de 6 posições
                    IdsRegistroDetalhe.Add("7"); //Para convênios de 7 posições
                }
                else
                {
                    IdsRegistroDetalhe.Add("1");
                }

                while (IdsRegistroDetalhe.Contains(DetalheRetorno.PrimeiroCaracter(linha)))
                {
                    DetalheRetorno detalhe = banco.LerDetalheRetornoCNAB400(linha);
                    ListaDetalhe.Add(detalhe);
                    OnLinhaLida(detalhe, linha);
                    linha = stream.ReadLine();
                }

                stream.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao ler arquivo.", ex);
            }
        }