コード例 #1
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.");
            }

            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);
            }
        }
コード例 #2
0
        public void FormataNossoNumero(Boleto boleto)
        {
            boleto.SetNossoNumeroFormatado(boleto.IdentificadorInternoBoleto);

            boleto.SetNossoNumeroFormatado(
                string.Format("{0}{1}",
                              boleto.NossoNumeroFormatado.PadLeft(8, '0'),
                              boleto.DigitoNossoNumero));
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
ファイル: BancoCef.cs プロジェクト: rottaveira/boletobr
        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");
            }
        }
コード例 #5
0
ファイル: BancoBanestes.cs プロジェクト: samuelrvg/boletobr
        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);
            }
        }
コード例 #6
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);
            }
        }
コード例 #7
0
ファイル: BancoUnicred.cs プロジェクト: rottaveira/boletobr
        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);
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
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.");
            }

            boleto.SetNossoNumeroFormatado(String.Format("{0}{1}",
                                                         boleto.IdentificadorInternoBoleto, Mod11Santander(boleto.IdentificadorInternoBoleto)).PadLeft(13, '0'));
        }
コード例 #10
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));
        }
コード例 #11
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.");
            }

            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)));
            }
        }
コード例 #12
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.");
            }

            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)));
            }
        }
コード例 #13
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;
            }
        }
コード例 #14
0
ファイル: BancoSicredi.cs プロジェクト: rottaveira/boletobr
        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);
            }
        }
コード例 #15
0
 public void FormataNossoNumero(Boleto boleto)
 {
     boleto.SetNossoNumeroFormatado(string.Format("{0}", boleto.IdentificadorInternoBoleto.PadLeft(16, '0')));
 }
コード例 #16
0
ファイル: BancoItau.cs プロジェクト: marcelloaborges/BoletoBr
        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);
            }
        }
コード例 #17
0
        /// <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));
        }
コード例 #18
0
        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.");
            }
        }
コード例 #19
0
ファイル: BancoSantander.cs プロジェクト: gubarusco/boletobr
        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'));
        }
コード例 #20
0
ファイル: BancoBrasil.cs プロジェクト: gubarusco/boletobr
        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);
        }
コード例 #21
0
ファイル: BancoBrasil.cs プロジェクト: gubarusco/boletobr
        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);
        }
コード例 #22
0
ファイル: BancoBrasil.cs プロジェクト: gubarusco/boletobr
        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
        }
コード例 #23
0
ファイル: BancoCef.cs プロジェクト: KalleyOliveira/boletobr
        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");
            }
        }
コード例 #24
0
ファイル: BancoSantander.cs プロジェクト: gubarusco/boletobr
        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));
        }
コード例 #25
0
        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'));
        }
コード例 #26
0
ファイル: BancoHsbc.cs プロジェクト: marcelloaborges/BoletoBr
        /// <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;
        }
コード例 #27
0
ファイル: BancoHsbc.cs プロジェクト: marcelloaborges/BoletoBr
        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);
            }
        }