Ejemplo n.º 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 cCodCedente, string cModalidade, string cNossoNumero)
        {
            cCodCedente = CobUtil.Right(cCodCedente, 7);

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

            if (cModalidade == "14")
            {
                cNossoNumero = CobUtil.Right(cNossoNumero, 14);
            }
            else
            {
                cNossoNumero = cCodCedente + CobUtil.Right(cNossoNumero, 7);
            }

            string cLivre = "5" +
                            cCodCedente +
                            "00" +
                            cNossoNumero;

            string cDAC = CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();

            cLivre = cLivre + cDAC;

            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC;

            return(cLivre);
        }
Ejemplo n.º 2
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 cCarteira, string cNossoNumero, string cModalidade)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cCarteira      = CobUtil.Right(cCarteira, 2);
            cContaNumero   = CobUtil.Right(cContaNumero, 7);

            if (CobUtil.GetInt(cCarteira) == 0)
            {
                throw new Exception("Informe a Carteira");
            }

            string DAC = NossoNumero(cCarteira, ref cModalidade, ref cNossoNumero);

            string cLivre = cAgenciaNumero +
                            cCarteira +    // 2
                            cModalidade +  // 4 / 2
                            cNossoNumero + // 7 / 9
                            cContaNumero + "0";

            if (cModalidade != "")
            {
                blt.NossoNumeroExibicao = cCarteira + "/" + cModalidade + "/" + cNossoNumero + "-" + DAC;
            }
            else
            {
                blt.NossoNumeroExibicao = cCarteira + "/" + cNossoNumero + "-" + DAC;
            }

            return(cLivre);
        }
Ejemplo n.º 3
0
 public static string NossoNumero(ref string cConvenio, ref string cCodCedente, ref string cNossoNumero)
 {
     cConvenio    = CobUtil.Right(cConvenio, 4);         //Código da Cooperativa
     cCodCedente  = CobUtil.Right(cCodCedente, 7);       //Código do Cliente
     cNossoNumero = CobUtil.Right(cNossoNumero, 7);      //Número do Título
     return(CalculaDigCoob(cConvenio + "000" + cCodCedente + cNossoNumero).ToString());
 }
Ejemplo n.º 4
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 cCodCedente, string cModalidade, string cNossoNumero)
        {
            cCodCedente = CobUtil.Right(cCodCedente, 11);
            cModalidade = CobUtil.Right(cModalidade, 1);

            if (CobUtil.GetInt(cCodCedente) == 0)
            {
                throw new Exception("Informe o código do cedente");
            }
            if (CobUtil.GetInt(cModalidade) == 0)
            {
                throw new Exception("Informe o a modalidade");
            }

            string cDAC12 = NossoNumero(ref cNossoNumero);
            string cLivre = cNossoNumero + cCodCedente + cModalidade + "021";

            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC12;

            // (Corresponde à Chave ASBACE)
            int nD1 = CobUtil.Modulo10(cLivre);
            int nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString());

            if (nD2 == -1) // Veja a rotina do modulo11
            {
                nD1 = nD1 + 1;
                nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString());
            }

            cLivre = cLivre + nD1.ToString() + nD2.ToString();
            return(cLivre);
        }
Ejemplo n.º 5
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 cCodCedente, string cModalidade, string cNossoNumero)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero.Split('-')[0], 4);
            cCodCedente    = CobUtil.Right(cCodCedente, 9);
            cModalidade    = CobUtil.Right(cModalidade, 1); //Indicador de desconto
            cNossoNumero   = CobUtil.Right(cNossoNumero, 11);

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

            string cLivre = cAgenciaNumero +
                            cNossoNumero +
                            cCodCedente +
                            cModalidade;

            //No codigo de barras o nosso numero te 9 posições, mas no calculo do digito do nosso numero há 10 posições
            string cDAC = CobUtil.Modulo11Padrao(cAgenciaNumero + "0" + cNossoNumero, 9).ToString();

            blt.NumeroDocumento     = cNossoNumero + "-" + cDAC;
            blt.NossoNumeroExibicao = cNossoNumero;

            return(cLivre);
        }
Ejemplo n.º 6
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 cAgencia, string cCodCedente, string cNossoNumero)
        {
            string[] cAgenciaParts = cAgencia.Split('-', '/');
            string   cAgenciaConta = CobUtil.Right(cAgenciaParts[0], 2);
            string   cAgenciaDig   = CobUtil.Right(cAgenciaParts[1], 1);

            cCodCedente  = CobUtil.Right(cCodCedente, 9);
            cNossoNumero = CobUtil.Right(cNossoNumero, 8);

            if (Int32.Parse(cCodCedente) == 0)
            {
                throw new Exception("Informe o código do cedente");
            }

            // cAgenciaDig
            string cDAC = CobUtil.Modulo11Padrao(cAgenciaConta + cNossoNumero, 9).ToString();

            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC;
            cNossoNumero            = cNossoNumero + cDAC;

            string cLivre = cAgenciaConta + cCodCedente + cNossoNumero + "047";

            // (Corresponde à Chave ASBACE)
            int nD1 = CobUtil.Modulo10(cLivre);
            int nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString());

            if (nD2 == -1) // Veja a rotina do modulo11
            {
                nD1 = nD1 + 1;
                nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString());
            }
            cLivre = cLivre + nD1.ToString() + nD2.ToString();

            return(cLivre);
        }
Ejemplo n.º 7
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 cCodCedente, string cNossoNumero)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 3);
            cCodCedente    = CobUtil.Right(cCodCedente, 7);
            cNossoNumero   = CobUtil.Right(cNossoNumero, 8);

            if (Int32.Parse(cCodCedente) == 0)
            {
                throw new Exception("Informe o código do cedente");
            }

            string cLivre = "21" +
                            cAgenciaNumero +
                            cCodCedente +
                            cNossoNumero +
                            "041";

            string cDV = CobUtil.Modulo10(cLivre).ToString() + CobUtil.Modulo11Padrao(cLivre, 7).ToString();

            cLivre = cLivre + cDV;

            string cDAC = CobUtil.Modulo10(cNossoNumero).ToString();

            cDAC = cDAC + CobUtil.Modulo11Padrao(cNossoNumero + cDAC, 7);
            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC;

            return(cLivre);
        }
Ejemplo n.º 8
0
        public static string NossoNumero(ref string cNossoNumero)
        {
            cNossoNumero = CobUtil.Right(cNossoNumero, 8);
            string cD1 = CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();
            string cD2 = CobUtil.Modulo11Especial(cNossoNumero + cD1, 10).ToString();

            return(cD1 + cD2);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Clona os valores e propriedades das informações de um boleto.
        /// Fundamental para obter também as informações de registro complementares
        /// </summary>
        public BoletoInfo Clone()
        {
            BoletoInfo bi = (BoletoInfo)CobUtil.Clone(this);

            foreach (var r in Reg)
            {
                bi.Reg.Add(r.Key, r.Value);
            }

            return(bi);
        }
Ejemplo n.º 10
0
        /* do arquivo: Sicred_Manual_Beneficiario_Cobranca_CNAB_400 == Atualizado 21/05/2015
         * pag 7
         * 5.4 Fórmula para cálculo do dígito verificador pelo módulo 11
         * a) Relacionar os códigos da cooperativa de
         * crédito/agência beneficiária (aaaa),
         * posto beneficiário (pp),
         * do beneficiário (ccccc),
         * ano atual (yy),
         * indicador de geração do nosso número (b) (1: Agência cedente, 2 a 9: Cedente) e
         * o número seqüencial do beneficiário (nnnnn):
         * aaaappcccccyybnnnnn;
         *
         * pag 28
         * Se a impressão for pela Sicredi (A) é possível deixar em branco (sem preenchimento - gerado automaticamente pelo Banco) ou informar "Nosso Número" devidamente preenchido. Se for impressão pelo Cedente (B) - informar o "Nosso Número" conforme exemplo informações abaixo:
         * 13 - ano atual
         * 2 a 9 - byte de geração "somente será "1" se forem boletos pré-impressos".
         * xxxxx - número sequencial
         * d - dígito verificador calculado ou seja, a nomenclatura correta é: 132xxxxxD => yybnnnnnd
         *
         * pag 51
         * 10.7.1 Composição do campo livre do código de barras dos boletos do produto Sicredi cobrança para impressão completa dos boletos pelo beneficiário:
         * Posição / Tamanho / Conteúdo
         * C         20 – 20 01 Código numérico correspondente ao tipo de cobrança: “1” – Com Registro “3 – Sem Registro”. Obs.: O SICREDI não validará este campo.
         * R         21 – 21 01 Código numérico correspondente ao tipo de carteira: “1” - carteira simples
         * yybnnnnnd 22 – 30 09 Nosso número (Ano/Controle/Sequencial/DAC)
         * AAAA      31 – 34 04 Cooperativa de crédito/agência beneficiária
         * PP        35 – 36 02 Posto da cooperativa de crédito/agência beneficiária
         * CCCCC     37 – 41 05 Código do beneficiário
         * V         42 – 42 01 Será 1 (um) quando houver valor expresso no campo “valor do documento”
         * 0         43 – 43 01 Filler – zeros “0”
         * D         44 – 44 01 DV do campo livre calculado por módulo 11 com aproveitamento total (resto igual a 0 ou 1 DV cai para 0)
         * Final: CRyybnnnnndAAAAPPCCCCCV0D
         */
        /// <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 cModalidade, string cCodCedente, string cNossoNumero, string cCarteira)
        {
            if (CobUtil.GetInt(cCodCedente) == 0)
            {
                throw new Exception("Informe o Código de Cedente");
            }
            if (CobUtil.GetInt(cModalidade) == 0)
            {
                throw new Exception("Informe o Numero do 'Posto' na Modalidade");
            }
            if (CobUtil.GetInt(cCarteira) != 1 && CobUtil.GetInt(cCarteira) != 3)
            {
                throw new Exception("Número de carteira inválido, informe 1=Registrada ou 3=Sem registro");
            }

            cCarteira = CobUtil.Right(cCarteira, 1);

            MontaNossoNumero(ref cNossoNumero, ref cAgenciaNumero, ref cModalidade, ref cCodCedente);

            blt.NossoNumeroExibicao =
                //cAgenciaNumero +
                //cModalidade + "." +
                //cCodCedente + "." +
                //cNossoNumero;
                cNossoNumero.Substring(0, 2) + "/" +
                cNossoNumero.Substring(2, 6) + "-" +
                cNossoNumero.Substring(8, 1);

            blt.AgenciaConta =
                cAgenciaNumero + "." +
                cModalidade + "." +
                cCodCedente;

            // TODO: Criar algum campo que identifique quando for registrado, ou identificar pela carteira
            string cLivre =                                        // Anterior + Atual = Noto Total
                            cCarteira +                            // 0+1=1 (1-Com Registro, ou 3-SEM REGISTRO)
                            "1" +                                  // 1+1=2
                            cNossoNumero +                         // 2+9=11
                            cAgenciaNumero +                       // 11+4=15
                            cModalidade +                          // 15+2=17
                            cCodCedente +                          // 17+5=22
                            (blt.ValorDocumento > 0 ? "1" : "0") + // 22+1=23
                            "0";                                   // 23+1=24

            blt.CarteiraExibicao = "1";                            // Carteira Simples

            // Digito verificador geral do Campo Livre
            string cDV = CobUtil.Modulo11Especial(cLivre, 9).ToString();

            cLivre += cDV;          // 24+1=25 posições o campo livre - OK

            return(cLivre);
        }
Ejemplo n.º 11
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 cModalidade, string cNossoNumero)
        {
            cNossoNumero   = CobUtil.Right(cNossoNumero, 9);    // O Nosso Numero tem que ter sempre 9 posições, sendo a primeira o digito "9"
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cModalidade    = CobUtil.Right(cModalidade, 2);     // (mas será utilizado somente o ultimo digito da modalidade)
            cContaNumero   = CobUtil.Right(cContaNumero, 6);    // numero da conta sem o digito

            if (CobUtil.GetInt(cModalidade) == 0)
            {
                throw new Exception("Informe a Modalidade");
            }

            if (cNossoNumero.Substring(0, 1) != "9")
            {
                throw new Exception("Para o Banco 'Nossa Caixa' o 'Nosso Numero' deve ter 9 posições iniciado sempre pelo digito '9'");
            }

            string cContaDig = blt.Conta.Split('-')[1];

            //O campo nosso numero tem que iniciar com 9 e ter 9 digitos
            string cLivre = cNossoNumero +
                            cAgenciaNumero +
                            cModalidade.Substring(1) + // utiliza apenas o ultimo digito da modalidade
                            cContaNumero +
                            "151";

            int D1 = CobUtil.Modulo10(cLivre);
            int D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString());

            while (D2 == -1) // Veja a rotina do modulo11
            {
                D1 = D1 + 1;
                D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString());
            }
            cLivre = cLivre + D1.ToString() + D2.ToString();

            //Calucla o digito do Nosso Numero

            int nTotal = DVNossaCaixa(cAgenciaNumero + cModalidade + "0" + cContaNumero) + int.Parse(cContaDig);

            nTotal = nTotal + DVNossaCaixa(cNossoNumero);

            int nResto = nTotal % 10;

            nResto = 10 - nResto;

            blt.NossoNumeroExibicao = cNossoNumero + "-" + nResto;
            blt.CarteiraExibicao    = "CIDENT";
            blt.AgenciaConta        = cAgenciaNumero + "/" + cModalidade + "/" + blt.Conta;

            return(cLivre);
        }
Ejemplo n.º 12
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 cCodCedente, string cModalidade, string cNossoNumero)
        {
            // De acrodo com a documentação (pg 5) segue o calculo do digito do nosso numero
            cNossoNumero = CobUtil.Right(cNossoNumero, 11); // Força ter 11 digitos
            cModalidade  = CobUtil.Right(cModalidade, 3);   // Portfólio, 3 últimos dígitos do campo de identificação da empresa
            cCodCedente  = CobUtil.Right(cCodCedente, 9);   // 'Conta COSMOS (somente numeros, sem o indice - 1 digito) 0/123456/789

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

            string cDV = CobUtil.Modulo11Padrao(cNossoNumero, 9).ToString(); // Calcula o digito verificador

            blt.NossoNumeroExibicao = blt.NossoNumero + "." + cDV;           // formata o numero com o digito na tela
            cNossoNumero           += cDV;                                   //acrescenta o digito no boleto

            //De acordo com a documentação (pg 9) os 25 caracteres do campo livre são
            //TAM - Descrição
            //  1 - Código do Produto 3 - Cobrança com registro / sem registro
            //  3 - Portfólio, 3 últimos dígitos do campo de identificação da empresa no CITIBANK (Posição 44 a 46 do arquivo retorno)
            //  6 - Base da conta COSMOS (pg 13, veja abaixo)
            //  2 - Seqüência da conta COSMOS (pg 13, veja abaixo)
            //  1 - Dígito Conta COSMOS (pg 13, veja abaixo)
            // 12 - Nosso Número
            //----
            // 25 - Total (campo livre)

            //De acordo com a documentação (pg 13) temos a configuração da CONTA COSMOS
            //Ex.: 0/ 123456/ 789 = Conta Cosmos
            //     0 Índice
            //123456 Base (Posição 24 a 29)
            //    78 Seqüência (Posição 30 a 31)
            //     9 Dígito Verificador (Posição 32)

            //Parametros:
            //O código da conta COSMOS ficará no campo 'CodCedente' somento os numeros 123456789
            //O código do portfolio ficará no campo 'Modalidade'

            string cLivre = "3" +
                            cModalidade +
                            cCodCedente +
                            cNossoNumero;

            return(cLivre);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Calculao código de Barras e a linha digitável (IPTE)
        /// </summary>
        public void CalculaBoleto()
        {
            CalcCodBar();
            LinDigitavel = CobUtil.CalcLinDigitavel(this.CodBarras);

            if (RenderBoleto == null)
            {
                RenderBoleto = new BoletoNormal();
            }

            if (RenderBoleto.Count == -1)
            {
                RenderBoleto.MakeFields(this);
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// define se deve ser usado a nova logica de geração no Santander em vez do antigo Banespa
        /// </summary>
        //public static bool useSantander = false;

        /// <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>
        /// <param name="cCodCedente">Código do Cedente</param>
        /// <param name="cNossoNumero">Nosso Numero</param>
        /// <returns>String de 25 caractere que representa 'Campo Livre'</returns>
        public static string CampoLivre(Boleto blt, string cCodCedente, string cNossoNumero)
        {
            if (cCodCedente.Length != 11)
            {
                throw new Exception("O código do cedente deve ter 11 digitos");
            }

            cCodCedente  = CobUtil.Right(cCodCedente, 11);
            cNossoNumero = CobUtil.Right(cNossoNumero, 7);

            if (Int64.Parse(cCodCedente) == 0)
            {
                throw new Exception("Informe o código do cedente");
            }

            string cLivre =
                cCodCedente +
                cNossoNumero +
                "00" +
                "033";

            string cD1;
            string cD2;

            cD1 = CobUtil.Modulo10(cLivre).ToString();
            cD2 = CobUtil.Modulo11Padrao(cLivre + cD1, 7).ToString();
            if (cD2 == "1")
            {
                cD1 = "0";
loopDigitoInc:
                cD2 = CobUtil.Modulo11Padrao(cLivre + cD1, 7).ToString();
                if (cD2 == "1")
                {
                    cD1 = string.Format("{0}", Int32.Parse(cD1) + 1);
                    goto loopDigitoInc;
                }
            }

            cLivre = cLivre + cD1 + cD2;

            string cAgenciaNumero = cCodCedente.Substring(0, 3);

            blt.NossoNumeroExibicao = cAgenciaNumero + " " + cNossoNumero + "-" + DVBanespa(cAgenciaNumero + cNossoNumero);
            //blt.NossoNumeroExibicao = cAgenciaNumero + " " + cNossoNumero + "-" + CobUtil.Modulo11Especial(cAgenciaNumero + cNossoNumero, 9);
            blt.AgenciaConta = cCodCedente.Substring(0, 3) + " " + cCodCedente.Substring(3, 2) + " " + cCodCedente.Substring(5, 5) + " " + cCodCedente.Substring(10, 1);

            return(cLivre);
        }
Ejemplo n.º 15
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 cCarteira, string cCodCedente, string cNossoNumero, string cNumeroDocumento)
        {
            string cDAC = NossoNumero(ref cAgenciaNumero, ref cContaNumero, ref cCarteira, ref cNossoNumero);

            if (CobUtil.GetInt(cCarteira) == 0)
            {
                throw new Exception("Informe a Carteira");
            }
            if (CobUtil.GetInt(cAgenciaNumero) == 0)
            {
                throw new Exception("Informe a Agencia");
            }
            if (CobUtil.GetInt(cContaNumero) == 0)
            {
                throw new Exception("Informe a Conta");
            }

            string cLivre;

            if (cCarteira == "107" || cCarteira == "122" || cCarteira == "142" || cCarteira == "143" || cCarteira == "196" || cCarteira == "198")
            {
                string cNumDoc = CobUtil.Right(cNumeroDocumento, 7);
                cCodCedente = CobUtil.Right(cCodCedente, 5);

                cLivre = cCarteira +
                         cNossoNumero +
                         cNumDoc +
                         cCodCedente;

                cLivre += CobUtil.Modulo10(cLivre) + "0";
            }
            else
            {
                cLivre = cCarteira +
                         cNossoNumero +
                         cDAC +
                         cAgenciaNumero +
                         cContaNumero +
                         CobUtil.Modulo10(cAgenciaNumero + cContaNumero) +
                         "000";
            }

            blt.NossoNumeroExibicao = cCarteira + "/" + cNossoNumero + "-" + cDAC;
            blt.AgenciaConta        = cAgenciaNumero + "/" + blt.Conta;

            return(cLivre);
        }
Ejemplo n.º 16
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 cCarteira, string cCodCedente, string cAgencia, string cConta, string cNossoNumero)
        {
            string cLivre;

            if (CobUtil.GetInt(cCarteira) == 0)
            {
                throw new Exception("Informe a Carteira");
            }

            if (cCarteira == "1" || cCarteira == "2")
            {
                cAgencia     = CobUtil.Right(cAgencia.Replace("-", ""), 5);
                cConta       = CobUtil.Right(cConta.Replace("-", ""), 9);
                cNossoNumero = CobUtil.Right(cNossoNumero, 9);

                cLivre = "7" +
                         cAgencia +
                         cConta +
                         cNossoNumero +
                         cCarteira;
            }
            else if (cCarteira == "4")
            {
                cCodCedente  = CobUtil.Right(cCodCedente, 7);
                cNossoNumero = CobUtil.Right(cNossoNumero, 16);

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

                cLivre = "7" +
                         cCodCedente +
                         cNossoNumero +
                         "4";
            }
            else
            {
                throw new Exception("Este banco suporta apenas carteiras '1', '2' ou '4'");
            }

            blt.NossoNumeroExibicao = cNossoNumero;

            return(cLivre);
        }
Ejemplo n.º 17
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 cCarteira, string cParcela, string cConvenio, string cModalidade, string cCodCedente, string cNossoNumero)
        {
            //Ver página 6 da documentação
            cCarteira   = CobUtil.Right(cCarteira, 1);          //Código da carteira
            cModalidade = CobUtil.Right(cModalidade, 2);        //Modalidade
            cParcela    = CobUtil.Right(cParcela, 3);           //Número da Parcela

            string cDV = NossoNumero(ref cConvenio, ref cCodCedente, ref cNossoNumero);

            cNossoNumero += cDV;

            string cLivre = cCarteira + cConvenio + cModalidade + cCodCedente + cNossoNumero + cParcela;

            blt.AgenciaConta        = cConvenio + "/" + cCodCedente;
            blt.NossoNumeroExibicao = cNossoNumero.Substring(0, cNossoNumero.Length - 1) + "-" + cDV;

            return(cLivre);
        }
Ejemplo n.º 18
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 cNossoNumero)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cContaNumero   = CobUtil.Right(cContaNumero, 7);
            cNossoNumero   = CobUtil.Right(cNossoNumero, 13);

            string cDAC = CobUtil.Modulo10(cNossoNumero + cAgenciaNumero + cContaNumero).ToString();

            string cLivre = cAgenciaNumero +
                            cContaNumero +
                            cDAC +
                            cNossoNumero;

            blt.AgenciaConta        = cAgenciaNumero + "/" + cContaNumero + "-" + cDAC;
            blt.NossoNumeroExibicao = cNossoNumero;

            return(cLivre);
        }
Ejemplo n.º 19
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 cCodCedente, string cCarteira, string cNossoNumero, string cModalidade)
        {
            cCodCedente = CobUtil.Right(cCodCedente, 7);    // Formata e valida o código do Cedente com 7 digitos
            if (CobUtil.GetInt(cCodCedente) == 0)
            {
                throw new Exception("Informe o Código de Cedente");
            }
            // Valida as carteiras disponíveis
            else if (!(cCarteira == "101" || cCarteira == "102" || cCarteira == "201"))
            {
                throw new Exception("Carteira invalida");
            }
            else if (cModalidade.Length > 1)
            {
                throw new Exception("Modalidade inválida, em geral deve ser '0'(Zero), ou o valor do IOF para seguradoras");
            }

            cNossoNumero = CobUtil.Right(cNossoNumero, 12);                       // Monta o Nosso Número 12 Digitos
            // (não importa se tiver 7 digitos no padrão CNAB400, pois zeros a frente não interfere na geração do digito do modulo 11)
            string cDig   = CobUtil.Modulo11Especial(cNossoNumero, 9).ToString(); // Calcula o digito verificador
            string cLivre = "9" +
                            cCodCedente +
                            cNossoNumero +
                            cDig +
                            (cModalidade == "" ? "0" : cModalidade) + // IOF – Seguradoras (Se 7% informar 7, Limitado a 9%) Demais clientes usar 0 (zero)
                            cCarteira;

            if (cCarteira == "101") // 101-Cobrança Simples Rápida COM Registro
            {
                blt.CarteiraExibicao = "COB SIMPLES RCR";
            }
            else if (cCarteira == "102") // 102-Cobrança simples SEM Registro
            {
                blt.CarteiraExibicao = "COB SIMPLES CSR";
            }
            else if (cCarteira == "201") // 201-Penhor
            {
                blt.CarteiraExibicao = "COB PENHOR RCR";
            }
            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDig;
            blt.AgenciaConta        = blt.Agencia + " / " + cCodCedente;

            return(cLivre);
        }
Ejemplo n.º 20
0
        public static string NossoNumeroDV(string cNossoNumero)
        {
            int nResto;
            int nTotalNumero = CobUtil.Modulo11Total(cNossoNumero, 9);

            nResto = (10 * nTotalNumero) % 11;
            string cDAC;

            if (nResto == 10)
            {
                cDAC = "X";
            }
            else
            {
                cDAC = nResto.ToString();
            }

            return(cDAC);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Calcula o digito do nosso numero, já ajustando o comprimento total
        /// </summary>
        public static string NossoNumero(string cCarteira, ref string cModalidade, ref string cNossoNumero)
        {
            // para o digito verificador o nosso numero tem 11 digitos (Carteira+Modalidade+NossoNumero)
            // Mas quando o resto for 10, tem que aparecer 'P'
            // CobUtil.Modulo11Padrao(cCarteira + cModalidade + cNossoNumero, 7);
            // pagina 19

            if (cNossoNumero.Length == 11)
            {
                cModalidade = "";
            }
            else if (cModalidade.Length == 4)
            {
                // Modalidade com 4 digitos!
                cNossoNumero = CobUtil.Right(cNossoNumero, 7);
            }
            else
            {
                // Modalidade com 2 digitos
                cModalidade  = CobUtil.Right(cModalidade, 2);
                cNossoNumero = CobUtil.Right(cNossoNumero, 9);
            }

            cCarteira = CobUtil.Right(cCarteira, 2);
            if (cModalidade.Length + cNossoNumero.Length != 11)
            {
                throw new Exception("Combinação Modalidade e Nosso numero invalidos");
            }

            int TotalNumero = CobUtil.Modulo11Total(cCarteira + cModalidade + cNossoNumero, 7);

            TotalNumero *= 10;
            int Resto = TotalNumero % 11;

            if (Resto == 10)
            {
                return("P");
            }
            else
            {
                return(Resto.ToString());
            }
        }
Ejemplo n.º 22
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 cNossoNumero)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cContaNumero   = CobUtil.Right(cContaNumero, 10);
            cNossoNumero   = CobUtil.Right(cNossoNumero, 10);

            string cDV = CobUtil.Modulo11Padrao(cNossoNumero, 9).ToString();

            //O campo nosso numero tem que iniciar com 9 e ter 9 digitos
            string cLivre =
                cAgenciaNumero +
                cContaNumero +
                cNossoNumero +
                cDV;

            //Monta o Nosso Numero
            blt.NossoNumeroExibicao = cNossoNumero + "-" + cDV;

            return(cLivre);
        }
Ejemplo n.º 23
0
        public static string NossoNumero(ref string cAgenciaNumero, ref string cContaNumero, ref string cCarteira, ref string cNossoNumero)
        {
            if (cContaNumero.Length > 5)
            {
                throw new Exception("O Número da conta deve contar no maximo 5 digitos, sem o verificador: 12345-6");
            }

            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cContaNumero   = CobUtil.Right(cContaNumero, 5);
            cCarteira      = CobUtil.Right(cCarteira, 3);
            cNossoNumero   = CobUtil.Right(cNossoNumero.Split('-')[0], 8);

            if (cCarteira == "112" || cCarteira == "126" || cCarteira == "131" || cCarteira == "146" || cCarteira == "150" || cCarteira == "168")
            {
                return(CobUtil.Modulo10(cCarteira + cNossoNumero).ToString());
            }
            else
            {
                return(CobUtil.Modulo10(cAgenciaNumero + cContaNumero + cCarteira + cNossoNumero).ToString());
            }
        }
Ejemplo n.º 24
0
        /* Sicred_Manual_Beneficiario_Cobranca_CNAB_400.pdf - Página 7
         * AA/BXXXXX-D
         * AA = Ano atual
         * B = Byte (2 a 9). 1 só poderá ser utilizado pela cooperativa.
         * XXXXX – Número livre de 00000 a 99999.
         * D = Digito Verificador pelo módulo 11.
         */
        public static void MontaNossoNumero(ref string cNossoNumero, ref string cAgenciaNumero, ref string cModalidade, ref string cCodCedente)
        {
            cNossoNumero   = CobUtil.Right(cNossoNumero, 5);
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4);
            cModalidade    = CobUtil.Right(cModalidade, 2); // Posto da Agência cedente - será colocado em modalidade
            cCodCedente    = CobUtil.Right(cCodCedente, 5);

            cNossoNumero = string.Format("{0:yy}2", DateTime.Now) + // 3
                           cNossoNumero;                            // 3+5=8

            // Digito Verificado só do Nosso Numero: aaaappcccccyybnnnnn
            // Aqui o nossonumero já está com o yybnnnnn

            string cDV = CobUtil.Modulo11Especial(
                cAgenciaNumero +
                cModalidade +
                cCodCedente +
                cNossoNumero, 9).ToString();

            cNossoNumero += cDV; // 8+1=9
        }
Ejemplo n.º 25
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(string cConvenio, string cCarteira, string cNossoNumero)
        {
            cConvenio    = CobUtil.Right(cConvenio, 5);
            cCarteira    = CobUtil.Right(cCarteira, 2);
            cNossoNumero = CobUtil.Right(cNossoNumero, 13);

            if (CobUtil.GetInt(cConvenio) == 0)
            {
                throw new Exception("Informe o código do convenio");
            }
            if (CobUtil.GetInt(cCarteira) == 0)
            {
                throw new Exception("Informe o a carteira");
            }

            string cLivre = cConvenio + cNossoNumero.Substring(0, 3) + cCarteira + cNossoNumero.Substring(3) + "027";

            cLivre = cLivre + CobUtil.Modulo10(cLivre);
            cLivre = cLivre + CobUtil.Modulo11Padrao(cLivre, 7);

            return(cLivre);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Logica especial para modulo 11, que retorna -1 quando o resto é 1
        /// </summary>
        /// <param name="sequencia">Sequencia a ser calculada</param>
        /// <returns>Retorna o digito, ou -1 quando nescessário</returns>
        public static int Modulo11Negativo(string sequencia)
        {
            int Total = CobUtil.Modulo11Total(sequencia, 7);
            // De acordo com a nota disponivel no manual do Banco Nossa Caixa na página 22
            // o resto não deve ser aproximado, e deveremos considerar o digito=0
            int Resto = Total % 11;

            if (Resto == 0)
            {
                return(0);
            }
            else if (Resto > 1)
            {
                return(11 - Resto);
            }
            else
            {
                // Recalcular D2 com (D1+1)
                // Retorna um valor negativo informando que deve ser recalculado com incremento
                return(-1);
            }
        }
Ejemplo n.º 27
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 cCarteira, string cNossoNumero)
        {
            cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 3);
            cContaNumero   = CobUtil.Right(cContaNumero, 7);
            cCarteira      = CobUtil.Right(cCarteira, 1);
            cNossoNumero   = CobUtil.Right(cNossoNumero, 6);

            if (CobUtil.GetInt(cCarteira) == 0)
            {
                throw new Exception("Informe a Carteira");
            }

            //O campo nosso numero tem que iniciar com 9 e ter 9 digitos
            string cLivre = "000" +
                            cAgenciaNumero +
                            cContaNumero +
                            cCarteira +
                            cNossoNumero +
                            "070";

            int D1 = CobUtil.Modulo10(cLivre);
            int D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString());

            while (D2 == -1) // Veja a rotina do modulo11
            {
                D1 = D1 + 1;
                D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString());
            }
            cLivre = cLivre + D1.ToString() + D2.ToString();

            //Monta o Nosso Numero
            blt.NossoNumeroExibicao = cCarteira + cNossoNumero + "070" + D1.ToString() + D2.ToString();

            // Monta a Exibição da Agencia/Conta
            blt.AgenciaConta = "000 " + cAgenciaNumero + " " + cContaNumero;

            return(cLivre);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Retorna o array de campos a serme renderizados nas posicições corretas
        /// </summary>
        /// <param name="blt">Instancia de todoas as váriáveis parametrizadas</param>
        public override void MakeFields(Boleto blt)
        {
            string cTextoAdd = "";

            if (Fields == null)
            {
                Fields = new List <FieldDraw>();
            }

            if (blt.ExibeReciboSacado)
            {
                // Logo do Cedente/Recebedor
                if (blt.CedenteLogo != null)
                {
                    // Calcula a proporção para centralizar a imagem no local correto
                    // fw? -> fh9
                    //   w -> h
                    // fw? = w*fh9/fh
                    int h = blt.CedenteLogoHeight; // 9
                    int w = (int)((double)(h * blt.CedenteLogo.Width) / (double)blt.CedenteLogo.Height);
                    int x = (35 - w) / 2;
                    Fields.Add(new FieldDraw(x, 0, null, null, w, h)
                    {
                        Image = blt.CedenteLogo
                    });
                    Height = h - 9;
                }
                else if (blt.ImageBanco != null)
                {
                    // Logo padrão do Banco
                    Fields.Add(new FieldDraw(0, 0, null, null, 35, 9)
                    {
                        Image = blt.ImageBanco
                    });
                    Height = 0;
                }

                // Linha Superior
                Fields.Add(new FieldDraw(38, 3 + Height, null, blt.BancoCodigo, 15, 6, StringAlignment.Center, 0x05));
                if (blt.ExibeReciboLinhaDigitavel)
                {
                    Fields.Add(new FieldDraw(54, 3 + Height, null, blt.LinhaDigitavel, 115, 6, StringAlignment.Far, 0x00));
                }
                else
                {
                    Fields.Add(new FieldDraw(54, 3 + Height, null, BoletoTextos.Recibo, 115, 6, StringAlignment.Far, 0x00));
                }

                // Linha 1: Centente, CNPJ, Vencimento
                Fields.Add(new FieldDraw(0, 9 + Height, BoletoTextos.Cedente, blt.Cedente, 94, 7, StringAlignment.Near, 0x0B));
                Fields.Add(new FieldDraw(94, 9 + Height, blt.CedenteDocumentoTipo, blt.CedenteDocumento, 35)
                {
                    Linhas = 0x0B
                });
                Fields.Add(new FieldDraw(129, 9 + Height, "Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy"))
                {
                    Linhas = 0x0F, Destaque = true
                });

                // Linha 2: Endereço, Sacado
                Fields.Add(new FieldDraw(0, 16 + Height, "Endereço", blt.CedenteEndereco, 94)
                {
                    Align = StringAlignment.Near
                });
                Fields.Add(new FieldDraw(94, 16 + Height, BoletoTextos.Sacado, blt.Sacado, 75)
                {
                    Align = StringAlignment.Near, Linhas = 0x07
                });
                // TODO: Endereço do Savado ?  blt.ExibeEnderecoReciboSacado ???

                // Linha 3: Nosso Numero, Carteira, Espécie, Quantidade, Valor
                Fields.Add(new FieldDraw(0, 23 + Height, "Nosso Número", blt.NossoNumeroExibicao));
                Fields.Add(new FieldDraw(40, 23 + Height, "Carteira", blt.CarteiraExibicao, 20)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(60, 23 + Height, BoletoTextos.EspecieDoc, blt.Especie.ToString(), 20)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(80, 23 + Height, "Quantidade", blt.Quantidade == 0 ? "" : blt.Quantidade.ToString(), 20)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(100, 23 + Height, "Valor", blt.ValorUnitario == 0 ? "" : blt.ValorUnitario.ToString("C"), 29));
                Fields.Add(new FieldDraw(129, 23 + Height, BoletoTextos.CedenteConta, blt.AgenciaConta)
                {
                    Linhas = 0x07
                });

                // Linha 4: Data, Numero, Aceite, Especie do documento, Aceite, Parcelamento, Valor Documento
                Fields.Add(new FieldDraw(0, 30 + Height, "Data do Documento", blt.DataDocumento.ToString("dd/MM/yyyy")));
                Fields.Add(new FieldDraw(40, 30 + Height, "Número do Documento", blt.NumeroDocumento));
                Fields.Add(new FieldDraw(80, 30 + Height, "Aceite", blt.Aceite, 20)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(100, 30 + Height, "Parcela", blt.ParcelaTotal > 0 ? (blt.ParcelaNumero + " de " + blt.ParcelaTotal) : "", 29)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(129, 30 + Height, "(=)Valor Documento", blt.ValorDocumento.ToString("C"))
                {
                    Linhas = 0x07, Destaque = true
                });

                // Linha 5: Demostrativo
                Fields.Add(new FieldDraw(0, 37 + Height, "Demonstrativo", cTextoAdd + CobUtil.ClearHTML(blt.Demonstrativo), 169, 11, StringAlignment.Near, 0x07));

                Fields.Add(new FieldDraw(142, 48 + Height, "Autenticação Mecânica", null)
                {
                    Linhas = 0x00
                });

                if (blt.ImageCorte != null)
                {
                    Fields.Add(new FieldDraw(1, 53 + Height, null, null, 167, 3)
                    {
                        Image = blt.ImageCorte
                    });
                }

                Height += 60;
            }
            else
            {
                Height = 0;
            }

            // Segunda parte do boleto

            Width = 170;

            // Segunda parte
            Fields.Add(new FieldDraw(0, Height, null, null, 35, 9)
            {
                Image = blt.ImageBanco
            });
            Fields.Add(new FieldDraw(38, 3 + Height, null, blt.BancoCodigo, 15, 6, StringAlignment.Center, 0x05));
            Fields.Add(new FieldDraw(54, 3 + Height, null, blt.LinhaDigitavel, 115, 6, StringAlignment.Far, 0x00));

            Fields.Add(new FieldDraw(0, 9 + Height, "Local de Pagamento", blt.LocalPagamento, 129, 7, StringAlignment.Near, 0x0B));
            Fields.Add(new FieldDraw(129, 9 + Height, "Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy"))
            {
                Linhas = 0x0F, Destaque = true
            });

            string cCNPJ = blt.CedenteDocumento;

            if (cCNPJ != null && cCNPJ.Length == 14)
            {
                cCNPJ = cCNPJ.Substring(0, 2) + "." + cCNPJ.Substring(2, 3) + "." + cCNPJ.Substring(5, 3) + "/" + cCNPJ.Substring(8, 4) + "." + cCNPJ.Substring(12, 2);
            }

            Fields.Add(new FieldDraw(0, 16 + Height, BoletoTextos.Cedente, blt.Cedente, 96)
            {
                Align = StringAlignment.Near
            });
            Fields.Add(new FieldDraw(96, 16 + Height, blt.CedenteDocumentoTipo, cCNPJ, 33));
            Fields.Add(new FieldDraw(129, 16 + Height, BoletoTextos.CedenteConta, blt.AgenciaConta)
            {
                Linhas = 0x07
            });

            Fields.Add(new FieldDraw(0, 23 + Height, "Data Documento", blt.DataDocumento.ToString("dd/MM/yyyy"), 30));
            Fields.Add(new FieldDraw(30, 23 + Height, "Número do Documento", blt.NumeroDocumento, 35));
            Fields.Add(new FieldDraw(65, 23 + Height, BoletoTextos.EspecieDoc, blt.Especie.ToString(), 19)
            {
                Align = StringAlignment.Center
            });
            Fields.Add(new FieldDraw(84, 23 + Height, "Aceite", blt.Aceite, 12)
            {
                Align = StringAlignment.Center
            });
            Fields.Add(new FieldDraw(96, 23 + Height, "Data Processamento", blt.DataProcessamento.ToString("dd/MM/yyyy"), 33));
            Fields.Add(new FieldDraw(129, 23 + Height, "Nosso Número", blt.NossoNumeroExibicao)
            {
                Linhas = 0x07
            });

            if (blt.CIP != "")
            {
                Fields.Add(new FieldDraw(0, 30 + Height, "Uso do Banco", "", 20)); // TODO: A ser descontinuado!
                Fields.Add(new FieldDraw(20, 30 + Height, "CIP", blt.CIP, 10)
                {
                    Align = StringAlignment.Center
                });
                Fields.Add(new FieldDraw(30, 30 + Height, "Carteira", blt.CarteiraExibicao, 21)
                {
                    Align = StringAlignment.Center
                });
            }
            else
            {
                Fields.Add(new FieldDraw(0, 30 + Height, "Carteira", blt.CarteiraExibicao, 51)
                {
                    Align = StringAlignment.Center
                });
            }

            Fields.Add(new FieldDraw(51, 30 + Height, "Espécie", "R$", 14)
            {
                Align = StringAlignment.Center, Destaque = true
            });
            Fields.Add(new FieldDraw(65, 30 + Height, "Quantidade", blt.Quantidade == 0 ? "" : blt.Quantidade.ToString(), 31)
            {
                Align = StringAlignment.Center
            });
            Fields.Add(new FieldDraw(96, 30 + Height, "(x)Valor", blt.ValorUnitario == 0 ? "" : blt.ValorUnitario.ToString("C"), 33));
            Fields.Add(new FieldDraw(129, 30 + Height, "(=)Valor Documento", blt.ValorDocumento.ToString("C"))
            {
                Linhas = 0x07, Destaque = true
            });

            Fields.Add(new FieldDraw(0, 37 + Height, BoletoTextos.Instrucoes, cTextoAdd + CobUtil.ClearHTML(blt.Instrucoes), 129, 35, StringAlignment.Near));
            Fields.Add(new FieldDraw(129, 37 + Height, "(-)Descontos/Abatimentos", blt.ValorDesconto > 0 ? blt.ValorDesconto.ToString("C") : "")
            {
                Linhas = 0x07
            });
            Fields.Add(new FieldDraw(129, 44 + Height, "(-)Outras Deduções", blt.ValorOutras > 0 ? blt.ValorOutras.ToString("C") : "")
            {
                Linhas = 0x07
            });
            Fields.Add(new FieldDraw(129, 51 + Height, "(+)Mora/Multa", blt.ValorMoraMulta > 0 ? blt.ValorMoraMulta.ToString("C") : "")
            {
                Linhas = 0x07
            });
            Fields.Add(new FieldDraw(129, 58 + Height, "(+)Outros Acréscimos", blt.ValorAcrescimo > 0 ? blt.ValorAcrescimo.ToString("C") : "")
            {
                Linhas = 0x07
            });
            double nValor = blt.ValorDocumento - blt.ValorDesconto - blt.ValorOutras + blt.ValorMoraMulta + blt.ValorAcrescimo;

            Fields.Add(new FieldDraw(129, 65 + Height, "(=)Valor", nValor > 0 && nValor != blt.ValorDocumento ? nValor.ToString("C") : "")
            {
                Linhas = 0x07
            });

            Fields.Add(new FieldDraw(0, 72 + Height, BoletoTextos.Sacado, blt.Sacado + " - " + blt.SacadoDocumento +
                                     "\r\n" + blt.SacadoEndereco +
                                     "\r\n" + blt.Bairro + " - " + blt.Cidade +
                                     " - " + blt.Cep + " - " + blt.UF, 169, 14, StringAlignment.Near, 0x0F));

            if (!string.IsNullOrEmpty(blt.Avalista))
            {
                Fields.Add(new FieldDraw(100, 79 + Height, BoletoTextos.Avalista, blt.Avalista, 100, 7, StringAlignment.Near, 0));
            }

            Fields.Add(new FieldDraw(114, 86 + Height, "Autenticação Mecânica / Ficha de compensação", null)
            {
                Linhas = 0x00
            });

            if (!string.IsNullOrEmpty(blt.CodigoBarras))
            {
                Fields.Add(new FieldDraw(5, 88 + Height, null, null, 0, 9)
                {
                    Image = CobUtil.BarCodeImage(blt.CodigoBarras, 3, blt.DPI)
                });
            }

            Height += 85 + 15;
        }
Ejemplo n.º 29
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 cCodCedente, string cConvenio, string cCarteira, string cNossoNumero)
        {
            if (long.Parse(cCodCedente) == 0L)
            {
                throw new Exception("Informe a Código de Cedente");
            }

            if (cCodCedente.Length == 15)
            {
                cNossoNumero = CobUtil.Right(cNossoNumero, 10);
                string cLivre = cNossoNumero + cCodCedente;

                blt.NossoNumeroExibicao = cNossoNumero + "-" + CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();

                cCodCedente     += CobUtil.Modulo11Padrao(cCodCedente, 9).ToString();
                blt.AgenciaConta =
                    cCodCedente.Substring(0, 4) + "/" +
                    cCodCedente.Substring(4, 3) + "." +
                    cCodCedente.Substring(7, 8) + "." +
                    cCodCedente.Substring(15, 1);
                return(cLivre);
            }
            else if (CobUtil.GetInt(cCarteira) == 0) // obrigatório para os outros casos
            {
                throw new Exception("Informe a Carteira");
            }

            else if (cCodCedente.Length == 6)
            {
                // PADRÃO SIGCB (Nosso numero com 7 posições)
                // XYNNNNNNNNNNNNNNN-D, onde:
                //(12123456789012345-1)
                // X – Modalidade Cobrança (1 – Registrada/2 – Sem Registro)
                // Y – Emissão do bloqueto (4 – cedente)
                // N - Numeros Livres de identificação do Nosso Numero
                // D - Digito do Código do Cedente
                // dai apenas 15 são de fato uteis!

                cNossoNumero = CobUtil.Right(cNossoNumero, 15);
                string cNN1 = cNossoNumero.Substring(0, 3);
                string cNN2 = cNossoNumero.Substring(3, 3);
                string cNN3 = cNossoNumero.Substring(6, 9);

                // digito de verificação do código de cedente
                //string cDV1 = CobUtil.Modulo11Especial(cCodCedente, 9).ToString();
                //alterado em 2/12 para modulo padrão!
                string cDV1 = CobUtil.Modulo11Especial(cCodCedente, 9).ToString();

                cCarteira = CobUtil.Right(cCarteira, 1);
                string cLivre = cCodCedente + cDV1 + // 6 + 1 = 7
                                cNN1 + cCarteira +   // 3 + 1 = 4
                                cNN2 + "4" + cNN3;   // 3 + 1 + 9 = 13 (a constante "4" indica emissão no CEDENTE
                // 7 + 4 + 13 = 24

                cLivre += CobUtil.Modulo11Especial(cLivre, 9); // 24 + 1 = 25 OK

                // exibição da agencia/conta
                blt.AgenciaConta = cAgenciaNumero + "/" + cCodCedente + "-" + cDV1;

                // exibição do nosso numero
                cNossoNumero            = cCarteira + "4" + cNossoNumero;
                blt.NossoNumeroExibicao = cNossoNumero + "-" + CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();
                blt.NossoNumeroExibicao = blt.NossoNumeroExibicao.Substring(0, 2) + "/" + blt.NossoNumeroExibicao.Substring(2);

                if (cCarteira == "1")
                {
                    blt.CarteiraExibicao = "RG";
                }
                else // 2
                {
                    blt.CarteiraExibicao = "SR";
                }

                return(cLivre);
            }
            else if (cCarteira == "8")
            {
                /* Carteira 8 - Cobrança sem Registro com 16 de Nosso Numero
                 * ==========(página 5 do arquivo de documentação: Caixa-Carteira8.pdf)
                 * IX - CAMPO LIVRE (posições 20 a 44)
                 * Para as posições do Campo Livre, informar:
                 * XXXXX AAAA C K NNNNNNNNNNNNNN
                 * Onde:
                 * XXXXX - Código do Cliente Cedente fornecido pela CAIXA
                 * AAAA - CNPJ da Agência da Conta do Cliente Cedente
                 * C - Código da Carteira = 8
                 * K - Constante = 7
                 * NNNNNNNNNNNNNN - Nosso Número do Cliente com 14 posições.
                 * */

                cCodCedente  = CobUtil.Right(cCodCedente, 5);   // Código do Cedente
                cConvenio    = CobUtil.Right(cConvenio, 4);     // CNPJ da Agencia da Conta do Cliente
                cNossoNumero = CobUtil.Right(cNossoNumero, 14); // Nosso Numero com 12 posições

                if (Int32.Parse(cConvenio) == 0)
                {
                    throw new Exception("Informe o Código do Convenio");
                }

                string cLivre =
                    cCodCedente +
                    cConvenio +
                    cCarteira +     // Carteira 8
                    "7" +           // Constante K
                    cNossoNumero;

                cNossoNumero            = "8" + cNossoNumero;
                blt.NossoNumeroExibicao = cNossoNumero + "-" + CobUtil.Modulo11Especial(cNossoNumero, 9).ToString();

                blt.CarteiraExibicao = "SR";

                string cCod    = cConvenio + ".870.000" + cCodCedente;
                string cCoddig = cCod.Replace(".", "");
                blt.AgenciaConta = cCod + "-" + CobUtil.Modulo11Padrao(cCoddig, 9);

                return(cLivre);
            }
            else
            {
                /* Carteira Padrão - Cobrança sem Registro com 17 de Nosso Numero
                 * ===============(página 5 do arquivo de documentação: Caixa-CarteiraPadrão.pdf)
                 * 1 - Fixo
                 * XXXXXX - Código do Cliente Cedente fornecido pela CAIXA
                 * 9 - Fixo
                 * NNNNNNNNNNNNNNNN - Nosso Número do Cliente com 17 posições.
                 */
                cCodCedente  = CobUtil.Right(cCodCedente, 6);          // Código do Cliente será informado em 'Cedente' e será substituido na no Numero da Conta do Cliente!
                cNossoNumero = "9" + CobUtil.Right(cNossoNumero, 17);  // Adiciona o '9' Fixo! mais os 17 numeros do campo 'Nosso Numero'

                string cLivre =
                    "1" +
                    cCodCedente +
                    cNossoNumero;

                // Monta a exibição do Nosso Numero com o Digito Verificador
                blt.NossoNumeroExibicao = cNossoNumero + "-" + CobUtil.Modulo11Especial(cNossoNumero, 9);

                return(cLivre);
            }
        }
Ejemplo n.º 30
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);
        }