public string GerarDetalheRemessaCNAB240(Boleto boleto, ref int numeroRegistro) { try { // Segmento P (Obrigatório) var detalhe = GerarDetalheSegmentoPRemessaCNAB240(boleto, ref numeroRegistro); // Segmento Q (Obrigatório) detalhe += Environment.NewLine; detalhe += GerarDetalheSegmentoQRemessaCNAB240(boleto, ref numeroRegistro); // Segmento R (Opcional) var strline = GerarDetalheSegmentoRRemessaCNAB240(boleto, ref numeroRegistro); if (!string.IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } return(detalhe); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
/// <summary> /// Construção padrão para Leitura do Header da Remessa. Implementações da classe não precisam necessariamente fazer override deste método /// </summary> /// <remarks> /// A implementação original conta com a necessidade de implementação dos métodos: /// GerarHeaderRemessaCNAB240 e GerarHeaderLoteRemessaCNAB240 para CNAB240 /// GerarHeaderRemessaCNAB400 para CNAB400 /// </remarks> /// <param name="tipoArquivo"></param> /// <param name="numeroArquivoRemessa"></param> /// <param name="numeroRegistro"></param> /// <returns></returns> public virtual string GerarHeaderRemessa(TipoArquivo tipoArquivo, int numeroArquivoRemessa, ref int numeroRegistro) { try { var header = String.Empty; switch (tipoArquivo) { case TipoArquivo.CNAB240: // Cabeçalho do Arquivo header += ((IBancoCNAB240)this).GerarHeaderRemessaCNAB240(ref numeroArquivoRemessa, ref numeroRegistro); // Cabeçalho do Lote header += Environment.NewLine; header += ((IBancoCNAB240)this).GerarHeaderLoteRemessaCNAB240(ref numeroArquivoRemessa, ref numeroRegistro); break; case TipoArquivo.CNAB400: header += ((IBancoCNAB400)this).GerarHeaderRemessaCNAB400(ref numeroArquivoRemessa, ref numeroRegistro); break; default: throw new Exception("Tipo de arquivo inexistente."); } return(header); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroHeaderDoArquivoRemessa(ex); } }
public string GerarDetalheRemessa(TipoArquivo tipoArquivo, Boleto boleto, ref int numeroRegistro) { try { string detalhe = Empty, strline = Empty; switch (tipoArquivo) { case TipoArquivo.CNAB400: detalhe += GerarDetalheRemessaCNAB400Registro1(boleto, ref numeroRegistro); strline = GerarDetalheRemessaCNAB400Registro2(boleto, ref numeroRegistro); if (!IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } strline = GerarDetalheRemessaCNAB400Registro5(boleto, ref numeroRegistro); if (!IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } break; default: throw new Exception("Tipo de arquivo inexistente."); } return(detalhe); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
public string GerarDetalheRemessa(TipoArquivo tipoArquivo, Boleto boleto, ref int numeroRegistro) { try { var detalhe = string.Empty; var strline = string.Empty; switch (tipoArquivo) { case TipoArquivo.CNAB400: // Registro 1 - Obrigatório detalhe += GerarDetalheRemessaCNAB400Registro1(boleto, ref numeroRegistro); // Registro 1 Adicional - Registro Opcional strline = GerarDetalheRemessaCNAB400Registro1Mensagem(boleto, ref numeroRegistro); if (!string.IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } break; default: throw new Exception("Tipo de arquivo inexistente."); } return(detalhe); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
public string GerarTrailerRemessa(TipoArquivo tipoArquivo, int numeroArquivoRemessa, ref int numeroRegistroGeral, decimal valorBoletoGeral, int numeroRegistroCobrancaSimples, decimal valorCobrancaSimples, int numeroRegistroCobrancaVinculada, decimal valorCobrancaVinculada, int numeroRegistroCobrancaCaucionada, decimal valorCobrancaCaucionada, int numeroRegistroCobrancaDescontada, decimal valorCobrancaDescontada) { try { var trailer = string.Empty; switch (tipoArquivo) { case TipoArquivo.CNAB400: trailer += GerarTrailerRemessaCNAB400(ref numeroRegistroGeral, valorBoletoGeral); break; default: throw new Exception("Tipo de arquivo inexistente."); } return(trailer); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerrarRegistroTrailerDoArquivoRemessa(ex); } }
public string GerarHeaderRemessa(TipoArquivo tipoArquivo, int numeroArquivoRemessa, ref int numeroRegistroGeral) { try { var header = Empty; switch (tipoArquivo) { case TipoArquivo.CNAB240: // Cabeçalho do Arquivo header += GerarHeaderRemessaCNAB240(numeroArquivoRemessa, ref numeroRegistroGeral); // Cabeçalho do Lote header += Environment.NewLine; header += GerarHeaderLoteRemessaCNAB240(numeroArquivoRemessa, ref numeroRegistroGeral); break; default: throw new Exception("Santander - Header - Tipo de arquivo inexistente."); } return(header); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroHeaderDoArquivoRemessa(ex); } }
public override string FormatarNomeArquivoRemessa(int sequencial) { var agora = DateTime.Now; var mes = agora.Month.ToString(); if (mes == "10") { mes = "O"; } if (mes == "11") { mes = "N"; } if (mes == "12") { mes = "D"; } var dia = agora.Day.ToString().PadLeft(2, '0'); if (sequencial < 0 || sequencial > 10) { throw BoletoNetCoreException.NumeroSequencialInvalido(sequencial); } if (sequencial < 1) // se 0 ou 1 é o primeiro arquivo do dia { return(string.Format("{0}{1}{2}.{3}", Beneficiario.Codigo, mes, dia, "CRM")); } //número máximos de arquivos enviados no dia são 10 return(string.Format("{0}{1}{2}.{3}", Beneficiario.Codigo, mes, dia, $"RM{(sequencial == 10 ? 0 : sequencial)}")); }
public virtual string GerarTrailerRemessa(TipoArquivo tipoArquivo, int numeroArquivoRemessa, ref int numeroRegistroGeral, decimal valorBoletoGeral, int numeroRegistroCobrancaSimples, decimal valorCobrancaSimples, int numeroRegistroCobrancaVinculada, decimal valorCobrancaVinculada, int numeroRegistroCobrancaCaucionada, decimal valorCobrancaCaucionada, int numeroRegistroCobrancaDescontada, decimal valorCobrancaDescontada) { try { var trailer = String.Empty; switch (tipoArquivo) { case TipoArquivo.CNAB240: return(((IBancoCNAB240)this).GerarTrailerLoteRemessaCNAB240( ref numeroArquivoRemessa, numeroRegistroGeral, numeroRegistroCobrancaSimples, valorCobrancaSimples, numeroRegistroCobrancaVinculada, valorCobrancaVinculada, numeroRegistroCobrancaCaucionada, valorCobrancaCaucionada, numeroRegistroCobrancaDescontada, valorCobrancaDescontada) + Environment.NewLine + ((IBancoCNAB240)this).GerarTrailerRemessaCNAB240( numeroRegistroGeral, valorBoletoGeral, numeroRegistroCobrancaSimples, valorCobrancaSimples, numeroRegistroCobrancaVinculada, valorCobrancaVinculada, numeroRegistroCobrancaCaucionada, valorCobrancaCaucionada, numeroRegistroCobrancaDescontada, valorCobrancaDescontada)); case TipoArquivo.CNAB400: return(((IBancoCNAB400)this).GerarTrailerRemessaCNAB400( numeroRegistroGeral, valorBoletoGeral, numeroRegistroCobrancaSimples, valorCobrancaSimples, numeroRegistroCobrancaVinculada, valorCobrancaVinculada, numeroRegistroCobrancaCaucionada, valorCobrancaCaucionada, numeroRegistroCobrancaDescontada, valorCobrancaDescontada)); case TipoArquivo.CNAB150: return(((IBancoCNAB150)this).GerarTrailerLoteRemessaCNAB150( ref numeroArquivoRemessa, numeroRegistroGeral, valorBoletoGeral, numeroRegistroCobrancaSimples, valorCobrancaSimples, numeroRegistroCobrancaVinculada, valorCobrancaVinculada, numeroRegistroCobrancaCaucionada, valorCobrancaCaucionada, numeroRegistroCobrancaDescontada, valorCobrancaDescontada) + Environment.NewLine + ((IBancoCNAB150)this).GerarTrailerRemessaCNAB150( numeroRegistroGeral, valorBoletoGeral, numeroRegistroCobrancaSimples, valorCobrancaSimples, numeroRegistroCobrancaVinculada, valorCobrancaVinculada, numeroRegistroCobrancaCaucionada, valorCobrancaCaucionada, numeroRegistroCobrancaDescontada, valorCobrancaDescontada)); default: throw new Exception("Tipo de arquivo inexistente."); } } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerrarRegistroTrailerDoArquivoRemessa(ex); } }
public void FormataBeneficiario() { ContaBancaria contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoCecred> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("Pagar preferencialmente nas cooperativas do Sistema Ailos.", "", "", 7); Beneficiario.CodigoFormatado = contaBancaria.Agencia + "-" + contaBancaria.DigitoAgencia + " " + Beneficiario.ContaBancaria.Conta + "-" + Beneficiario.ContaBancaria.DigitoConta; }
public void FormataCedente() { var contaBancaria = Cedente.ContaBancaria; if (!CarteiraFactory <BancoItau> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("ATÉ O VENCIMENTO EM QUALQUER BANCO. APÓS O VENCIMENTO SOMENTE NO ITAÚ.", "", "", 5); Cedente.CodigoFormatado = $"{contaBancaria.Agencia} / {contaBancaria.Conta}-{contaBancaria.DigitoConta}"; }
public void FormatarDados(string localPagamento, string mensagemFixaTopoBoleto, int digitosConta) { var agencia = Agencia; Agencia = agencia.Length <= 4 ? agencia.PadLeft(4, '0') : throw BoletoNetCoreException.AgenciaInvalida(agencia, 4); var conta = Conta; Conta = conta.Length <= digitosConta?conta.PadLeft(digitosConta, '0') : throw BoletoNetCoreException.ContaInvalida(conta, digitosConta); LocalPagamento = localPagamento; MensagemFixaTopoBoleto = mensagemFixaTopoBoleto; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoSafra> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("ATÉ O VENCIMENTO EM QUALQUER BANCO. APÓS O VENCIMENTO SOMENTE NO SAFRA.", "", "", 6); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia}-{contaBancaria.DigitoAgencia} / {contaBancaria.Conta}-{contaBancaria.DigitoConta}"; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoSicredi> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.", "", "", 9); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia}.{contaBancaria.OperacaoConta}.{Beneficiario.Codigo}"; }
public void FormataCedente() { var contaBancaria = Cedente.ContaBancaria; if (!CarteiraFactory <BancoBanrisul> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO.", "SAC BANRISUL: 0800 646 1515<br>OUVIDORIA BANRISUL: 0800 644 2200", 8); Cedente.CodigoFormatado = $"{contaBancaria.Agencia} {contaBancaria.Conta}{contaBancaria.DigitoConta}"; }
public string GerarDetalheRemessa(TipoArquivo tipoArquivo, Boleto boleto, ref int numeroRegistro) { try { var detalhe = Empty; var strline = ""; //base.GerarDetalheRemessa(boleto, numeroRegistro, tipoArquivo); switch (tipoArquivo) { case TipoArquivo.CNAB240: // Segmento P (Obrigatório) detalhe += GerarDetalheSegmentoPRemessaCNAB240(boleto, ref numeroRegistro); // Segmento Q (Obrigatório) detalhe += Environment.NewLine; detalhe += GerarDetalheSegmentoQRemessaCNAB240(boleto, ref numeroRegistro); // Segmento R (Opcional) strline = GerarDetalheSegmentoRRemessaCNAB240(boleto, ref numeroRegistro); if (!IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } // Segmento S (Opcional) strline = GerarDetalheSegmentoSRemessaCNAB240(boleto, ref numeroRegistro); if (!IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } break; default: throw new Exception("Santander - Detalhe - Tipo de arquivo inexistente."); } return(detalhe); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
public void FormataCedente() { var contaBancaria = Cedente.ContaBancaria; if (!CarteiraFactory <BancoSantander> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("ATÉ O VENCIMENTO EM QUALQUER BANCO. APÓS O VENCIMENTO SOMENTE NO SANTANDER.", "", digitosConta: 9); var codigoCedente = Cedente.Codigo; Cedente.Codigo = codigoCedente.Length <= 7 ? codigoCedente.PadLeft(7, '0') : throw BoletoNetCoreException.CodigoCedenteInvalido(codigoCedente, 7); Cedente.CodigoFormatado = $"{contaBancaria.Agencia} / {Cedente.Codigo}"; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoSantander> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PAGÁVEL PREFERENCIALMENTE NO BANCO SANTANDER.", "", "", digitosConta: 9); var codigoBeneficiario = Beneficiario.Codigo; Beneficiario.Codigo = codigoBeneficiario.Length <= 7 ? codigoBeneficiario.PadLeft(7, '0') : throw BoletoNetCoreException.CodigoBeneficiarioInvalido(codigoBeneficiario, 7); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia} / {Beneficiario.Codigo}"; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoBradesco> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PAGÁVEL PREFERENCIALMENTE NA REDE BRADESCO OU BRADESCO EXPRESSO.", "", "", 7); var codigoBeneficiario = Beneficiario.Codigo; Beneficiario.Codigo = codigoBeneficiario.Length <= 20 ? codigoBeneficiario.PadLeft(20, '0') : throw BoletoNetCoreException.CodigoBeneficiarioInvalido(codigoBeneficiario, 20); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia}-{contaBancaria.DigitoAgencia} / {contaBancaria.Conta}-{contaBancaria.DigitoConta}"; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoBrasil> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PAGÁVEL EM QUALQUER BANCO.", "", "", 8); if (Beneficiario.Codigo.Length != 7) { throw BoletoNetCoreException.CodigoBeneficiarioInvalido(Beneficiario.Codigo, 7); } Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia}{(string.IsNullOrEmpty(contaBancaria.DigitoAgencia) ? "" : "-" + contaBancaria.DigitoAgencia)} / {contaBancaria.Conta}{(string.IsNullOrEmpty(contaBancaria.DigitoConta) ? "" : "-" + contaBancaria.DigitoConta)}"; }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoSicredi> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } string localPagamento = "PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO."; if (!string.IsNullOrEmpty(contaBancaria.LocalPagamento) && !contaBancaria.LocalPagamento.Equals("PAGÁVEL EM QUALQUER BANCO.")) { localPagamento = contaBancaria.LocalPagamento; } contaBancaria.FormatarDados(localPagamento, "", "", 9); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia}.{contaBancaria.OperacaoConta}.{Beneficiario.Codigo}"; }
public virtual string GerarDetalheRemessa(TipoArquivo tipoArquivo, Boleto boleto, ref int numeroRegistro) { try { switch (tipoArquivo) { case TipoArquivo.CNAB240: return(((IBancoCNAB240)this)?.GerarDetalheRemessaCNAB240(boleto, ref numeroRegistro)); case TipoArquivo.CNAB400: return(((IBancoCNAB400)this)?.GerarDetalheRemessaCNAB400(boleto, ref numeroRegistro)); default: throw new Exception("Tipo de arquivo inexistente."); } } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
public string GerarHeaderRemessa(TipoArquivo tipoArquivo, int numeroArquivoRemessa, ref int numeroRegistroGeral) { try { var header = string.Empty; switch (tipoArquivo) { case TipoArquivo.CNAB400: header += GerarHeaderRemessaCNAB400(numeroArquivoRemessa, ref numeroRegistroGeral); break; default: throw new Exception("Header - Tipo de arquivo inexistente."); } return(header); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroHeaderDoArquivoRemessa(ex); } }
public string GerarDetalheRemessaCNAB400(Boleto boleto, ref int numeroRegistro) { try { // Registro 7 - Obrigatório string detalhe = GerarDetalheRemessaCNAB400Registro7(boleto, ref numeroRegistro); // Registro 5 - Registro Opcional - Multa var strline = GerarDetalheRemessaCNAB400Registro5Multa(boleto, ref numeroRegistro); if (!string.IsNullOrWhiteSpace(strline)) { detalhe += Environment.NewLine; detalhe += strline; } return(detalhe); } catch (Exception ex) { throw BoletoNetCoreException.ErroAoGerarRegistroDetalheDoArquivoRemessa(ex); } }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoCaixa> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } contaBancaria.FormatarDados("PREFERENCIALMENTE NAS CASAS LOTERICAS ATE O VALOR LIMITE", "", "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br>Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br>Ouvidoria: 0800 725 7474<br>caixa.gov.br<br>", 6); var codigoBeneficiario = Beneficiario.Codigo; if (codigoBeneficiario.Length <= 6) { Beneficiario.Codigo = codigoBeneficiario.PadLeft(6, '0'); if (Beneficiario.CodigoDV == Empty) { throw new Exception($"Dígito do código do beneficiário ({codigoBeneficiario}) não foi informado."); } Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia} / {codigoBeneficiario}-{Beneficiario.CodigoDV}"; } else if (codigoBeneficiario.Length == 7) { Beneficiario.Codigo = codigoBeneficiario; if (Beneficiario.CodigoDV != Empty) { throw new Exception($"Dígito do código do beneficiário ({codigoBeneficiario}) não deve ser informado quando codigo beneficiario tiver 7 dígitos."); } Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia} / {codigoBeneficiario}"; } else { throw BoletoNetCoreException.CodigoBeneficiarioInvalido(codigoBeneficiario, "6 ou 7"); } }
public void FormataBeneficiario() { var contaBancaria = Beneficiario.ContaBancaria; if (!CarteiraFactory <BancoSicoob> .CarteiraEstaImplementada(contaBancaria.CarteiraComVariacaoPadrao)) { throw BoletoNetCoreException.CarteiraNaoImplementada(contaBancaria.CarteiraComVariacaoPadrao); } var codigoBeneficiario = Beneficiario.Codigo; if (Beneficiario.CodigoDV == Empty) { throw new Exception($"Dígito do código do beneficiário ({codigoBeneficiario}) não foi informado."); } contaBancaria.FormatarDados("PAGÁVEL EM QUALQUER BANCO ATÉ A DATA DE VENCIMENTO.", "", "", 8); Beneficiario.Codigo = codigoBeneficiario.Length <= 6 ? codigoBeneficiario.PadLeft(6, '0'): throw BoletoNetCoreException.CodigoBeneficiarioInvalido(codigoBeneficiario, 6); Beneficiario.CodigoFormatado = $"{contaBancaria.Agencia} / {codigoBeneficiario}-{Beneficiario.CodigoDV}"; }
internal static ICarteira <T> ObterCarteira(string identificacao) => Carteiras.ContainsKey(identificacao) ? Carteiras[identificacao].Value : throw BoletoNetCoreException.CarteiraNaoImplementada(identificacao);