public void TestGerarRemessaPagamento() { var contaBancariaCedente = new ContaBancaria("1234", "8", "12345", "6"); var empresaPagadora = new BoletoBr.Cedente("7980171", "7980171", 0, "99.999.999/9999-99", "Razao Social X", contaBancariaCedente, null); empresaPagadora.EnderecoCedente = new Endereco() { Bairro = "Jardins", Cep = "75690000", Cidade = "Goiabalândia", Complemento = "EDF EXECUTIVO", Logradouro = "Rua x", Numero = "25", SiglaUf = "GO", }; var objEndereco = new Endereco() { Bairro = "Trenzim", Cep = "75690000", Cidade = "Mangalandia", Complemento = "Galho esquerdo", Logradouro = "Rua 3", Numero = "5", SiglaUf = "GO", }; var contaBancariaFavorecido = new BoletoBr.ContaBancaria("4343", "0", "35432", "2"); var favorecido = new BoletoBr.Sacado("012.365.489-01", "1", objEndereco, contaBancariaFavorecido); favorecido.Nome = "Fulano da silva"; var bancoEmpresa = BancoFactory.ObterBanco("237", ""); var bancoFavorecido = BancoFactory.ObterBanco("001", ""); var pagamento = new BoletoBr.Pagamento() { BancoEmpresa = bancoEmpresa, BancoFavorecido = bancoFavorecido, CodigoBanco = bancoEmpresa.CodigoBanco, CodigoBancoFavorecido = bancoFavorecido.CodigoBanco, CodigoCamaraCentralizadora = "018", CodigoFinalidadeDoc = "", CodigoFinalidadeTed = "5", FinalidadePagamento = "CC", DataVencimento = new DateTime(2021, 4, 21), Empresa = empresaPagadora, Favorecido = favorecido, ValorPagamento = 5M, ValorDesconto = 0, ValorJurosMora = 0, ValorMulta = 0, CodigoConvenio = "7980171", SeuNumero = "1015", TipoServico = "01", FormaDeLancamento = "03", ValorTitulo = 5M, CodBarras = "24691859100000299845004110028796200000000150" }; var remessa = new RemessaCnab240 { Header = new HeaderRemessaCnab240(pagamento, 1) }; var loteRemessa = new LoteRemessaCnab240 { HeaderLote = new HeaderLoteRemessaCnab240(pagamento, 1), TrailerLote = new TrailerLoteRemessaCnab240(4) }; remessa.Trailer = new TrailerRemessaCnab240(1, 6); var escritor = EscritorArquivoRemessaFactory.ObterEscritorRemessaPagamento(remessa); var listaBoletoBrRemessa = new List <Pagamento>() { pagamento }; var fabricaRemessa = new RemessaFactory(); var remessaPronta = fabricaRemessa.GerarRemessa(remessa.Header, loteRemessa.HeaderLote, listaBoletoBrRemessa, loteRemessa.TrailerLote, remessa.Trailer); var linhasEscrever = escritor.EscreverTexto(remessaPronta); StringBuilder sb = new StringBuilder(); foreach (var linha in linhasEscrever) { sb.AppendLine(linha); } }
private static BoletoBr.Boleto TransformaDeFormatoBoletoParaFormatoBoletoBr(CarteiraBoleto carteiraBoleto, SacadoBoleto sacado, decimal valor, DateTime dataVencimento, string numeroDocumento) { var vencimento = dataVencimento; var valorBoleto = valor; var nroConvenio = carteiraBoleto.NumeroConvenio; var identificadorInternoDocumento = numeroDocumento; #region Dados Cedente var codigoCedente = carteiraBoleto.CodigoCedente.BoletoBrToStringSafe(); var digitoCedente = carteiraBoleto.DigitoCodigoCedente.BoletoBrToInt(); var codTransmissao = carteiraBoleto.CodigoTransmissao.BoletoBrToStringSafe(); var cpfcnpjcedente = carteiraBoleto.CpfCnpjCedente.BoletoBrToStringSafe(); var descricaocedente = carteiraBoleto.NomeCedente.BoletoBrToStringSafe(); var agencia = carteiraBoleto.NumeroAgencia; var digitoAgencia = carteiraBoleto.DigitoAgencia; var conta = carteiraBoleto.NumeroConta; var digitoConta = carteiraBoleto.DigitoConta; var enderecoCedente = carteiraBoleto.EnderecoCedente; var bairroCedente = carteiraBoleto.BairroCedente; var complementoEndCedente = carteiraBoleto.ComplementoCedente; var numeroEnderecoCedente = carteiraBoleto.NumeroCedente; var cepCedente = carteiraBoleto.CepCedente; var cidadeCedente = carteiraBoleto.CidadeCedente; var ufEnderecoCedente = carteiraBoleto.UfCedente; var contaBancariaCedente = new BoletoBr.ContaBancaria(agencia, digitoAgencia, conta, digitoConta); var cedente = new BoletoBr.Cedente(codigoCedente, nroConvenio, digitoCedente, cpfcnpjcedente, descricaocedente, contaBancariaCedente, new Endereco() { Bairro = bairroCedente, Cep = cepCedente, Cidade = cidadeCedente, Complemento = complementoEndCedente, Logradouro = enderecoCedente, Numero = numeroEnderecoCedente, SiglaUf = ufEnderecoCedente, }); #endregion var codBanco = carteiraBoleto.CodigoBanco.PadLeft(3, '0'); var boleto = new BoletoBr.Boleto(); var objBanco = BoletoBr.Fabricas.BancoFactory.ObterBanco(codBanco); boleto.TipoModalidade = ""; boleto.Moeda = objBanco.MoedaBanco; boleto.BancoBoleto = objBanco; boleto.Aceite = "N"; boleto.DataProcessamento = DateTime.Now; boleto.CarteiraCobranca = new CarteiraCobranca(); #region Dados Carteira var numeroCarteira = carteiraBoleto.NumeroCarteira; var variacaoCarteira = ""; #region Variação Carteiras BB /* Banco do Brasil tratar variação carteira (Compor variação sempre com o numero da carteira separado por / ou -) */ if (codBanco == "001") { if (numeroCarteira.Contains("/")) { var carteiraVariacao = numeroCarteira.Split(Convert.ToChar("/")); numeroCarteira = carteiraVariacao[0]; variacaoCarteira = carteiraVariacao[1]; } else if (numeroCarteira.Contains("-")) { var carteiraVariacao = numeroCarteira.Split(Convert.ToChar("-")); numeroCarteira = carteiraVariacao[0]; variacaoCarteira = carteiraVariacao[1]; } } #endregion boleto.CodigoDeTransmissao = codTransmissao; boleto.CarteiraCobranca.Codigo = numeroCarteira; boleto.CarteiraCobranca.Variacao = variacaoCarteira; boleto.CarteiraCobranca.Descricao = carteiraBoleto.DescricaoCarteira; boleto.CarteiraCobranca.BancoEmiteBoleto = carteiraBoleto.BancoGeraBoleto; boleto.CarteiraCobranca.Tipo = carteiraBoleto.TipoArquivoRemessa; if (string.IsNullOrEmpty(descricaocedente)) { throw new Exception( $"Não foi informado o nome do beneficário na carteira de cobrança: {boleto.CarteiraCobranca.Descricao}."); } #endregion #region Instruções/Mensagem var existeMensagem1 = string.IsNullOrEmpty(carteiraBoleto.Instrucao1) == false; var existeMensagem2 = string.IsNullOrEmpty(carteiraBoleto.Instrucao2) == false; var existeMensagem3 = string.IsNullOrEmpty(carteiraBoleto.Instrucao3) == false; var existeMensagem4 = string.IsNullOrEmpty(carteiraBoleto.Instrucao4) == false; var existeMensagem5 = string.IsNullOrEmpty(carteiraBoleto.Instrucao5) == false; var existeMensagem6 = string.IsNullOrEmpty(carteiraBoleto.Instrucao6) == false; if (existeMensagem1) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao1); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } if (existeMensagem2) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao2); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } if (existeMensagem3) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao3); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } if (existeMensagem4) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao4); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } if (existeMensagem5) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao5); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } if (existeMensagem6) { var instrucaoAdd = new InstrucaoCustomizada(carteiraBoleto.Instrucao6); boleto.InstrucoesDoBoleto.Add(instrucaoAdd); } #endregion #region Dados Sacado var cpfcnpjSacado = sacado.CpfCnpj; var nomeSacado = sacado.Nome; boleto.SacadoBoleto = new BoletoBr.Sacado(nomeSacado, cpfcnpjSacado, TransformaEnderecoParaEnderecoBoletoBr(sacado)); #endregion /* Ajuste */ boleto.LocalPagamento = boleto.BancoBoleto.LocalDePagamento; boleto.DataVencimento = vencimento; boleto.CedenteBoleto = cedente; // Padronizado para DM - Duplicata Mercantil boleto.Especie = codBanco == "399" ? new EspecieDocumento(02, "Duplicata Mercantil", "PD") : new EspecieDocumento(02, "Duplicata Mercantil", "DM"); boleto.CodigoOcorrenciaRemessa = objBanco.ObtemCodigoOcorrencia(EnumCodigoOcorrenciaRemessa.Registro, 0, DateTime.Now); if (boleto.DataDocumento <= DateTime.MinValue) { boleto.DataDocumento = DateTime.Now; } boleto.NumeroDocumento = identificadorInternoDocumento; boleto.IdentificadorInternoBoleto = identificadorInternoDocumento; boleto.ValorBoleto = valorBoleto; boleto.PercentualJurosMora = carteiraBoleto.ValorJuros; boleto.InformacoesAdicionais = new List <InformacoesAdicionais>(); objBanco.FormatarBoleto(boleto); return(boleto); }
private static BoletoBr.Pagamento TransformaDeFormatoPagamentoParaFormatoBoletoBr(CarteiraBoleto carteiraBoleto, SacadoBoleto sacado, decimal valor, DateTime dataVencimento, string numeroDocumento) { var vencimento = dataVencimento; var valorPagamento = valor; var nroConvenio = carteiraBoleto.NumeroConvenio; var identificadorInternoDocumento = numeroDocumento; #region Dados Cedente var codigoCedente = carteiraBoleto.CodigoCedente.BoletoBrToStringSafe(); var digitoCedente = carteiraBoleto.DigitoCodigoCedente.BoletoBrToInt(); var codTransmissao = carteiraBoleto.CodigoTransmissao.BoletoBrToStringSafe(); var cpfcnpjcedente = carteiraBoleto.CpfCnpjCedente.BoletoBrToStringSafe(); var descricaocedente = carteiraBoleto.NomeCedente.BoletoBrToStringSafe(); var agencia = carteiraBoleto.NumeroAgencia; var digitoAgencia = carteiraBoleto.DigitoAgencia; var conta = carteiraBoleto.NumeroConta; var digitoConta = carteiraBoleto.DigitoConta; var enderecoCedente = carteiraBoleto.EnderecoCedente; var bairroCedente = carteiraBoleto.BairroCedente; var complementoEndCedente = carteiraBoleto.ComplementoCedente; var numeroEnderecoCedente = carteiraBoleto.NumeroCedente; var cepCedente = carteiraBoleto.CepCedente; var cidadeCedente = carteiraBoleto.CidadeCedente; var ufEnderecoCedente = carteiraBoleto.UfCedente; var contaBancariaCedente = new BoletoBr.ContaBancaria(agencia, digitoAgencia, conta, digitoConta); var cedente = new BoletoBr.Cedente(codigoCedente, nroConvenio, digitoCedente, cpfcnpjcedente, descricaocedente, contaBancariaCedente, new Endereco() { Bairro = bairroCedente, Cep = cepCedente, Cidade = cidadeCedente, Complemento = complementoEndCedente, Logradouro = enderecoCedente, Numero = numeroEnderecoCedente, SiglaUf = ufEnderecoCedente, }); #endregion var codBanco = carteiraBoleto.CodigoBanco.PadLeft(3, '0'); var pagamento = new BoletoBr.Pagamento(); var objBanco = BoletoBr.Fabricas.BancoFactory.ObterBanco(codBanco); #region Dados Sacado var cpfcnpjSacado = sacado.CpfCnpj; var nomeSacado = sacado.Nome; pagamento.Favorecido = new BoletoBr.Sacado(nomeSacado, cpfcnpjSacado, TransformaEnderecoParaEnderecoBoletoBr(sacado)); #endregion /* Ajuste */ pagamento.DataVencimento = vencimento; pagamento.Empresa = cedente; pagamento.ValorPagamento = valorPagamento; pagamento.ValorJurosMora = carteiraBoleto.ValorJuros; pagamento.ValorMulta = carteiraBoleto.ValorMulta; return(pagamento); }