public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } try { if (boleto.CarteiraCobranca.Codigo == "CSB") { string nossoNumeroComposto = boleto.CedenteBoleto.CodigoCedente.PadLeft(5, '0') + boleto.IdentificadorInternoBoleto.PadLeft(5, '0'); string digitoAutoConferenciaNossoNumero = Common.Mod11(nossoNumeroComposto, 7).ToString(CultureInfo.InvariantCulture); string nossoNumeroFormatado = nossoNumeroComposto + digitoAutoConferenciaNossoNumero; boleto.SetNossoNumeroFormatado(nossoNumeroFormatado); return; } if (boleto.CarteiraCobranca.Codigo == "CNR") { /* Seguindo documentação CNR - Cobrança Não Registrada * Disponível em: https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cnrbarra.pdf */ string codigoDoPagador = boleto.IdentificadorInternoBoleto; string primeiroDigitoVerificador = CalculaPrimeiroDigitoVerificadorCnrTipo4(boleto.IdentificadorInternoBoleto); string segundoDigitoVerificador = CalculaSegundoDigitoVerificadorCnrTipo4(boleto.IdentificadorInternoBoleto, primeiroDigitoVerificador, boleto.CedenteBoleto.CodigoCedente, boleto.DataVencimento); boleto.SetNossoNumeroFormatado( String.Format("{0}{1}4{2}", codigoDoPagador, primeiroDigitoVerificador, segundoDigitoVerificador)); /* Padroniza com 16 dígitos */ boleto.SetNossoNumeroFormatado( boleto.NossoNumeroFormatado.PadLeft(16, '0')); return; } throw new NotImplementedException("Modelo de carteira de cobrança: " + boleto.CarteiraCobranca.Codigo + " não está implementado."); } catch (Exception ex) { throw new Exception("Falha ao tentar formatar nosso número.", ex); } }
public void FormataNossoNumero(Boleto boleto) { boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto); boleto.SetNossoNumeroFormatado( string.Format("{0}{1}", boleto.NossoNumeroFormatado.PadLeft(8, '0'), boleto.DigitoNossoNumero)); }
/// <summary> /// /// ******* /// /// O c�digo de barra para cobran�a cont�m 44 posi��es dispostas da seguinte forma: /// 01 a 03 - 3 - Identifica��o do Banco /// 04 a 04 - 1 - C�digo da Moeda /// 05 a 05 � 1 - D�gito verificador do C�digo de Barras /// 06 a 09 - 4 - Fator de vencimento /// 10 a 19 - 10 - Valor /// 20 a 44 � 25 - Campo Livre /// /// ******* /// /// </summary> public void FormataNossoNumero(Boleto boleto) { boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto); boleto.SetNossoNumeroFormatado( string.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado.PadLeft(11, '0'), boleto.DigitoNossoNumero)); }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto)) { throw new Exception("Sequencial nosso número não pode estar em branco."); } if (boleto.IdentificadorInternoBoleto.Length > 15) { throw new Exception("Sequencial nosso número não pode exceder 15 dígitos."); } string dvNossoNumero; /* * Informação reservada para arquivo de remessa * O tipo de modalidade são os 2 primeiros dígitos do Nosso Número */ boleto.IdentificadorInternoBoleto = boleto.IdentificadorInternoBoleto.Length == 1? "0" + boleto.IdentificadorInternoBoleto: boleto.IdentificadorInternoBoleto; boleto.TipoModalidade = boleto.IdentificadorInternoBoleto.Length > 1 ? ("00" + boleto.IdentificadorInternoBoleto).Substring(0, 2) : boleto.IdentificadorInternoBoleto.Substring(0, boleto.IdentificadorInternoBoleto.Length - 1); boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto.PadLeft(15, '0')); //Atribui ao Nosso Número o Identificador de Cobrança + Identificador do Emissor if (boleto.CarteiraCobranca.Codigo.Equals("RG")) { boleto.SetNossoNumeroFormatado( IdentificadorTipoCobrancaCarteiraSicgbRg + (boleto.CarteiraCobranca.BancoEmiteBoleto? "1" : IdentificadorEmissaoCedente) + boleto.NossoNumeroFormatado); // Permite 0 (zero) no DV do Nosso Número dvNossoNumero = Common.Mod11Base9Caixa(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", boleto.NossoNumeroFormatado, dvNossoNumero)); } else if (boleto.CarteiraCobranca.Codigo.Equals("SR")) { boleto.SetNossoNumeroFormatado( IdentificadorTipoCobrancaCarteiraSicgbSr + (boleto.CarteiraCobranca.BancoEmiteBoleto ? "1" : IdentificadorEmissaoCedente) + boleto.NossoNumeroFormatado); // Permite 0 (zero) no DV do Nosso Número dvNossoNumero = Common.Mod11Base9Caixa(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", boleto.NossoNumeroFormatado, dvNossoNumero)); } else { throw new Exception("Erro ao formatar nosso número"); } }
public void FormataNossoNumero(Boleto boleto) { try { var identificador = boleto.IdentificadorInternoBoleto.Trim().Replace(".", "").Replace("-", ""); if (string.IsNullOrEmpty(identificador)) { throw new Exception("Nosso Número não informado"); } if (identificador.Length > 8) { throw new Exception("Tamanho máximo para o Nosso Número são de 8 caracteres"); } identificador = identificador.PadLeft(8, '0'); int D1 = CalculaDVNossoNumero(identificador); int D2 = CalculaDVNossoNumero(string.Concat(identificador, D1), 10); boleto.SetNossoNumeroFormatado(string.Format("{0}.{1}{2}", identificador, D1, D2)); } catch (Exception ex) { throw new Exception("Erro ao formatar nosso número", ex); } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } // Usando Método e Geração do DAC do Nosso Número GerarDacNossoNumero(boleto); try { boleto.SetNossoNumeroFormatado(string.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, boleto.IdentificadorInternoBoleto, _dacNossoNumero)); // Usado para apresentação no boleto. //boleto.NossoNumero = String.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, // boleto.SequencialNossoNumero, _dacNossoNumero); } catch (Exception ex) { throw new Exception(string.Format("<BoletoBr>" + "{0}Mensagem: Falha ao formatar nosso número." + "{0}Carteira: " + boleto.CarteiraCobranca.Codigo + "{0}Numeração Sequencial: " + boleto.NossoNumeroFormatado + " - " + "DAC: " + _dacNossoNumero, Environment.NewLine), ex); } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } try { var identificadorInterno = boleto.IdentificadorInternoBoleto.PadLeft(10, '0'); var nossoNumero = identificadorInterno; // Usando Método e Geração do DAC do Nosso Número _dacNossoNumero = Mod11UniCred(nossoNumero, false); /* ** Os 10 dígitos seguintes devem estar entre a faixa numérica de 0000000001 a 9999999999, deverá ser único, não pode se repetir; ** O último dígito será Dígito Verificador (DV), */ boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", nossoNumero, _dacNossoNumero)); } catch (Exception ex) { throw new Exception(string.Format("<BoletoBr>" + "{0}Mensagem: Falha ao formatar nosso número." + "{0}Carteira: " + boleto.CarteiraCobranca.Codigo + "{0}Numeração Sequencial: " + boleto.NossoNumeroFormatado + " - " + "DAC: " + _dacNossoNumero, Environment.NewLine), ex); } }
public void FormataNossoNumero(Boleto boleto) { try { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } if (boleto.CarteiraCobranca.Tipo != "1" && boleto.CarteiraCobranca.Tipo != "2") { throw new Exception( "Informe o tipo da carteira. 1 - COBRANÇA DIRETA SEM REGISTRO 2 - COBRANÇA DIRETA COM REGISTRO"); } if (String.IsNullOrEmpty(boleto.CedenteBoleto.ContaBancariaCedente.Agencia)) { throw new Exception("Informe a Agencia da conta do cedente."); } if (String.IsNullOrEmpty(boleto.CedenteBoleto.ContaBancariaCedente.Conta)) { throw new Exception("Informe a Conta da conta do cedente."); } if (String.IsNullOrEmpty(boleto.CedenteBoleto.ContaBancariaCedente.DigitoConta)) { throw new Exception("Informe o Dígito da conta do cedente."); } var chave = "000" + boleto.CedenteBoleto.ContaBancariaCedente.Agencia.PadLeft(3, '0') + boleto.CedenteBoleto.ContaBancariaCedente.Conta.PadLeft(6, '0') + boleto.CedenteBoleto.ContaBancariaCedente.DigitoConta + boleto.CarteiraCobranca.Tipo + boleto.IdentificadorInternoBoleto.PadLeft(6, '0') + CodigoBanco.PadLeft(3, '0'); /*Calcular primeiro digito*/ var D1 = Common.Mod10(chave); chave += D1; /*Calcular segundo digito*/ var D2 = Common.Mod11Base7BRB(chave); chave += D2; boleto.SetNossoNumeroFormatado(string.Format("{0}{1}{2}{3}{4}", boleto.CarteiraCobranca.Tipo, boleto.IdentificadorInternoBoleto.PadLeft(6, '0'), CodigoBanco.PadLeft(3, '0'), D1, D2)); } catch (Exception ex) { throw new Exception(string.Format("<BoletoBr>" + "{0}Mensagem: Falha ao formatar nosso número." + "{0}Carteira: " + boleto.CarteiraCobranca.Codigo + "{0}Numeração Sequencial: " + boleto.NossoNumeroFormatado), ex); } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } boleto.SetNossoNumeroFormatado(String.Format("{0}{1}", boleto.IdentificadorInternoBoleto, Mod11Santander(boleto.IdentificadorInternoBoleto)).PadLeft(13, '0')); }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto)) { throw new Exception("Sequencial nosso número não pode estar em branco."); } if (boleto.IdentificadorInternoBoleto.Length > 15) { throw new Exception("Sequencial nosso número não pode exceder 15 dígitos."); } string dvNossoNumeroNC; boleto.SetNossoNumeroFormatado((boleto.IdentificadorInternoBoleto.Length > 8 ? boleto.IdentificadorInternoBoleto.Substring(0, 8) : boleto.IdentificadorInternoBoleto).PadLeft(8, '0')); dvNossoNumeroNC = Common.DigitoVerificadorBanrisulNC(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", boleto.NossoNumeroFormatado, dvNossoNumeroNC)); }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } if (boleto.CarteiraCobranca.Codigo == "110") { var numeroAgencia = boleto.CedenteBoleto.ContaBancariaCedente.Agencia.Replace(".", "").Replace("/", "").Replace("-", "").Replace(",", "").BoletoBrToStringSafe().PadLeft(4, '0'); var identificadorInternoBoleto = boleto.IdentificadorInternoBoleto.BoletoBrToStringSafe().PadLeft(10, '0'); var nossoNumeroComposto = numeroAgencia + "110" + identificadorInternoBoleto; boleto.SetNossoNumeroFormatado(String.Format("{0}-{1}", identificadorInternoBoleto, Common.Mod10(nossoNumeroComposto))); } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } if (boleto.CarteiraCobranca.Codigo == "1/01") { var numeroAgencia = boleto.CedenteBoleto.ContaBancariaCedente.Agencia.BoletoBrToStringSafe().PadLeft(4, '0'); var codigoCliente = (boleto.CedenteBoleto.CodigoCedente + boleto.CedenteBoleto.DigitoCedente).BoletoBrToStringSafe().PadLeft(10, '0'); var identificadorInternoBoleto = boleto.IdentificadorInternoBoleto.BoletoBrToStringSafe().PadLeft(7, '0'); var nossoNumeroComposto = numeroAgencia + codigoCliente + identificadorInternoBoleto; boleto.SetNossoNumeroFormatado(String.Format("{0}-{1}", identificadorInternoBoleto, Mod11Sicoob(nossoNumeroComposto))); } }
/// <summary> /// Valida se o boleto está preenchido com os campos mínimos requeridos. /// Dispara uma ApplicationException caso esteja faltando alguma informação. /// </summary> public void ValidaBoletoComNormasBanco(Boleto boleto) { //Verifica as carteiras implementadas if (!boleto.CarteiraCobranca.Codigo.Equals("CSB") & !boleto.CarteiraCobranca.Codigo.Equals("CNR")) { throw new NotImplementedException("Carteira n�o implementada. Utilize a carteira 'CSB' ou 'CNR'."); } //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe() == string.Empty) { throw new NotImplementedException("Nosso número inválido"); } //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe().BoletoBrToLong() == 0) { throw new NotImplementedException("Nosso número inválido"); } //Verifica se o tamanho para o NossoNumero s�o 10 d�gitos (5 range + 5 numero sequencial) - Válido para carteira CSB if (boleto.CarteiraCobranca.Codigo.Equals("CSB")) { if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length > 10) { throw new NotImplementedException("A quantidade de dígitos do nosso número para a carteira " + boleto.CarteiraCobranca.Codigo + ", são 10 números."); } else if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length < 10) { boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(10, '0')); } } //Verifica se data do documento � valida //if (boleto.DataDocumento.ToString("dd/MM/yyyy") == "01/01/0001") if (boleto.DataDocumento == DateTime.MinValue) { boleto.DataDocumento = DateTime.Now; } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) { throw new Exception("Sequencial Nosso Número não foi informado."); } try { var identificadorInterno = boleto.IdentificadorInternoBoleto.PadLeft(5, '0'); var prefix = DateTime.Now.Year.ToString().Substring(2); var nossoNumero = prefix + "2" + identificadorInterno; string seq = $@"{boleto.CedenteBoleto.ContaBancariaCedente.Agencia}{boleto.CedenteBoleto.ContaBancariaCedente.DigitoAgencia}{boleto.CedenteBoleto.CodigoCedente}{nossoNumero}"; // = aaaappcccccyybnnnnn // Usando Método e Geração do DAC do Nosso Número _dacNossoNumero = digNossoNroSicredi(seq); //GerarDacNossoNumero(seq); /* * AA/BXXXXX-D, onde: * AA = Ano (pode ser diferente do ano corrente) * B = Byte de geração (0 a 9). O Byte 1 só poderá ser informado pela Cooperativa * XXXXX = Número livre de 00000 a 99999 * D = Dígito verificador pelo módulo 11 */ boleto.SetNossoNumeroFormatado(string.Format("{0}/{1}{2}-{3}", prefix, "2", identificadorInterno, _dacNossoNumero)); } catch (Exception ex) { throw new Exception(string.Format("<BoletoBr>" + "{0}Mensagem: Falha ao formatar nosso número." + "{0}Carteira: " + boleto.CarteiraCobranca.Codigo + "{0}Numeração Sequencial: " + boleto.NossoNumeroFormatado + " - " + "DAC: " + _dacNossoNumero, Environment.NewLine), ex); } }
public void FormataNossoNumero(Boleto boleto) { boleto.SetNossoNumeroFormatado(string.Format("{0}", boleto.IdentificadorInternoBoleto.PadLeft(16, '0'))); }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) throw new Exception("Sequencial Nosso Número não foi informado."); // Usando Método e Geração do DAC do Nosso Número GerarDacNossoNumero(boleto); try { boleto.SetNossoNumeroFormatado(string.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, boleto.IdentificadorInternoBoleto, _dacNossoNumero)); // Usado para apresentação no boleto. //boleto.NossoNumero = String.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, // boleto.SequencialNossoNumero, _dacNossoNumero); } catch (Exception ex) { throw new Exception(string.Format("<BoletoBr>" + "{0}Mensagem: Falha ao formatar nosso número." + "{0}Carteira: " + boleto.CarteiraCobranca.Codigo + "{0}Numeração Sequencial: " + boleto.NossoNumeroFormatado + " - " + "DAC: " + _dacNossoNumero, Environment.NewLine), ex); } }
/// <summary> /// /// ******* /// /// O c�digo de barra para cobran�a cont�m 44 posi��es dispostas da seguinte forma: /// 01 a 03 - 3 - Identifica��o do Banco /// 04 a 04 - 1 - C�digo da Moeda /// 05 a 05 � 1 - D�gito verificador do C�digo de Barras /// 06 a 09 - 4 - Fator de vencimento /// 10 a 19 - 10 - Valor /// 20 a 44 � 25 - Campo Livre /// /// ******* /// /// </summary> public void FormataNossoNumero(Boleto boleto) { boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto); boleto.SetNossoNumeroFormatado( string.Format("{0}/{1}-{2}", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado.PadLeft(11, '0'), boleto.DigitoNossoNumero)); }
public void ValidaBoletoComNormasBanco(Boleto boleto) { boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.Replace("-", "")); //throw new NotImplementedException("Função não implementada."); if ( !((boleto.CarteiraCobranca.Codigo == "102") || (boleto.CarteiraCobranca.Codigo == "101") || (boleto.CarteiraCobranca.Codigo == "201") || (boleto.CarteiraCobranca.Codigo == "104"))) { throw new NotImplementedException("Carteira não implementada."); } //Banco 008 - Utilizar somente 09 posições do Nosso Numero (08 posições + DV), zerando os 04 primeiros dígitos if (CodigoBanco == "008") { if (boleto.NossoNumeroFormatado.Length != 8) { throw new NotImplementedException("Nosso Número deve ter 8 posições para o banco 008."); } } if (CodigoBanco == "033") { if (boleto.NossoNumeroFormatado.Length == 7 && boleto.CarteiraCobranca.Codigo.Equals("101")) { boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto.PadLeft(13, '0')); } if (boleto.NossoNumeroFormatado.Length != 13) { throw new NotSupportedException("Nosso Número deve ter 13 posições para o banco 033."); } } //Banco 353 - Utilizar somente 08 posições do Nosso Numero (07 posições + DV), zerando os 05 primeiros dígitos if (CodigoBanco == "353") { if (boleto.NossoNumeroFormatado.Length != 7) { throw new NotImplementedException("Nosso Número deve ter 7 posições para o banco 353."); } } if (boleto.CedenteBoleto.CodigoCedente.ToString().Length > 7) { throw new NotImplementedException("Código cedente deve ter no máximo 7 posições."); } if (EspecieDocumento.ValidaSigla(boleto.Especie) == "") { boleto.Especie = new EspecieDocumento(Convert.ToInt32("02")); } if (boleto.PercentualIOS > 10 & (CodigoBanco == "008" || CodigoBanco == "033" || CodigoBanco == "353")) { throw new Exception("O percentual do IOS é limitado a 9% para o Banco Santander"); } var nossoNumeroFormatadoA = boleto.NossoNumeroFormatado.Substring(0, boleto.NossoNumeroFormatado.Length - 1); var nossoNumeroFormatadoB = boleto.NossoNumeroFormatado.Remove(0, boleto.NossoNumeroFormatado.Length - 1); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", nossoNumeroFormatadoA, nossoNumeroFormatadoB)); /* TAMANHO DO CODIGO DE BARRAS DEVE SER 44 POSIÇÕES, CASO NÃO, GERAR EXCEPTION DE CODIGO DE BARRAS INVALIDO */ if (boleto.CodigoBarraBoleto.Length != 44) { throw new Exception( "O código de barras gerado para o boleto é invalido, verifique as configurações de carteira."); } }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) throw new Exception("Sequencial Nosso Número não foi informado."); boleto.SetNossoNumeroFormatado(String.Format("{0}{1}", boleto.IdentificadorInternoBoleto, Mod11Santander(boleto.IdentificadorInternoBoleto)).PadLeft(13, '0')); }
public void FormataCodigoBarra(Boleto boleto) { boleto.Moeda = this.MoedaBanco; boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.Replace("-", "")); string valorBoleto = boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""); valorBoleto = valorBoleto.PadLeft(10, '0'); //Criada por AFK #region Carteira 11 if (boleto.CarteiraCobranca.Codigo.Equals("11")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); } else { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } } #endregion Carteira 11 #region Carteira 16 if (boleto.CarteiraCobranca.Codigo.Equals("16")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); } else { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } } #endregion Carteira 16 #region Carteira 17 if (boleto.CarteiraCobranca.Codigo.Equals("17")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, Common.Mid(boleto.NossoNumeroFormatado, 1, 11), boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } else { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } } #endregion Carteira 17 #region Carteira 17-019 if (boleto.CarteiraCobranca.Codigo.Equals("17-019")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { #region Especificação Convênio 7 posições /* Posição Tamanho Picture Conteúdo 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘001’ 04 a 04 01 9(1) Código da Moeda = '9' 05 a 05 01 9(1) DV do Código de Barras (Anexo 10) 06 a 09 04 9(04) Fator de Vencimento (Anexo 8) 10 a 19 10 9(08) V(2) Valor 20 a 25 06 9(6) Zeros 26 a 42 17 9(17) Nosso-Número, sem o DV 26 a 32 9 (7) Número do Convênio fornecido pelo Banco (CCCCCCC) 33 a 42 9 (10) Complemento do Nosso-Número, sem DV (NNNNNNNNNN) 43 a 44 02 9(2) Tipo de Carteira/Modalidade de Cobrança */ #endregion Especificação Convênio 7 posições boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 17-019 #region Carteira 18 if (boleto.CarteiraCobranca.Codigo.Equals("18")) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } #endregion Carteira 18 #region Carteira 18-019 if (boleto.CarteiraCobranca.Codigo.Equals("18-019")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { #region Especificação Convênio 7 posições /* Posição Tamanho Picture Conteúdo 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘001’ 04 a 04 01 9(1) Código da Moeda = '9' 05 a 05 01 9(1) DV do Código de Barras (Anexo 10) 06 a 09 04 9(04) Fator de Vencimento (Anexo 8) 10 a 19 10 9(08) V(2) Valor 20 a 25 06 9(6) Zeros 26 a 42 17 9(17) Nosso-Número, sem o DV 26 a 32 9 (7) Número do Convênio fornecido pelo Banco (CCCCCCC) 33 a 42 9 (10) Complemento do Nosso-Número, sem DV (NNNNNNNNNN) 43 a 44 02 9(2) Tipo de Carteira/Modalidade de Cobrança */ #endregion Especificação Convênio 7 posições boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); else boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 18-019 //Para atender o cliente Fiemg foi adptado no código na variação 18-027 as variações 18-035 e 18-140 #region Carteira 18-027 if (boleto.CarteiraCobranca.Codigo.Equals("18-027")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { #region Especificação Convênio 7 posições /* Posição Tamanho Picture Conteúdo 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘001’ 04 a 04 01 9(1) Código da Moeda = '9' 05 a 05 01 9(1) DV do Código de Barras (Anexo 10) 06 a 09 04 9(04) Fator de Vencimento (Anexo 8) 10 a 19 10 9(08) V(2) Valor 20 a 25 06 9(6) Zeros 26 a 42 17 9(17) Nosso-Número, sem o DV 26 a 32 9 (7) Número do Convênio fornecido pelo Banco (CCCCCCC) 33 a 42 9 (10) Complemento do Nosso-Número, sem DV (NNNNNNNNNN) 43 a 44 02 9(2) Tipo de Carteira/Modalidade de Cobrança */ #endregion Especificação Convênio 7 posições boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento).ToString("0000"), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); else boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 18-027 #region Carteira 18-035 if (boleto.CarteiraCobranca.Codigo.Equals("18-035")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { #region Especificação Convênio 7 posições /* Posição Tamanho Picture Conteúdo 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘001’ 04 a 04 01 9(1) Código da Moeda = '9' 05 a 05 01 9(1) DV do Código de Barras (Anexo 10) 06 a 09 04 9(04) Fator de Vencimento (Anexo 8) 10 a 19 10 9(08) V(2) Valor 20 a 25 06 9(6) Zeros 26 a 42 17 9(17) Nosso-Número, sem o DV 26 a 32 9 (7) Número do Convênio fornecido pelo Banco (CCCCCCC) 33 a 42 9 (10) Complemento do Nosso-Número, sem DV (NNNNNNNNNN) 43 a 44 02 9(2) Tipo de Carteira/Modalidade de Cobrança */ #endregion Especificação Convênio 7 posições boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento).ToString("0000"), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); else boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 18-035 #region Carteira 18-140 if (boleto.CarteiraCobranca.Codigo.Equals("18-140")) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { #region Especificação Convênio 7 posições /* Posição Tamanho Picture Conteúdo 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘001’ 04 a 04 01 9(1) Código da Moeda = '9' 05 a 05 01 9(1) DV do Código de Barras (Anexo 10) 06 a 09 04 9(04) Fator de Vencimento (Anexo 8) 10 a 19 10 9(08) V(2) Valor 20 a 25 06 9(6) Zeros 26 a 42 17 9(17) Nosso-Número, sem o DV 26 a 32 9 (7) Número do Convênio fornecido pelo Banco (CCCCCCC) 33 a 42 9 (10) Complemento do Nosso-Número, sem DV (NNNNNNNNNN) 43 a 44 02 9(2) Tipo de Carteira/Modalidade de Cobrança */ #endregion Especificação Convênio 7 posições boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento).ToString("0000"), valorBoleto, "000000", boleto.NossoNumeroFormatado, LimparCarteira(boleto.CarteiraCobranca.Codigo).PadLeft(2, '0')); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { if (boleto.TipoModalidade.Equals("21")) boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado, "21"); else boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, LimparCarteira(boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 18-140 #region Carteira 31 if (boleto.CarteiraCobranca.Codigo.Equals("31")) { boleto.CodigoBarraBoleto = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", this.CodigoBanco.PadLeft(3, '0'), boleto.Moeda, Common.FatorVencimento(boleto.DataVencimento), valorBoleto, boleto.NossoNumeroFormatado, boleto.CedenteBoleto.ContaBancariaCedente.Agencia, boleto.CedenteBoleto.ContaBancariaCedente.Conta, boleto.CarteiraCobranca.Codigo); } #endregion Carteira 31 _digitoAutoConferenciaBoleto = Common.Mod11(boleto.CodigoBarraBoleto, 9); boleto.CodigoBarraBoleto = Common.Left(boleto.CodigoBarraBoleto, 4) + _digitoAutoConferenciaBoleto + Common.Right(boleto.CodigoBarraBoleto, 39); }
public void FormataNossoNumero(Boleto boleto) { if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { boleto.SetNossoNumeroFormatado(string.Format("{0}{1}-{2}", boleto.CedenteBoleto.Convenio, boleto.IdentificadorInternoBoleto.PadLeft(7, '0'), Mod11BancoBrasil(boleto.IdentificadorInternoBoleto))); return; } if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) //somente monta o digito verificador no nosso numero se o convenio tiver 6 posições { boleto.SetNossoNumeroFormatado(string.Format("{0}{1}-{2}", boleto.CedenteBoleto.Convenio, boleto.IdentificadorInternoBoleto.PadLeft(7, '0'), Mod11BancoBrasil(boleto.IdentificadorInternoBoleto))); return; //switch (boleto.CarteiraCobranca.Codigo) //{ // case "18-019": // boleto.SetNossoNumeroFormatado(string.Format("{0}/{1}-{2}", LimparCarteira(boleto.CarteiraCobranca.Codigo), boleto.SequencialNossoNumero, Mod11BancoBrasil(boleto.SequencialNossoNumero))); // return; //} } if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.IdentificadorInternoBoleto)); return; } switch (boleto.CarteiraCobranca.Codigo) { case "17-019": case "18-019": boleto.SetNossoNumeroFormatado(string.Format("{0}/{1}", LimparCarteira(boleto.CarteiraCobranca.Codigo), boleto.IdentificadorInternoBoleto)); return; case "31": boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio.PadLeft(7, '0'), boleto.IdentificadorInternoBoleto)); return; } throw new Exception("Não foi possível formatar o nosso número para o boleto " + boleto.NumeroDocumento); }
public void ValidaBoletoComNormasBanco(Boleto boleto) { if (string.IsNullOrEmpty(boleto.CarteiraCobranca.Codigo)) throw new Exception("Carteira não informada. Utilize a carteira 11, 16, 17, 18, 18-019, 18-027, 18-035, 18-140 ou 31."); //Verifica as carteiras implementadas if (!boleto.CarteiraCobranca.Codigo.Equals("11") & !boleto.CarteiraCobranca.Codigo.Equals("16") & !boleto.CarteiraCobranca.Codigo.Equals("17") & !boleto.CarteiraCobranca.Codigo.Equals("17-019") & !boleto.CarteiraCobranca.Codigo.Equals("18") & !boleto.CarteiraCobranca.Codigo.Equals("18-019") & !boleto.CarteiraCobranca.Codigo.Equals("18-027") & !boleto.CarteiraCobranca.Codigo.Equals("18-035") & !boleto.CarteiraCobranca.Codigo.Equals("18-140") & !boleto.CarteiraCobranca.Codigo.Equals("31")) throw new Exception("Carteira não informada. Utilize a carteira 11, 16, 17, 17-019, 18, 18-019, 18-027, 18-035, 18-140 ou 31."); //Verifica se o nosso número é válido if (boleto.NossoNumeroFormatado == String.Empty) throw new Exception("Nosso número inválido"); #region Carteira 11 //Carteira 18 com nosso número de 11 posições if (boleto.CarteiraCobranca.Codigo.Equals("11")) { if (!boleto.TipoModalidade.Equals("21")) { if (boleto.NossoNumeroFormatado.Length > 11) throw new ValidacaoBoletoException(String.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); if (boleto.CedenteBoleto.Convenio.Length == 6) boleto.SetNossoNumeroFormatado(String.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(11, '0'))); else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } else { if (boleto.CedenteBoleto.Convenio.Length != 6) throw new ValidacaoBoletoException(String.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } #endregion Carteira 11 #region Carteira 16 //Carteira 18 com nosso número de 11 posições if (boleto.CarteiraCobranca.Codigo.Equals("16")) { if (!boleto.TipoModalidade.Equals("21")) { if (boleto.NossoNumeroFormatado.Length > 11) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); if (boleto.CedenteBoleto.Convenio.Length == 6) boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(11, '0'))); else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } else { if (boleto.CedenteBoleto.Convenio.Length != 6) throw new ValidacaoBoletoException(string.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } #endregion Carteira 16 #region Carteira 17 //Carteira 17 if (boleto.CarteiraCobranca.Codigo.Equals("17")) { switch (boleto.CedenteBoleto.Convenio.Length) { //O BB manda como padrão 7 posições, mas é possível solicitar um convênio com 6 posições na carteira 17 case 6: if (boleto.NossoNumeroFormatado.Length > 12) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 12 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(12, '0')); break; case 7: if (boleto.NossoNumeroFormatado.Length > 17) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); break; default: throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, o número do convênio deve ter 6 ou 7 posições", boleto.CarteiraCobranca.Codigo)); } } #endregion Carteira 17 #region Carteira 17-019 //Carteira 17, com variação 019 if (boleto.CarteiraCobranca.Codigo.Equals("17-019")) { /* * Convênio de 7 posições * Nosso Número com 17 posições */ if (boleto.CedenteBoleto.Convenio.Length == 7) { if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); } /* * Convênio de 6 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.Length == 6) { //Nosso Número com 17 posições if ((boleto.CedenteBoleto.CodigoCedente.Length + boleto.NossoNumeroFormatado.Length) > 11) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número. Onde o nosso número é formado por CCCCCCNNNNN-X: C -> número do convênio fornecido pelo Banco, N -> seqüencial atribuído pelo cliente e X -> dígito verificador do “Nosso-Número”.", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(5, '0'))); } /* * Convênio de 4 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.Length == 4) { if (boleto.NossoNumeroFormatado.Length > 7) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 7 de posições para o nosso número [{1}]", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(7, '0'))); } else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } #endregion Carteira 17-019 #region Carteira 18 //Carteira 18 com nosso número de 11 posições if (boleto.CarteiraCobranca.Codigo.Equals("18")) boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); #endregion Carteira 18 #region Carteira 18-019 //Carteira 18, com variação 019 if (boleto.CarteiraCobranca.Codigo.Equals("18-019")) { /* * Convênio de 7 posições * Nosso Número com 17 posições */ if (boleto.CedenteBoleto.Convenio.Length == 7) { if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); } /* * Convênio de 6 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.Length == 6) { //Modalidades de Cobrança Sem Registro – Carteira 16 e 18 //Nosso Número com 17 posições if (!boleto.TipoModalidade.Equals("21")) { if ((boleto.CedenteBoleto.CodigoCedente.ToString().Length + boleto.NossoNumeroFormatado.Length) > 11) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número. Onde o nosso número é formado por CCCCCCNNNNN-X: C -> número do convênio fornecido pelo Banco, N -> seqüencial atribuído pelo cliente e X -> dígito verificador do “Nosso-Número”.", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(5, '0'))); } else { if (boleto.CedenteBoleto.Convenio.ToString().Length != 6) throw new ValidacaoBoletoException(string.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } /* * Convênio de 4 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { if (boleto.NossoNumeroFormatado.Length > 7) throw new NotImplementedException(string.Format("Para a carteira {0}, a quantidade máxima são de 7 de posições para o nosso número [{1}]", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(7, '0'))); } else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } #endregion Carteira 18-019 //Para atender o cliente Fiemg foi adaptado no código na variação 18-027 as variações 18-035 e 18-140 #region Carteira 18-027 //Carteira 18, com variação 019 if (boleto.CarteiraCobranca.Codigo.Equals("18-027")) { /* * Convênio de 7 posições * Nosso Número com 17 posições */ if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { if (boleto.NossoNumeroFormatado.Length > 10) throw new NotImplementedException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); } /* * Convênio de 6 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { //Modalidades de Cobrança Sem Registro – Carteira 16 e 18 //Nosso Número com 17 posições if (!boleto.TipoModalidade.Equals("21")) { if ((boleto.CedenteBoleto.CodigoCedente.ToString().Length + boleto.NossoNumeroFormatado.Length) > 11) throw new NotImplementedException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número. Onde o nosso número é formado por CCCCCCNNNNN-X: C -> número do convênio fornecido pelo Banco, N -> seqüencial atribuído pelo cliente e X -> dígito verificador do “Nosso-Número”.", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(5, '0'))); } else { if (boleto.CedenteBoleto.Convenio.ToString().Length != 6) throw new NotImplementedException(string.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } /* * Convênio de 4 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { if (boleto.NossoNumeroFormatado.Length > 7) throw new NotImplementedException(string.Format("Para a carteira {0}, a quantidade máxima são de 7 de posições para o nosso número [{1}]", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(7, '0'))); } else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } #endregion Carteira 18-027 #region Carteira 18-035 //Carteira 18, com variação 019 if (boleto.CarteiraCobranca.Codigo.Equals("18-035")) { /* * Convênio de 7 posições * Nosso Número com 17 posições */ if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); } /* * Convênio de 6 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { //Modalidades de Cobrança Sem Registro – Carteira 16 e 18 //Nosso Número com 17 posições if (!boleto.TipoModalidade.Equals("21")) { if ((boleto.CedenteBoleto.CodigoCedente.ToString().Length + boleto.NossoNumeroFormatado.Length) > 11) throw new NotImplementedException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número. Onde o nosso número é formado por CCCCCCNNNNN-X: C -> número do convênio fornecido pelo Banco, N -> seqüencial atribuído pelo cliente e X -> dígito verificador do “Nosso-Número”.", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(5, '0'))); } else { if (boleto.CedenteBoleto.Convenio.ToString().Length != 6) throw new NotImplementedException(string.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } /* * Convênio de 4 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { if (boleto.NossoNumeroFormatado.Length > 7) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 7 de posições para o nosso número [{1}]", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(7, '0'))); } else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } #endregion Carteira 18-035 #region Carteira 18-140 //Carteira 18, com variação 019 if (boleto.CarteiraCobranca.Codigo.Equals("18-140")) { /* * Convênio de 7 posições * Nosso Número com 17 posições */ if (boleto.CedenteBoleto.Convenio.ToString().Length == 7) { if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); } /* * Convênio de 6 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 6) { //Modalidades de Cobrança Sem Registro – Carteira 16 e 18 //Nosso Número com 17 posições if (!boleto.TipoModalidade.Equals("21")) { if ((boleto.CedenteBoleto.CodigoCedente.ToString().Length + boleto.NossoNumeroFormatado.Length) > 11) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 11 de posições para o nosso número. Onde o nosso número é formado por CCCCCCNNNNN-X: C -> número do convênio fornecido pelo Banco, N -> seqüencial atribuído pelo cliente e X -> dígito verificador do “Nosso-Número”.", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(5, '0'))); } else { if (boleto.CedenteBoleto.Convenio.ToString().Length != 6) throw new ValidacaoBoletoException(string.Format("Para a carteira {0} e o tipo da modalidade 21, o número do convênio são de 6 posições", boleto.CarteiraCobranca.Codigo)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(17, '0')); } } /* * Convênio de 4 posições * Nosso Número com 11 posições */ else if (boleto.CedenteBoleto.Convenio.ToString().Length == 4) { if (boleto.NossoNumeroFormatado.Length > 7) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 7 de posições para o nosso número [{1}]", boleto.CarteiraCobranca.Codigo, boleto.NossoNumeroFormatado)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(7, '0'))); } else boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(11, '0')); } #endregion Carteira 18-140 #region Carteira 31 //Carteira 31 if (boleto.CarteiraCobranca.Codigo.Equals("31")) { switch (boleto.CedenteBoleto.Convenio.ToString().Length) { //O BB manda como padrão 7 posições, mas é possível solicitar um convênio com 6 posições na carteira 31 case 5: if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 12 de posições para o nosso número", boleto.CarteiraCobranca)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(10, '0')); break; case 6: if (boleto.NossoNumeroFormatado.Length > 10) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 12 de posições para o nosso número", boleto.CarteiraCobranca)); boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(10, '0')); break; case 7: if (boleto.NossoNumeroFormatado.Length > 17) throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, a quantidade máxima são de 10 de posições para o nosso número", boleto.CarteiraCobranca)); boleto.SetNossoNumeroFormatado(string.Format("{0}{1}", boleto.CedenteBoleto.Convenio, boleto.NossoNumeroFormatado.PadLeft(10, '0'))); break; default: throw new ValidacaoBoletoException(string.Format("Para a carteira {0}, o número do convênio deve ter 6 ou 7 posições", boleto.CarteiraCobranca)); } } #endregion Carteira 31 #region Agência e Conta Corrente //Verificar se a Agencia esta correta if (boleto.CedenteBoleto.ContaBancariaCedente.Agencia.Length > 4) throw new NotImplementedException("A quantidade de dígitos da Agência " + boleto.CedenteBoleto.ContaBancariaCedente.Agencia + ", são de 4 números."); else if (boleto.CedenteBoleto.ContaBancariaCedente.Agencia.Length < 4) boleto.CedenteBoleto.ContaBancariaCedente.Agencia = boleto.CedenteBoleto.ContaBancariaCedente.Agencia.PadLeft(4, '0'); //Verificar se a Conta esta correta if (boleto.CedenteBoleto.ContaBancariaCedente.Conta.Length > 8) throw new NotImplementedException("A quantidade de dígitos da Conta " + boleto.CedenteBoleto.ContaBancariaCedente.Conta + ", são de 8 números."); else if (boleto.CedenteBoleto.ContaBancariaCedente.Conta.Length < 8) boleto.CedenteBoleto.ContaBancariaCedente.Conta = boleto.CedenteBoleto.ContaBancariaCedente.Conta.PadLeft(8, '0'); #endregion Agência e Conta Corrente }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto)) throw new Exception("Sequencial nosso número não pode estar em branco."); if (boleto.IdentificadorInternoBoleto.Length > 15) throw new Exception("Sequencial nosso número não pode exceder 15 dígitos."); string dvNossoNumero; /* * Informação reservada para arquivo de remessa * O tipo de modalidade são os 2 primeiros dígitos do Nosso Número */ boleto.TipoModalidade = boleto.IdentificadorInternoBoleto.Substring(0, 2); boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto.PadLeft(15, '0')); //Atribui ao Nosso Número o Identificador de Cobrança + Identificador do Emissor if (boleto.CarteiraCobranca.Codigo.Equals("RG")) { boleto.SetNossoNumeroFormatado( IdentificadorTipoCobrancaCarteiraSicgbRg + IdentificadorEmissaoCedente + boleto.NossoNumeroFormatado); // Permite 0 (zero) no DV do Nosso Número dvNossoNumero = Common.Mod11(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", boleto.NossoNumeroFormatado, dvNossoNumero)); } else if (boleto.CarteiraCobranca.Codigo.Equals("SR")) { boleto.SetNossoNumeroFormatado( IdentificadorTipoCobrancaCarteiraSicgbSr + IdentificadorEmissaoCedente + boleto.NossoNumeroFormatado); // Permite 0 (zero) no DV do Nosso Número dvNossoNumero = Common.Mod11(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", boleto.NossoNumeroFormatado, dvNossoNumero)); } else { throw new Exception("Erro ao formatar nosso número"); } }
public void ValidaBoletoComNormasBanco(Boleto boleto) { boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.Replace("-", "")); //throw new NotImplementedException("Função não implementada."); if ( !((boleto.CarteiraCobranca.Codigo == "102") || (boleto.CarteiraCobranca.Codigo == "101") || (boleto.CarteiraCobranca.Codigo == "201"))) throw new NotImplementedException("Carteira não implementada."); //Banco 008 - Utilizar somente 09 posições do Nosso Numero (08 posições + DV), zerando os 04 primeiros dígitos if (CodigoBanco == "008") { if (boleto.NossoNumeroFormatado.Length != 8) throw new NotImplementedException("Nosso Número deve ter 8 posições para o banco 008."); } if (CodigoBanco == "033") { if (boleto.NossoNumeroFormatado.Length == 7 && boleto.CarteiraCobranca.Codigo.Equals("101")) boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto.PadLeft(13, '0')); if (boleto.NossoNumeroFormatado.Length != 13) throw new NotSupportedException("Nosso Número deve ter 13 posições para o banco 033."); } //Banco 353 - Utilizar somente 08 posições do Nosso Numero (07 posições + DV), zerando os 05 primeiros dígitos if (CodigoBanco == "353") { if (boleto.NossoNumeroFormatado.Length != 7) throw new NotImplementedException("Nosso Número deve ter 7 posições para o banco 353."); } if (boleto.CedenteBoleto.CodigoCedente.ToString().Length > 7) throw new NotImplementedException("Código cedente deve ter no máximo 7 posições."); if (EspecieDocumento.ValidaSigla(boleto.Especie) == "") boleto.Especie = new EspecieDocumento(Convert.ToInt32("02")); if (boleto.PercentualIOS > 10 & (CodigoBanco == "008" || CodigoBanco == "033" || CodigoBanco == "353")) throw new Exception("O percentual do IOS é limitado a 9% para o Banco Santander"); var nossoNumeroFormatadoA = boleto.NossoNumeroFormatado.Substring(0, boleto.NossoNumeroFormatado.Length - 1); var nossoNumeroFormatadoB = boleto.NossoNumeroFormatado.Remove(0, boleto.NossoNumeroFormatado.Length - 1); boleto.SetNossoNumeroFormatado(string.Format("{0}-{1}", nossoNumeroFormatadoA, nossoNumeroFormatadoB)); }
public void ValidaBoletoComNormasBanco(Boleto boleto) { //Verifica as carteiras implementadas if (!boleto.CarteiraCobranca.Codigo.Equals("CNR")) throw new NotImplementedException("Carteira não implementada. Utilize a carteira 'CNR'."); //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe() == string.Empty) throw new NotImplementedException("Nosso número inválido"); //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe().BoletoBrToLong() == 0) throw new NotImplementedException("Nosso número inválido"); //Verifica se o tamanho para o NossoNumero s�o 10 d�gitos (5 range + 5 numero sequencial) if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length > 10) throw new NotImplementedException("A quantidade de dígitos do nosso número para a carteira " + boleto.CarteiraCobranca.Codigo + ", são 10 números."); if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length < 10) boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(10, '0')); }
/// <summary> /// Valida se o boleto está preenchido com os campos mínimos requeridos. /// Dispara uma ApplicationException caso esteja faltando alguma informação. /// </summary> public void ValidaBoletoComNormasBanco(Boleto boleto) { //Verifica as carteiras implementadas if (!boleto.CarteiraCobranca.Codigo.Equals("CSB") & !boleto.CarteiraCobranca.Codigo.Equals("CNR")) throw new NotImplementedException("Carteira n�o implementada. Utilize a carteira 'CSB' ou 'CNR'."); //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe() == string.Empty) throw new NotImplementedException("Nosso número inválido"); //Verifica se o nosso n�mero � v�lido if (boleto.NossoNumeroFormatado.BoletoBrToStringSafe().BoletoBrToLong() == 0) throw new NotImplementedException("Nosso número inválido"); //Verifica se o tamanho para o NossoNumero s�o 10 d�gitos (5 range + 5 numero sequencial) - Válido para carteira CSB if (boleto.CarteiraCobranca.Codigo.Equals("CSB")) if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length > 10) throw new NotImplementedException("A quantidade de dígitos do nosso número para a carteira " + boleto.CarteiraCobranca.Codigo + ", são 10 números."); else if (Convert.ToInt32(boleto.NossoNumeroFormatado).ToString(CultureInfo.InvariantCulture).Length < 10) boleto.SetNossoNumeroFormatado(boleto.NossoNumeroFormatado.PadLeft(10, '0')); //Verifica se data do documento � valida //if (boleto.DataDocumento.ToString("dd/MM/yyyy") == "01/01/0001") if (boleto.DataDocumento == DateTime.MinValue) boleto.DataDocumento = DateTime.Now; }
public void FormataNossoNumero(Boleto boleto) { if (String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto) || String.IsNullOrEmpty(boleto.IdentificadorInternoBoleto.TrimStart('0'))) throw new Exception("Sequencial Nosso Número não foi informado."); try { if (boleto.CarteiraCobranca.Codigo == "CSB") { string nossoNumeroComposto = boleto.CedenteBoleto.CodigoCedente.PadLeft(5, '0') + boleto.IdentificadorInternoBoleto.PadLeft(5, '0'); string digitoAutoConferenciaNossoNumero = Common.Mod11(nossoNumeroComposto, 7).ToString(CultureInfo.InvariantCulture); string nossoNumeroFormatado = nossoNumeroComposto + digitoAutoConferenciaNossoNumero; boleto.SetNossoNumeroFormatado(nossoNumeroFormatado); return; } if (boleto.CarteiraCobranca.Codigo == "CNR") { /* Seguindo documentação CNR - Cobrança Não Registrada * Disponível em: https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cnrbarra.pdf */ string codigoDoPagador = boleto.IdentificadorInternoBoleto; string primeiroDigitoVerificador = CalculaPrimeiroDigitoVerificadorCnrTipo4(boleto.IdentificadorInternoBoleto); string segundoDigitoVerificador = CalculaSegundoDigitoVerificadorCnrTipo4(boleto.IdentificadorInternoBoleto, primeiroDigitoVerificador, boleto.CedenteBoleto.CodigoCedente, boleto.DataVencimento); boleto.SetNossoNumeroFormatado( String.Format("{0}{1}4{2}", codigoDoPagador, primeiroDigitoVerificador, segundoDigitoVerificador)); /* Padroniza com 16 dígitos */ boleto.SetNossoNumeroFormatado( boleto.NossoNumeroFormatado.PadLeft(16, '0')); return; } throw new NotImplementedException("Modelo de carteira de cobrança: " + boleto.CarteiraCobranca.Codigo + " não está implementado."); } catch (Exception ex) { throw new Exception("Falha ao tentar formatar nosso número.", ex); } }