Example #1
0
        /// <summary>
        /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE
        /// </summary>
        /// <param name="blt">Intancia da Classe de Boleto</param>
        /// <returns>String de 25 caractere que representa 'Campo Livre'</returns>
        public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cContaNumero, string cCodCedente, string cModalidade, string cCarteira, string cNossoNumero)
        {
            // Verificar CNR ou CNR Facil

            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cContaNumero   = CobUtil.Right(cContaNumero, 5);
            cCodCedente    = CobUtil.Right(cCodCedente, 7);

            if (CobUtil.GetInt(cCodCedente) == 0)
            {
                throw new Exception("Informe o Código de Cedente");
            }

            string   cTotal       = "0";
            string   cDataJuliana = "0000";
            string   cLivre;
            DateTime dtVenc = blt.DataVencimento;

            //Utilizar o identificador 5 sempre que a data de vencimento estiver em branco e sem fator de vencimento.
            if (dtVenc == new DateTime(2001, 1, 1))
            {
                cModalidade = "5";
            }

            if (cCarteira == "01") //Sem Registro
            {
                cNossoNumero = CobUtil.Right(cNossoNumero, 13);
                cNossoNumero = cNossoNumero + CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();

                // Identificador 4: vincula vencimento, código do cedente e código do documento
                if (cModalidade == "4")
                {
                    // Monta a Data Juliana do Venciento
                    string cDia = CobUtil.Right(dtVenc.Day.ToString(), 2);
                    string cMes = CobUtil.Right(dtVenc.Month.ToString(), 2);
                    string cAno = CobUtil.Right(dtVenc.Year.ToString(), 2);

                    cDataJuliana = cDia + cMes + cAno;

                    // Efetua a soma Nosso numero (+Fim 4) + Cedente + Vencimento
                    cNossoNumero = cNossoNumero + "4";
                    cTotal       = CobUtil.Soma(cDataJuliana, cCodCedente);
                    cTotal       = CobUtil.Soma(cNossoNumero, cTotal);
                    cNossoNumero = cNossoNumero + ModuloHSBC(cTotal);

                    DateTime dStart = new DateTime(dtVenc.Year, 1, 1);
                    int      nDias  = (int)((TimeSpan)dtVenc.Subtract(dStart)).TotalDays + 1;
                    cDataJuliana = CobUtil.Right(nDias.ToString(), 3) + CobUtil.Right(dtVenc.Year.ToString(), 1);

                    blt.CarteiraExibicao = "CNR";
                    blt.AgenciaConta     = cCodCedente;
                    blt.Especie          = Especies.DM;
                    blt.LocalPagamento   = "PAGAR PREFERENCIALMENTE EM AGENCIA HSBC";
                }
                else if (cModalidade == "5")
                {
                    // Identificador 5: vincula código do cedente e código do documento.
                    // Efetua a soma Nosso Bumero (+Fim 5) + Cedente

                    cNossoNumero = cNossoNumero + "5";
                    cTotal       = CobUtil.Soma(cNossoNumero, cCodCedente);
                    cNossoNumero = cNossoNumero + ModuloHSBC(cTotal);
                    cDataJuliana = "0000";
                }

                cLivre = CobUtil.Right(cCodCedente, 7) +
                         CobUtil.Right(blt.NossoNumero, 13) +
                         cDataJuliana + "2";
            }
            else // Cartrira 00
            {
                cNossoNumero = CobUtil.Right(cNossoNumero, 11);
                cCodCedente  = CobUtil.Right(cCodCedente, 11);
                cCarteira    = CobUtil.Right(cCarteira, 2);
                cModalidade  = CobUtil.Right(cModalidade, 1);

                cLivre = cNossoNumero + cCodCedente + cCarteira + cModalidade;
            }

            //if (cModalidade != "5")
            blt.NossoNumeroExibicao =
                cNossoNumero.Substring(0, cNossoNumero.Length - 3) + " " +
                cNossoNumero.Substring(cNossoNumero.Length - 3);
            //else
            //    blt.NossoNumeroExibicao = cNossoNumero;

            return(cLivre);
        }