예제 #1
0
        ///<summary>
        /// Campo Livre
        ///    20 a 20 -  1 - 5 fixo - tipo de cobrança (CVT cobrança sem registro - 7744-5)
        ///    21 a 26 -  6 - Código do cedente
        ///    27 a 27 -  1 - Dígito verificador do código do cedente
        ///    28 a 29 -  2 - 00 fixo - vago
        ///    30 a 43 - 14 - Nosso número
        ///    44 a 44	- 1 - Dígito do nosso número
        ///
        /// PS: Cálculo do dígito do código de barras: usar rotina de módulo 11
        ///</summary>
        public string FormataCampoLivre(Boleto boleto)
        {
            string codigoCedente = boleto.Cedente.Codigo.ToString();

            codigoCedente = Utils.FormatCode(codigoCedente, 6);

            string FormataCampoLivre = string.Format("{0}{1}{2}{3}{4}{5}",
                                                     "5", codigoCedente, Banco_Unibanco.Mod11(codigoCedente),
                                                     "00", boleto.NossoNumero, Banco_Unibanco.Mod11(boleto.NossoNumero, true));

            return(FormataCampoLivre);
        }
예제 #2
0
        /// <summary>
        ///
        ///   *******
        ///
        ///	O código de barra para cobrança contém 44 posições dispostas da seguinte forma:
        ///    01 a 03 -  3 - 409 fixo - Código do banco
        ///    04 a 04 -  1 - 9 fixo - Código da moeda (R$)
        ///    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 override void FormataCodigoBarra(Boleto boleto)
        {
            string valorBoleto = boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", "");

            valorBoleto = Utils.FormatCode(valorBoleto, 10);

            boleto.CodigoBarra.Codigo = string.Format("{0}{1}{2}{3}{4}", Codigo.ToString(), boleto.Moeda,
                                                      FatorVencimento(boleto), valorBoleto, FormataCampoLivre(boleto));

            _dacBoleto = Banco_Unibanco.Mod11(boleto.CodigoBarra.Codigo);

            boleto.CodigoBarra.Codigo = Strings.Left(boleto.CodigoBarra.Codigo, 4) + _dacBoleto + Strings.Right(boleto.CodigoBarra.Codigo, 39);
        }
예제 #3
0
        /// <summary>
        /// A linha digitável será composta por cinco campos:
        ///      1º campo
        ///          composto pelo código de Banco, código da moeda, as cinco primeiras posições do campo
        ///          livre e o dígito verificador deste campo;
        ///      2º campo
        ///          composto pelas posições 6ª a 15ª do campo livre e o dígito verificador deste campo;
        ///      3º campo
        ///          composto pelas posições 16ª a 25ª do campo livre e o dígito verificador deste campo;
        ///      4º campo
        ///          composto pelo dígito verificador do código de barras, ou seja, a 5ª posição do código de
        ///          barras;
        ///      5º campo
        ///          Composto pelo fator de vencimento com 4(quatro) caracteres e o valor do documento com 10(dez) caracteres, sem separadores e sem edição.
        ///
        /// </summary>
        public override void FormataLinhaDigitavel(Boleto boleto)
        {
            //BBBMC.CCCCD1 CCCCC.CCCCCD2 CCCCC.CCCCCD3 D4 FFFFVVVVVVVVVV

            #region Campo 1

            string Grupo1 = string.Empty;

            string BBB   = boleto.CodigoBarra.Codigo.Substring(0, 3);
            string M     = boleto.CodigoBarra.Codigo.Substring(3, 1);
            string CCCCC = boleto.CodigoBarra.Codigo.Substring(19, 5);
            string D1    = Banco_Unibanco.Mod10(BBB + M + CCCCC).ToString();

            Grupo1 = string.Format("{0}{1}{2}.{3}{4} ", BBB, M, CCCCC.Substring(0, 1), CCCCC.Substring(1, 4), D1);


            #endregion Campo 1

            #region Campo 2

            string Grupo2 = string.Empty;

            string CCCCCCCCCC2 = boleto.CodigoBarra.Codigo.Substring(24, 10);
            string D2          = Banco_Unibanco.Mod10(CCCCCCCCCC2).ToString();

            Grupo2 = string.Format("{0}.{1}{2} ", CCCCCCCCCC2.Substring(0, 5), CCCCCCCCCC2.Substring(5, 5), D2);

            #endregion Campo 2

            #region Campo 3

            string Grupo3 = string.Empty;

            string CCCCCCCCCC3 = boleto.CodigoBarra.Codigo.Substring(34, 10);
            string D3          = Banco_Unibanco.Mod10(CCCCCCCCCC3).ToString();

            Grupo3 = string.Format("{0}.{1}{2} ", CCCCCCCCCC3.Substring(0, 5), CCCCCCCCCC3.Substring(5, 5), D3);


            #endregion Campo 3

            #region Campo 4

            string Grupo4 = string.Empty;

            string D4 = _dacBoleto.ToString();

            Grupo4 = string.Format("{0} ", D4);

            #endregion Campo 4

            #region Campo 5

            string Grupo5 = string.Empty;

            long FFFF = FatorVencimento(boleto);

            string VVVVVVVVVV = boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", "");
            VVVVVVVVVV = Utils.FormatCode(VVVVVVVVVV, 10);

            if (Utils.ToInt64(VVVVVVVVVV) == 0)
            {
                VVVVVVVVVV = "000";
            }

            Grupo5 = string.Format("{0}{1}", FFFF, VVVVVVVVVV);

            #endregion Campo 5

            boleto.CodigoBarra.LinhaDigitavel = Grupo1 + Grupo2 + Grupo3 + Grupo4 + Grupo5;
        }
예제 #4
0
 public override void FormataNossoNumero(Boleto boleto)
 {
     boleto.NossoNumero = string.Format("{0}-{1}", boleto.NossoNumero, Banco_Unibanco.Mod11(boleto.NossoNumero, true));
 }
예제 #5
0
 public string CalculaDigitoVerificador(Boleto boleto)
 {
     return(Banco_Unibanco.Mod11(boleto.NossoNumero, true).ToString());
 }