public RemessaCnab240 GerarRemessa(HeaderRemessaCnab240 header, HeaderLoteRemessaCnab240 headerLote, List<Boleto> boletos, TrailerLoteRemessaCnab240 trailerLote, TrailerRemessaCnab240 trailer) { var objReturn = new RemessaCnab240(); objReturn.Header = header; objReturn.Lotes = new List<LoteRemessaCnab240>(); var ultimoLoteAdicionado = objReturn.AdicionarLote(headerLote, trailerLote); // Usado para identificar com número único e sequencial cada boleto (registro) dentro do lote. var contador = 1; var reg1 = 1; var reg2 = 2; foreach (var boletoAddRemessa in boletos) { objReturn.AdicionarBoletoAoLote(ultimoLoteAdicionado, boletoAddRemessa, contador, reg1, reg2); contador++; reg1 = reg1 + 2; reg2 = reg2 + 2; } objReturn.Trailer = trailer; return objReturn; }
public static IEscritorArquivoRemessaCnab240 ObterEscritorRemessa(RemessaCnab240 remessaEscrever) { try { switch (remessaEscrever.Header.CodigoBanco.PadLeft(3, '0')) { /* 001 - Banco do Brasil */ case "001": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); break; /* 003 - Banco da Amazônia */ case "003": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); break; case "033": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); /* 104 - Caixa */ case "104": return new Bancos.Cef.EscritorRemessaCnab240CefSicgb(remessaEscrever); break; /* 237 - Bradesco */ case "237": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); break; /* 341 - Itaú */ case "341": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); break; /* 399 - HSBC */ case "399": throw new NotImplementedException("Banco " + remessaEscrever.Header.CodigoBanco + " ainda não foi implementado."); break; 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); } }
public RemessaCnab240 GerarArquivoRemessaCnab240(RemessaCnab240 remessaCnab240, List<Boleto> boletos) { throw new NotImplementedException(); }
public void TestGeracaoArquivoRemessaCef() { var dadosRemessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, EnumCodigoOcorrenciaRemessa.Registro, "2"); var banco = Fabricas.BancoFactory.ObterBanco("104", "0"); var contaBancariaCedente = new ContaBancaria("007", "8", "1234", "0"); var cedente = new Cedente("999999", "123456", 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 = "SR" }; var boleto = new Boleto(carteira, cedente, sacado, dadosRemessa) { BancoBoleto = banco, NumeroDocumento = "19", ValorBoleto = (decimal)1000.51, IdentificadorInternoBoleto = "19", DataVencimento = new DateTime(2014, 06, 30), Especie = banco.ObtemEspecieDocumento(EnumEspecieDocumento.DuplicataMercantil), }; var listaBoleto = new List<Boleto>(); listaBoleto.Add(boleto); banco.FormatarBoleto(boleto); #region GERAÇÃO 1 var remessa = new RemessaCnab240(); //var listaDetalhes = new List<DetalheRemessaCnab240>(); remessa.Header = new HeaderRemessaCnab240(listaBoleto.FirstOrDefault(), 1); //var detalheSegmentoP = new DetalheSegmentoPRemessaCnab240(boleto) //{ // CodigoCedente = "123456", // NossoNumero = "123456", // NumeroDocumento = "123456", // CodigoOcorrencia = new CodigoOcorrencia(01), // Especie = banco.ObtemEspecieDocumento(EnumEspecieDocumento.DuplicataMercantil), // Aceite = "N", // DataVencimento = new DateTime(2014, 10, 01), // ValorBoleto = (decimal)100.51, //}; remessa.Lotes = new List<LoteRemessaCnab240> { }; var loteAdd = new LoteRemessaCnab240(); loteAdd.HeaderLote = new HeaderLoteRemessaCnab240(listaBoleto.FirstOrDefault(), 1); loteAdd.TrailerLote = new TrailerLoteRemessaCnab240(1); //loteAdd.RegistrosDetalheSegmentos = new List<DetalheRemessaCnab240>(); //var detalheRemessaAdd = new DetalheRemessaCnab240(); //detalheRemessaAdd.SegmentoP = detalheSegmentoP; //loteAdd.RegistrosDetalheSegmentos.Add(detalheRemessaAdd); remessa.Lotes.Add(loteAdd); remessa.Trailer = new TrailerRemessaCnab240(1, 1); #endregion GERAÇÃO 1 var fabricaRemessa = new RemessaFactory(); var remessaPronta = fabricaRemessa.GerarRemessa(remessa.Header, loteAdd.HeaderLote, listaBoleto, loteAdd.TrailerLote, remessa.Trailer); var escritor = EscritorArquivoRemessaFactory.ObterEscritorRemessa(remessa); var linhasEscrever = escritor.EscreverTexto(remessaPronta); 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); } File.WriteAllLines("C:\\REMESSA.TXT", linhasEscrever.ToArray()); }
//private readonly Remessa _remessa = new Remessa(Remessa.EnumTipoAmbiemte.Homologacao, // EnumCodigoOcorrenciaRemessa.Registro, "02"); public EscritorRemessaCnab240CefSicgb(RemessaCnab240 remessaEscrever) { _remessaEscrever = remessaEscrever; }