public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            var numeroRegistro = 1;

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header, numeroRegistro));

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                numeroRegistro++;
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar, numeroRegistro) });

                if (detalheAdicionar.Instrucoes.Count > 0)
                {
                    numeroRegistro++;
                    listaRetornar.AddRange(new[] { EscreverMensagemVariavelReciboSacado(detalheAdicionar, numeroRegistro) });
                }
                if (detalheAdicionar.Instrucoes.Count > 1)
                {
                    listaRetornar.AddRange(new[] { EscreverMensagemVariavelFichaCompensacao(detalheAdicionar, ref numeroRegistro) });
                }
            }

            numeroRegistro++;
            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, numeroRegistro));

            return(listaRetornar);
        }
Exemple #2
0
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header));

            var sequencia = 2;

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar, sequencia) });
                sequencia++;

                /* REGISTRO TIPO 2 (MENSAGENS )*/
                if (detalheAdicionar.Instrucoes != null && detalheAdicionar.Instrucoes.Count > 0)
                {
                    listaRetornar.AddRange(new[] { EscreverMensagemTipo2(detalheAdicionar, sequencia) });
                    sequencia++;
                }
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, sequencia));

            return(listaRetornar);
        }
Exemple #3
0
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            var numeroSequencialRegistro = 1;

            var listaRetornar = new List <string>
            {
                EscreverHeader(remessaEscrever.Header, remessaEscrever.Header.NumeroSequencialRemessa,
                               numeroSequencialRegistro)
            };

            numeroSequencialRegistro++;
            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[]
                                       { EscreverDetalhe(detalheAdicionar, numeroSequencialRegistro) });

                /* VERIFICAR SE POSSUI MULTA */
                if (detalheAdicionar.PercentualMulta > 0)
                {
                    numeroSequencialRegistro++;

                    listaRetornar.AddRange(new[] { EscreverDetalheTipo5(detalheAdicionar, numeroSequencialRegistro) });
                }

                numeroSequencialRegistro++;
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, numeroSequencialRegistro));

            return(listaRetornar);
        }
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header));

            var sequencial = 2;

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar, sequencial) });
                sequencial++;

                /* VERIFICAR SE EXISTE MULTA, CASO SIM ESCREVER REGISTRO PARA MULTA */
                if (detalheAdicionar.PercentualMulta > 0)
                {
                    listaRetornar.Add(EscreverRegistroMulta(detalheAdicionar, sequencial));
                    sequencial++;
                }
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, sequencial));

            return(listaRetornar);
        }
        public void GerarHeaderArquivoRemessaBradescoCnab400()
        {
            var banco = Fabricas.BancoFactory.ObterBanco("237", "2");
            var contaBancariaCedente = new ContaBancaria("0534", "7", "2801", "0");
            var cedente = new Cedente("4879962", 0, "99.999.999/9999-99", "Razão Social X", contaBancariaCedente, null);

            var sacado = new Sacado("Sacado Fulano de Tal", "999.999.999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "02", BancoEmiteBoleto = false
            };

            var boleto = new Boleto(carteira, cedente, sacado, null)
            {
                NumeroDocumento            = "55617",
                ValorBoleto                = Convert.ToDecimal(501.81),
                IdentificadorInternoBoleto = "55617",
                DataVencimento             = new DateTime(2016, 11, 25),
                Moeda       = "9",
                BancoBoleto = banco
            };

            banco.FormatarBoleto(boleto);

            var remessa = new RemessaCnab400
            {
                Header           = new HeaderRemessaCnab400(boleto, 1, 1),
                RegistrosDetalhe = new List <DetalheRemessaCnab400>(),
                Trailer          = new TrailerRemessaCnab400(boleto.ValorBoleto, 1)
            };

            var escritor = EscritorArquivoRemessaFactory.ObterEscritorRemessa(remessa);
            var detalhe  = new DetalheRemessaCnab400(boleto, 2);

            remessa.RegistrosDetalhe.Add(detalhe);

            var fabricaRemessa = new RemessaFactory();
            var remessaPronta  = fabricaRemessa.GerarRemessa(remessa.Header, new List <Boleto>()
            {
                boleto
            },
                                                             remessa.RegistrosDetalhe, remessa.Trailer);
            var linhasEscrever = escritor.EscreverTexto(remessaPronta);

            const string header =
                "01REMESSA01COBRANCA       00000000000004879962HOT BEACH SUITES OLIMPIA - EMP237BRADESCO       251116        MX0000002                                                                                                                                                                                                                                                                                     000001";

            Assert.AreEqual(header, remessaPronta.Header);
        }
Exemple #6
0
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header));

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar) });
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer));

            return(listaRetornar);
        }
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header));

            var sequencial = 2;
            var codCedente = remessaEscrever.Header.ContaCorrente;

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar, sequencial) });
                sequencial++;
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, sequencial, codCedente));

            return(listaRetornar);
        }
Exemple #8
0
        public RemessaCnab400 GerarRemessa(HeaderRemessaCnab400 header, List <Boleto> boletos, List <DetalheRemessaCnab400> detalhes, TrailerRemessaCnab400 trailer)
        {
            //var contadorSequencialRegistro = 1;
            var objReturn = new RemessaCnab400();

            objReturn.RegistrosDetalhe = new List <DetalheRemessaCnab400>();

            objReturn.Header = header;

            foreach (var detalhe in detalhes)
            {
                objReturn.RegistrosDetalhe.Add(detalhe);
                //objReturn.AdicionarBoleto(boletoAddRemessa, contadorSequencialRegistro);
                //contadorSequencialRegistro++;
            }

            objReturn.Trailer = trailer;

            return(objReturn);
        }
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            List <string> listaRetornar = new List <string>();

            listaRetornar.Add(EscreverHeader(remessaEscrever.Header));

            var sequencia = 2;

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[]
                                       { EscreverDetalhe(detalheAdicionar, sequencia, remessaEscrever.Header.NumeroSequencialRemessa) });
                sequencia++;
            }

            listaRetornar.Add(EscreverTrailer(remessaEscrever.Trailer, sequencia, remessaEscrever.RegistrosDetalhe.Count,
                                              remessaEscrever.Header.NumeroSequencialRemessa));

            return(listaRetornar);
        }
Exemple #10
0
        public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
        {
            var listaRetornar = new List <string> {
                EscreverHeader(remessaEscrever.Header)
            };

            foreach (var detalheAdicionar in remessaEscrever.RegistrosDetalhe)
            {
                listaRetornar.AddRange(new[] { EscreverDetalhe(detalheAdicionar) });
            }

            if (listaRetornar.Count > 0)
            {
                listaRetornar[0] = listaRetornar[0].PreencherValorNaLinha(34, 39,
                                                                          listaRetornar.Count.ToString().PadLeft(6, '0'));
            }

            listaRetornar.Add(Environment.NewLine);

            return(listaRetornar);
        }
 public EscritorRemessaCnab400Safra(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #12
0
 public EscritorRemessaCnab400Daycoval(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #13
0
        public static IEscritorArquivoRemessaCnab400 ObterEscritorRemessa(RemessaCnab400 remessaEscrever)
        {
            try
            {
                switch (remessaEscrever.Header.CodigoBanco.PadLeft(3, '0'))
                {
                /* 001 - Banco do Brasil */
                case "001":
                    return(new Bancos.Brasil.EscritorRemessaCnab400BancoDoBrasil(remessaEscrever));

                    break;

                /* 003 - Banco da Amazônia */
                case "003":
                    throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco +
                                                      " ainda não foi implementado.");
                    break;

                case "033":
                    return(new Bancos.Santander.EscritorRemessaCnab400Santander(remessaEscrever));

                /* 104 - Caixa */
                case "104":
                    throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco +
                                                      " ainda não foi implementado.");
                    break;

                /* 237 - Bradesco */
                case "237":
                    return(new Bancos.Bradesco.EscritorRemessaCnab400Bradesco(remessaEscrever));

                    break;

                /* 341 - Itaú */
                case "341":
                    return(new Bancos.Itau.EscritorRemessaCnab400Itau(remessaEscrever));

                    break;

                /* 399 - HSBC */
                case "399":
                    return(new Bancos.Hsbc.EscritorRemessaCnab400Hsbc(remessaEscrever));

                    break;

                /* 070 - BRB */
                case "070":
                    return(new Bancos.BRB.EscritorRemessaCnab400BRB(remessaEscrever));

                    break;

                /* 756 - SICOOB */
                case "756":
                    return(new Bancos.Sicoob.EscritorRemessaCnab400Sicoob(remessaEscrever));

                    break;

                /* 422 - SAFRA */
                case "422":
                    return(new Bancos.Safra.EscritorRemessaCnab400Safra(remessaEscrever));

                /* 707 - BANCO DAYCOVAL */
                case "707":
                    return(new Bancos.Daycoval.EscritorRemessaCnab400Daycoval(remessaEscrever));

                default:
                    throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco +
                                                      " ainda não foi implementado.");
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro durante a execução da transação.", ex);
            }
        }
Exemple #14
0
 public EscritorRemessaCnab400Sicoob(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #15
0
 public EscritorRemessaCnab400BancoDoBrasil(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #16
0
 public RemessaCnab400 GerarArquivoRemessaCnab400(RemessaCnab400 remessaCnab400, List <Boleto> boletos)
 {
     throw new NotImplementedException();
 }
Exemple #17
0
        public void TestGerarHeaderArquivoRemessaBRBCnab400()
        {
            var dadosRemessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro,
                                           "");
            var banco = Fabricas.BancoFactory.ObterBanco("070");
            var contaBancariaCedente = new ContaBancaria("201", "", "29088", "1");
            var cedente = new Cedente("99999", 0, "99.999.999/9999-99", "Razão Social X", contaBancariaCedente, null);
            var sacado  = new Sacado("Sacado Fulano de Tal", "99.999.999/9999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "1", Tipo = "1"
            };

            var boleto = new Boleto(carteira, cedente, sacado, dadosRemessa)
            {
                NumeroDocumento            = "279141",
                ValorBoleto                = Convert.ToDecimal(222.75),
                IdentificadorInternoBoleto = "279141",
                DataVencimento             = new DateTime(2015, 03, 16),
                Especie = banco.ObtemEspecieDocumento(EnumEspecieDocumento.Diversos),
                CodigoOcorrenciaRemessa = new CodigoOcorrencia(01),
                BancoBoleto             = banco,
                TipoCobrancaJuro        = TipoCobrancaJuro.JurosDiario
            };

            banco.FormatarBoleto(boleto);

            var remessa = new RemessaCnab400();

            remessa.Header = new HeaderRemessaCnab400(boleto, 1, 1, DateTime.Now);
            var detalheIndividual = new DetalheRemessaCnab400(boleto, 1);

            remessa.RegistrosDetalhe = new List <DetalheRemessaCnab400>
            {
                detalheIndividual
            };
            var escritor = new EscritorRemessaCnab400BRB(remessa);

            var linhasEscrever = escritor.EscreverTexto(remessa);
            var path           = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            var data           = String.Format("{0}_{1}", DateTime.Now.ToString("ddMMyyyy"), DateTime.Now.ToString("HHmmss"));

            var nomeArquivo = string.Format("{0}{1}{2}{3}", banco.CodigoBanco, @"_REMESSA_", data, ".txt");
            var arquivo     = new System.IO.StreamWriter(path + @"\" + nomeArquivo, true);

            foreach (var linha in linhasEscrever)
            {
                arquivo.WriteLine(linha);
            }
            arquivo.Close();
        }
 public EscritorRemessaCnab400Banrisul(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
        public void TestGerarDetalheArquivoRemessaBancoBrasilCnab400()
        {
            var remessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro, "2");

            var banco = Fabricas.BancoFactory.ObterBanco("001", "9");

            var contaBancariaCedente = new ContaBancaria("2374", "4", "0165199", "4");

            var cedente = new Cedente("9999999", "000123", 0, "99.999.999/9999-99", "Razão Social X", contaBancariaCedente, null);

            var sacado = new Sacado("Sacado Fulano de Tal", "999.999.999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "16"
            };

            var boleto = new Boleto(carteira, cedente, sacado, remessa)
            {
                NumeroDocumento            = "1",
                ValorBoleto                = Convert.ToDecimal(221.40),
                IdentificadorInternoBoleto = "1",
                DataVencimento             = new DateTime(2014, 07, 10),
                Especie                 = banco.ObtemEspecieDocumento(EnumEspecieDocumento.DuplicataMercantil),
                TipoModalidade          = "21",
                CodigoOcorrenciaRemessa = new CodigoOcorrencia(01),
                BancoBoleto             = banco
            };

            banco.FormatarBoleto(boleto);

            var remessaEscrever = new RemessaCnab400();

            remessaEscrever.Header = new HeaderRemessaCnab400(boleto, 1, 1, DateTime.Now);
            var detalheIndividual = new DetalheRemessaCnab400(boleto, 1);

            remessaEscrever.RegistrosDetalhe = new List <DetalheRemessaCnab400>
            {
                detalheIndividual
            };
            var escritor = new EscritorRemessaCnab400BancoDoBrasil(remessaEscrever);

            var linhasEscrever = escritor.EscreverTexto(remessaEscrever);

            //const int numeroRegistro = 1;

            //var escritor = new EscritorRemessaCnab400BancoDoBrasil();

            //var linhasEscrever = escritor.EscreverDetalhe(boleto, numeroRegistro);

            //var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //var data = DateTime.Now.ToString("ddMMyyyy");

            //var nomeArquivo = string.Format("{0}{1}{2}{3}{4}{5}{6}", banco.CodigoBanco, "-", banco.NomeBanco, "_", data, @"_REGISTRO_DETALHE", ".txt");

            //var arquivo = new System.IO.StreamWriter(path + @"\" + nomeArquivo, true);
            //arquivo.WriteLine(linhasEscrever);

            //arquivo.Close();
        }
 public EscritorRemessaCnab400Banestes(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #21
0
        public static string GerarArquivoRemessa(CarteiraBoleto carteiraBoleto, SacadoBoleto sacado, decimal valor,
                                                 DateTime dataVencimento, string numeroDocumento)
        {
            try
            {
                var listaBoletoBrRemessa           = new List <Boleto>();
                var sequenciaRemessaCarteiraBoleto = 1;

                try
                {
                    // Transforma boletos e adiciona lançamentos na lista
                    listaBoletoBrRemessa.Add(TransformaDeFormatoBoletoParaFormatoBoletoBr(carteiraBoleto, sacado,
                                                                                          valor, dataVencimento, numeroDocumento));
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                #region Validações (Banco e Carteira)

                /* Garantir que todos os boletos pertencem a mesmo banco e carteira de boleto */
                var bancosEncontrados = listaBoletoBrRemessa.GroupBy(gb => gb.BancoBoleto.CodigoBanco);
                if (bancosEncontrados.Count() > 1)
                {
                    throw new Exception(
                              "Há mais de 1 banco associado aos boletos que foram informados para geração de remessa.");
                }

                var carteirasCobrancaEncontradas = listaBoletoBrRemessa.GroupBy(gb => gb.CarteiraCobranca.Codigo);
                if (carteirasCobrancaEncontradas.Count() > 1)
                {
                    throw new Exception(
                              "Há mais de 1 tipo de carteira de cobrança associado aos boletos que foram informados para geração de remessa.");
                }

                if (listaBoletoBrRemessa.Any(qry => qry.DataVencimento.Date < DateTime.Now.Date))
                {
                    throw new Exception(
                              "Há boletos com data de vencimento menor que a data atual. Impossível continuar.");
                }

                #endregion

                var carteiraCobrancaPadrao = listaBoletoBrRemessa.First().CarteiraCobranca;
                var boletoPadrao           = listaBoletoBrRemessa.First();

                var fabricaRemessa = new RemessaFactory();

                #region #Criação do Diretório e Arquivo.REM

                var    data         = $"{DateTime.Now.ToString("ddMMyy")}";
                var    dataBradesco = $"{DateTime.Now.ToString("ddMM")}";
                string nomeArquivo  = null;

                // Se for BRADESCO formata nome do arquivo para CBDDMM??.REM
                if (boletoPadrao.BancoBoleto.CodigoBanco == "237")
                {
                    nomeArquivo = $"{"CB"}{dataBradesco}{"TS"}{".REM"}";
                }
                else
                {
                    /*
                     * C -> Cobrança
                     * Data da geração em formato DDMMAA
                     * G -> Geral
                     */
                    nomeArquivo = $"{"C"}{data}{"G"}{".REM"}";
                }

                var dir = Directory.CreateDirectory(Path.Combine(
                                                        AppDomain.CurrentDomain.BaseDirectory,
                                                        boletoPadrao.BancoBoleto.CodigoBanco));

                var caminho = dir.FullName + "\\" + nomeArquivo;

                #endregion

                #region #Informações Essenciais

                /* Usado no Header do Arquivo
                 * Cada arquivo enviado a CAIXA deverá conter um número único.
                 */
                // TODO: Criar tabela para controlar quantidade de arquivos remessa enviados ao banco.
                const int sequencialArquivo = 1;

                /* Usado no Header de Lote
                 * Para cada remessa enviada deverá ser acrescido em 1, se a remessa for recusada a numeração não poderá ser aproveitada.
                 */
                // TODO: Criar tabela para controlar quantidade de arquivos remessa gerados.
                int sequencialRemessa = sequenciaRemessaCarteiraBoleto;

                /* Usado no Trailer de Lote
                 * Conta a quantidade de itens na lista multiplica por 2 ( cada boleto terá um detalhe segmento P e um detalhe segmento Q ) e adiciona + 2 (Header do Lote e Trailer do Lote)
                 */
                // TODO: Atualmente só considera 1 lote de informações no arquivo.
                var qtdRegistrosNoLote = (listaBoletoBrRemessa.Count * 2) + 2;

                /* Usado no Trailer do Arquivo */
                // TODO: Atualmente só gera 1 lote de informações no arquivo.
                const int qtdLotesArquivo = 1;

                // Conta a quantidade de itens na lista  multiplica por 2 ( cada boleto terá um detalhe segmento P e um detalhe segmento Q ) e adiciona + 4 (Header do Arquivo, Header do Lote, Trailer do Lote e Trailer do Arquivo)
                var qtdRegistrosNoArquivoCnab240 = (listaBoletoBrRemessa.Count * 2) + 4;

                // Conta a quantidade de itens na lista e adiciona + 2 (Header do Arquivo + Trailer do Arquivo)
                var qtdRegistrosNoArquivoCnab400 = listaBoletoBrRemessa.Count();
                qtdRegistrosNoArquivoCnab400 += 2;

                // Pega número de linhas de instruções de cada boleto
                // No caso do Bradesco desconsiderar a qtd de instruções
                // Itau desconsiderar
                // HSBC desconsiderar
                var qtdRegInstrucoes = 0;
                if (boletoPadrao.BancoBoleto.CodigoBanco != "237" &&
                    boletoPadrao.BancoBoleto.CodigoBanco != "341" &&
                    boletoPadrao.BancoBoleto.CodigoBanco != "399")
                {
                    qtdRegInstrucoes += listaBoletoBrRemessa.Sum(boleto => boleto.InstrucoesDoBoleto.Count);
                }

                Boleto primeiroBoletoDaLista = listaBoletoBrRemessa.First();

                #endregion

                #region CNAB240

                // Gera Remessa Cnab240
                if (carteiraCobrancaPadrao.Tipo == "CNAB240")
                {
                    var remessa = new RemessaCnab240
                    {
                        Header = new HeaderRemessaCnab240(primeiroBoletoDaLista, sequencialRemessa)
                    };

                    var loteRemessa = new LoteRemessaCnab240
                    {
                        HeaderLote  = new HeaderLoteRemessaCnab240(primeiroBoletoDaLista, sequencialRemessa),
                        TrailerLote = new TrailerLoteRemessaCnab240(qtdRegistrosNoLote)
                    };

                    remessa.Trailer = new TrailerRemessaCnab240(qtdLotesArquivo, qtdRegistrosNoArquivoCnab240);

                    var escritor = EscritorArquivoRemessaFactory.ObterEscritorRemessa(remessa);

                    var remessaPronta = fabricaRemessa.GerarRemessa(remessa.Header, loteRemessa.HeaderLote,
                                                                    listaBoletoBrRemessa, loteRemessa.TrailerLote, remessa.Trailer);

                    var linhasEscrever = escritor.EscreverTexto(remessaPronta);

                    // Escreve em UTF-8
                    File.WriteAllLines(caminho, linhasEscrever.ToArray(), Encoding.GetEncoding(1252));
                }

                #endregion

                #region CNAB400

                // Gera Remessa Cnab400
                if (carteiraCobrancaPadrao.Tipo == "CNAB400")
                {
                    var remessa = new RemessaCnab400
                    {
                        Header           = new HeaderRemessaCnab400(primeiroBoletoDaLista, sequencialRemessa, 1),
                        RegistrosDetalhe = new List <DetalheRemessaCnab400>(),
                        Trailer          = new TrailerRemessaCnab400(listaBoletoBrRemessa.Sum(s => s.ValorBoleto),
                                                                     qtdRegistrosNoArquivoCnab400 + qtdRegInstrucoes)
                    };

                    var escritor = EscritorArquivoRemessaFactory.ObterEscritorRemessa(remessa);

                    var sequencial = 2;
                    DetalheRemessaCnab400 detalhe;

                    foreach (var boletoRemessa400 in listaBoletoBrRemessa)
                    {
                        detalhe = new DetalheRemessaCnab400(boletoRemessa400, sequencial);
                        remessa.RegistrosDetalhe.Add(detalhe);
                        sequencial++;
                    }

                    var remessaPronta = fabricaRemessa.GerarRemessa(remessa.Header, listaBoletoBrRemessa,
                                                                    remessa.RegistrosDetalhe, remessa.Trailer);
                    var linhasEscrever         = escritor.EscreverTexto(remessaPronta);
                    var linhasTratadasEscrever = new List <string>();
                    foreach (var linha in linhasEscrever)
                    {
                        /*/
                         * -> Codificação ASCII 8-bit (Estendido)
                         * Encoding.GetEncoding(437)
                         *
                         * -> Codificação ASCII 7-bit
                         * Encoding.GetEncoding(1252)
                         *
                         * /*/

                        if (boletoPadrao.BancoBoleto.CodigoBanco == "756")
                        {
                            var bytes           = System.Text.Encoding.Default.GetBytes(linha);
                            var linhaConvertida = System.Text.Encoding.Default.GetString(bytes);

                            var linhaTratada = linhaConvertida;

                            linhasTratadasEscrever.Add(linhaTratada);
                        }
                        else
                        {
                            var bytes           = System.Text.Encoding.GetEncoding("iso-8859-8").GetBytes(linha);
                            var linhaConvertida = System.Text.Encoding.UTF8.GetString(bytes);

                            var linhaTratada = linhaConvertida;

                            linhasTratadasEscrever.Add(linhaTratada);
                        }
                    }

                    if (boletoPadrao.BancoBoleto.CodigoBanco == "756")
                    {
                        File.WriteAllLines(caminho, linhasTratadasEscrever, Encoding.Default);
                    }
                    else
                    {
                        File.WriteAllLines(caminho, linhasTratadasEscrever);
                    }
                }

                #endregion

                return(caminho);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #22
0
 public EscritorRemessaCnab400Bradesco(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
        public void TestGerarHeaderArquivoRemessaDaycovalCnab400()
        {
            var dadosRemessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro,
                                           "2");

            var banco = Fabricas.BancoFactory.ObterBanco("707", "2");
            var contaBancariaCedente = new ContaBancaria("1001", "1", "2002", "1");
            var cedente = new Cedente("", "190658906300", 0, "99.999.999/9999-99", "Razao Social X",
                                      contaBancariaCedente,
                                      null);

            var sacado = new Sacado("Sacado Fulano de Tal", "99.999.999/9999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "3"
            };
            var boleto = new Boleto(carteira, cedente, sacado, dadosRemessa)
            {
                NumeroDocumento            = "1001",
                ValorBoleto                = Convert.ToDecimal(255),
                IdentificadorInternoBoleto = "1001",
                DataVencimento             = new DateTime(2017, 10, 20),
                Especie                 = banco.ObtemEspecieDocumento(EnumEspecieDocumento.DuplicataMercantil),
                BancoBoleto             = banco,
                CodigoOcorrenciaRemessa = new CodigoOcorrencia(01)
            };

            banco.FormatarBoleto(boleto);

            var remessa = new RemessaCnab400();

            remessa.Header = new HeaderRemessaCnab400(boleto, 1, 1);
            var detalheIndividual = new DetalheRemessaCnab400(boleto, 1);

            remessa.RegistrosDetalhe = new List <DetalheRemessaCnab400>
            {
                detalheIndividual
            };

            remessa.Trailer = new TrailerRemessaCnab400(1, 1);

            var escritor       = new EscritorRemessaCnab400Daycoval(remessa);
            var linhasEscrever = escritor.EscreverTexto(remessa);
            var path           = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            var data           = String.Format("{0}_{1}", DateTime.Now.ToString("ddMMyyyy"), DateTime.Now.ToString("HHmmss"));
            var nomeArquivo    = string.Format("{0}{1}{2}{3}", banco.CodigoBanco, @"_REMESSA_", data, ".txt");

            StringBuilder sb = new StringBuilder();

            foreach (var linha in linhasEscrever)
            {
                sb.AppendLine(linha);
            }

            Assert.AreEqual(linhasEscrever[0],
                            "01REMESSA01COBRANÇA       190658906300        Razao Social X                707BANCO DAYCOVAL 201017                                                                                                                                                                                                                                                                                                      000001");
        }
 public EscritorRemessaCnab400Unicred(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
 public EscritorRemessaCnab400Santander(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
Exemple #26
0
        public void TestGerarArquivoRemessaSicrediCnab400()
        {
            var remessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro, "2");
            var banco   = Fabricas.BancoFactory.ObterBanco("748");
            var contaBancariaCedente = new ContaBancaria("0136", "30", "00623", "9");
            var cedente = new Cedente("12345", 0, "99.999.999/9999-99", "Razão Social X", contaBancariaCedente, null);

            var sacado = new Sacado("Sacado Fulano de Tal", "999.999.999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "1"
            };

            var boleto = new Boleto(carteira, cedente, sacado, remessa)
            {
                NumeroDocumento            = "14369",
                ValorBoleto                = Convert.ToDecimal(337.00),
                IdentificadorInternoBoleto = "00003",
                DataVencimento             = DateTime.Now.AddDays(10),
                CodigoDeTransmissao        = "00200643279401300369",
                BancoBoleto                = banco,
                CedenteBoleto              = cedente,
                CarteiraCobranca           = carteira,
                Especie = banco.ObtemEspecieDocumento(EnumEspecieDocumento.NotaPromissoria),
                Aceite  = "S"
            };

            banco.FormatarBoleto(boleto);

            var cnab400 = new RemessaCnab400()
            {
                Header           = new HeaderRemessaCnab400(boleto, 1, 1),
                RegistrosDetalhe = new List <DetalheRemessaCnab400>()
                {
                    new DetalheRemessaCnab400(boleto, 2)
                },
                Trailer = new TrailerRemessaCnab400(12345, 3)
            };

            var escritor = new EscritorRemessaCnab400Sicredi(cnab400);

            var linhasEscrever = escritor.EscreverTexto(cnab400);

            var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            var data = DateTime.Now.ToString("d").Replace("/", "");

            var nomeArquivo = string.Format("{0}{1}{2}{3}{4}{5}{6}", banco.CodigoBanco, "-", banco.NomeBanco, "_", data, @"_REMESSA", ".txt");

            var arquivo = new System.IO.StreamWriter(path + @"\" + nomeArquivo, true);

            arquivo.Write(string.Join(Environment.NewLine, linhasEscrever));

            arquivo.Close();
        }
Exemple #27
0
 public EscritorRemessaCnab400BRB(RemessaCnab400 remessaEscrever)
 {
     _remessaEscrever = remessaEscrever;
 }
        public void TestGeracaoArquivoRemessa()
        {
            var dadosRemessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro,
                                           "2");

            var banco = Fabricas.BancoFactory.ObterBanco("237", "2");

            var contaBancariaCedente = new ContaBancaria("1234", "8", "12345", "6");

            var cedente = new Cedente("99999", "1", 0, "99.999.999/9999-99", "Razao Social X", contaBancariaCedente,
                                      null);

            var sacado = new Sacado("Sacado Fulano de Tal", "99.999.999/9999-99", new Endereco()
            {
                TipoLogradouro = "R",
                Logradouro     = "1",
                Bairro         = "Bairro X",
                Cidade         = "Cidade X",
                SiglaUf        = "XX",
                Cep            = "12345-000",
                Complemento    = "Comp X",
                Numero         = "9"
            });

            var carteira = new CarteiraCobranca {
                Codigo = "06"
            };
            var boleto = new Boleto(carteira, cedente, sacado, dadosRemessa)
            {
                NumeroDocumento            = "3242",
                ValorBoleto                = Convert.ToDecimal(275),
                IdentificadorInternoBoleto = "3242",
                DataVencimento             = new DateTime(2014, 08, 04),
                Especie     = banco.ObtemEspecieDocumento(EnumEspecieDocumento.DuplicataMercantil),
                BancoBoleto = banco
            };

            banco.FormatarBoleto(boleto);

            var remessa = new RemessaCnab400();

            remessa.Header = new HeaderRemessaCnab400(boleto, 1, 1);

            var detalheIndividual = new DetalheRemessaCnab400(boleto, 1);

            remessa.RegistrosDetalhe = new List <DetalheRemessaCnab400>
            {
                detalheIndividual
            };

            remessa.Trailer = new TrailerRemessaCnab400(1, 1);

            var escritor = new EscritorRemessaCnab400Bradesco(remessa);

            var linhasEscrever = escritor.EscreverTexto(remessa);

            var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            var data = String.Format("{0}_{1}", DateTime.Now.ToString("ddMMyyyy"), DateTime.Now.ToString("HHmmss"));

            var nomeArquivo = string.Format("{0}{1}{2}{3}", banco.CodigoBanco, @"_REMESSA_", data, ".txt");

            StringBuilder sb = new StringBuilder();

            foreach (var linha in linhasEscrever)
            {
                sb.AppendLine(linha);
            }

            Assert.AreEqual(linhasEscrever[0], "01REMESSA01COBRANCA       00000000000000099999RAZAO SOCIAL X                237BRADESCO       300517        MX0000001                                                                                                                                                                                                                                                                                     000001");
            Assert.AreEqual(linhasEscrever[1], "1000000000000000000000060123400123456DOC06/00000003242-7      0000    00000003242700000000002S           2  01000000324204081400000000275000000000001N300517000000000000000000000000000000000000000000000000000000000000000299999999999999SACADO FULANO DE TAL                    1,9,COMP X                                          12345000                                                            000002");
            Assert.AreEqual(linhasEscrever[2], "9                                                                                                                                                                                                                                                                                                                                                                                                         000003");
        }
Exemple #29
0
 public void ValidarRemessa(RemessaCnab400 remessaValidar)
 {
     throw new System.NotImplementedException();
 }
Exemple #30
0
 public List <string> EscreverTexto(RemessaCnab400 remessaEscrever)
 {
     throw new NotImplementedException();
 }