// Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum
    void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto)
    {
        // É sempre bom validar o nome do registro, principalmente em CNAB240 que tem 2 tipos de registros para cada boleto, e cada registro deve ser tratado individualmente
        if (reg.NameType == typeof(CNAB400Remessa1Sicredi))
        {
            Reg<CNAB400Remessa1Sicredi> regBoleto = (Reg<CNAB400Remessa1Sicredi>)reg;
            // A rotina padrão define estas variáveis abaixo:
            /*
            regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros;
            regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero;
            regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento;
            regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento;
            regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento;
            regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.EspecieSicred(boleto.Especie);
            regBoleto[CNAB400Remessa1Sicredi.Aceite] = boleto.Aceite == "A" ? "S" : "N";
            regBoleto[CNAB400Remessa1Sicredi.Data] = boleto.DataDocumento;
            regBoleto[CNAB400Remessa1Sicredi.DataEmissao] = boleto.DataDocumento;
            if (boleto.ParcelaTotal > 0)
            {
                regBoleto[CNAB400Remessa1Sicredi.TipoImpressao] = "B";
                regBoleto[CNAB400Remessa1Sicredi.ParcelaNumero] = boleto.ParcelaNumero;
                regBoleto[CNAB400Remessa1Sicredi.ParcelaTotal] = boleto.ParcelaTotal;
            }
            regBoleto[CNAB400Remessa1Sicredi.Instrucao] = boleto.Instrucao1;
            regBoleto[CNAB400Remessa1Sicredi.Protesto] = boleto.DiasProtesto > 6 ? "06" : "00";
            regBoleto[CNAB400Remessa1Sicredi.DiasProtesto] = boleto.DiasProtesto;
            regBoleto[CNAB400Remessa1Sicredi.PercentualMora] = boleto.PercentualMora;
            regBoleto[CNAB400Remessa1Sicredi.DataDesconto] = boleto.DataDesconto;
            regBoleto[CNAB400Remessa1Sicredi.ValorDesconto] = boleto.ValorDesconto;
            regBoleto[CNAB400Remessa1Sicredi.SacadoTipo] = boleto.Sacado.Tipo;
            regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros;
            regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco;
            regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros;
            */

            // Campos com certa particulariade no sicred
            regBoleto[CNAB400Remessa1Sicredi.TipoCarteira] = "X"; // posição 3
            regBoleto[CNAB400Remessa1Sicredi.TipoJuros] = "Y";    // posição 19
            regBoleto[CNAB400Remessa1Sicredi.Alteracao] = "C";    // posição 71 // Desconto por dia de antecipação; 
            regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A";      // posição 74 // O padrão é que a emissão seja feito no cliente ("B")

            // Os valores definidos em 'SetRegEnumValue' ou 'SetRegKeyValue' são obtidos apos este evento, portanto tem sempre prioridade
        }
    }
示例#2
0
        public BoletoInfo RetornaBoletoRegra(string NossoNumero, string Valor, string Vencimento, int n, decimal ValorBoleto, decimal Desconto, DateTime DataValidade)
        {
            BoletoInfo Boleto = new BoletoInfo();

            Boleto.BoletoID        = n;
            Boleto.NossoNumero     = (Int32.Parse(NossoNumero) + n).ToString();
            Boleto.NumeroDocumento = (Int32.Parse(NossoNumero) + n).ToString();
            Boleto.ValorDocumento  = double.Parse((ValorBoleto - Desconto).ToString());
            Boleto.DataDocumento   = DateTime.Now;
            Boleto.DataVencimento  = DateTime.Parse(Vencimento);
            Boleto.Instrucoes      = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

            // outros campos opcionais
            Boleto.ValorMora       = (Boleto.ValorDocumento / 100 * 0.033); // Vale lembrar que o juros pode ser tão pequeno que as vezes pode sair como isento
            Boleto.PercentualMulta = 0.02;
            Boleto.ValorDesconto   = (double)Desconto;
            Boleto.DataDesconto    = DateTime.Now;
            //Boleto.ValorOutras = -n; // abatimentos
            Boleto.Instrucao1 = 6; // Protestar
            Boleto.Instrucao2 = 7; // Depois de 7 dias do vencimento

            // No bRadesco não é usado o campo Comando, mas outros bancos podem usar
            // Boleto.Comando = 0;

            // As linhas a seguir customiza qualquer valor sem precisar usar o evento 'r.onRegBoleto' o que torna a implementação mais simples
            // A forma mais pratica e segura é sempre usar os enumeradores
            // Mas é possivel usar as duas opções como neste exemplo, mas os valores personalizados tem sempre prioridade pois são inserridos por ultimo apos todos calculos, e processamento de eventos, portanto use com cuidado!
            Boleto.SetRegEnumValue(CNAB400Remessa1Sicredi.TipoJuros, "B");  // (posição 19) // Apenas se atente para a diferença do nome para SetRegEnumValue()
            Boleto.SetRegKeyValue("CNAB400Remessa1Sicredi.Alteracao", "E"); // (posição 71) // É possivel adicionar o nome e valor do enumerador, isso é compativel com VB6
                                                                            // Cuidado ao deixar algo explicito diretamente:
                                                                            // Boleto.SetRegKeyValue("Emissao", "B"); // posição 74 // ou simplesmente informar o nome do campo, mas cuidado pois há layouts que usam mais de um tipo de registro e as vezes tem nomes iguais mas as funções podem ser diferentes
            Boleto.SetRegEnumValue(CNAB400Remessa1Bradesco.Condicao, 1);    // Apenas para Bradesco enviar o boleto para residencia

            return(Boleto);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
       
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "TESTE PARA HOMOLOGAÇÃO";
        Cedente.Banco = "047-7";
        Cedente.Agencia = "059-3";
        Cedente.Conta = "100046-0";
        Cedente.CodCedente = "031000460";
        Cedente.Carteira = "SR";

        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "1431";
        Boleto.NumeroDocumento = Boleto.NossoNumero;
        Boleto.ValorDocumento = 50;
        Boleto.DataVencimento = new DateTime(2009, 3, 5);
        
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fábio Teste";
        Sacado.Documento = "123.456.789-01";

        // Define as instruções para o atendente do caixa
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 2, 9, 9, 3, 1, 1 });

    }
示例#4
0
        public void Retorno_BB()
        {
            LayoutBancos r = new LayoutBancos();

            r.Init(Cedente);

            // Registro tipo 7
            string cFileRET = File.ReadAllText(@"..\..\TXT\Retorno_BB.txt");

            r.ErroType = BoletoDuplicado.Lista;
            Layout ret = r.Retorno(cFileRET);

            // Ou usa-se o array de boletos
            foreach (string nn in r.Boletos.NossoNumeros)
            {
                BoletoInfo Boleto = r.Boletos[nn];
                Console.Write("{0} {1:C} {2:dd/MM/yyyy} {3:dd/MM/yyyy}\r\n",
                              Boleto.NossoNumero,
                              Boleto.ValorDocumento,
                              Boleto.DataVencimento,
                              Boleto.DataPagamento);
            }

            // por causa do tipo (r.ErroType) pode haver duplicidade de dados
            // pois um boleto pode ter sido baixado e protestado ou pago,
            // e com alguma ocorrencia e assim cada registro informa algo
            Console.WriteLine("Duplicados:");
            foreach (var Boleto in r.Boletos.Duplicados)
            {
                Console.Write("{0} {1:dd/MM/yyyy} {2:C}\r\n", Boleto.NossoNumero, Boleto.DataPagamento, Boleto.ValorDocumento);
            }
        }
示例#5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente    = "TESTE PARA HOMOLOGAÇÃO";
        Cedente.Banco      = "047-7";
        Cedente.Agencia    = "059-3";
        Cedente.Conta      = "100046-0";
        Cedente.CodCedente = "031000460";
        Cedente.Carteira   = "SR";

        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "1431";
        Boleto.NumeroDocumento = Boleto.NossoNumero;
        Boleto.ValorDocumento  = 50;
        Boleto.DataVencimento  = new DateTime(2009, 3, 5);

        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "Fábio Teste";
        Sacado.Documento = "123.456.789-01";

        // Define as instruções para o atendente do caixa
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 2, 9, 9, 3, 1, 1 });
    }
    protected void Page_Load(object sender, EventArgs e)
    {
       
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "TESTE";
        Cedente.Banco = "091";
        Cedente.Agencia = "123-4";
        Cedente.Conta = "12345678-9";

        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "299621";
        Boleto.NumeroDocumento = Boleto.NossoNumero;
        Boleto.ValorDocumento = 50.67;
        Boleto.DataVencimento = new DateTime(2017, 3, 5);
        
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fábio Teste";
 
        // Define as instruções para o atendente do caixa
        Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 4, 10, 10, 1 });

    }
示例#7
0
        public void Remessa_Banestes()
        {
            // (em homologação: 27/04/2016)

            LayoutBancos lb = new LayoutBancos();

            lb.Init(Cedente);
            lb.DataHoje = DateTime.Parse("23/04/2016 11:30:00");

            Util.AddBoletos(lb);

            //// Exemplo de definições de dados não calculados no componente, ou não existente inicialmente
            BoletoInfo boleto = lb.Boletos[Util.NossoNumeroInicial.ToString()];                     // Captura apenas o primeiro boleto adicionado pela minha rotina padrão de geração

            boleto.SetRegEnumValue(CNAB400Remessa1Banestes.Mensagem, "Mensagem a ser impressa..."); // 352-391

            // Exibir as informações de DUMP ajuda a char os erros e diferenças
            // lb.ShowDumpLine = true;

            string txt = lb.Remessa();

            Console.Write(txt);

            File.WriteAllText(@"..\..\TXT\Teste_Banestes.txt", txt); // Gera um arquivo para testes de compraração
            //File.WriteAllText(fileTest, txt); // Gera um novo modelo
            string cAnterior = File.ReadAllText(fileTest);

            // Isso necessáriamente não é um erro, pode ter sido uma correção ou melhoria que agora contemple mais casos
            Assert.IsTrue(cAnterior == txt);
        }
示例#8
0
        public void Retorno_Sicredi()
        {
            LayoutBancos r = new LayoutBancos();

            r.Init(Cedente);

            string cFileRET = File.ReadAllText(@"..\..\TXT\Retorno_Sicredi.txt");

            r.ErroType = BoletoDuplicado.Lista;
            Layout ret = r.Retorno(cFileRET);

            // O resultado pode vir completo em uma tabela
            // var tb = ret.Table(typeof(CNAB400Retorno1Bradesco));
            //string cErros = r.ErroLinhas;
            //Assert.IsTrue(string.IsNullOrEmpty(cErros), cErros);

            // Ou usa-se o array de boletos
            foreach (string nn in r.Boletos.NossoNumeros)
            {
                BoletoInfo Boleto = r.Boletos[nn];
                Console.Write("{0} {1:dd/MM/yyyy} {2:C}\r\n", Boleto.NossoNumero, Boleto.DataPagamento, Boleto.ValorDocumento);
            }

            // por causa do tipo (r.ErroType) pode haver duplicidade de dados
            // pois um boleto pode ter sido baixado e protestado ou pago,
            // e com alguma ocorrencia e assim cada registro informa algo
            Console.WriteLine("Duplicados:");
            foreach (var Boleto in r.Boletos.Duplicados)
            {
                Console.Write("{0} {1:dd/MM/yyyy} {2:C}\r\n", Boleto.NossoNumero, Boleto.DataPagamento, Boleto.ValorDocumento);
            }
        }
示例#9
0
        public void Remessa_Caixa()
        {
            LayoutBancos lb = new LayoutBancos();

            lb.Init(Cedente);
            lb.DataHoje = DateTime.Parse("13/12/2015 16:34:08");

            Util.AddBoletos(lb);

            // Exemplo de definições de dados não calculados no componente, ou não existente inicialmente
            BoletoInfo boleto = lb.Boletos[Util.NossoNumeroInicial.ToString()];      // Captura apenas o primeiro boleto adicionado pela minha rotina padrão de geração

            boleto.SetRegEnumValue(CNAB240SegmentoPCaixa.Juros, 1);                  // 118
            boleto.SetRegEnumValue(CNAB240SegmentoPCaixa.JurosData, Util.DataTeste); // 119-126
            boleto.SetRegEnumValue(CNAB240SegmentoPCaixa.JurosMora, 0.26);           // 127-141
            boleto.SetRegEnumValue(CNAB240SegmentoPCaixa.ProtestoPrazo, 15);         // 222-223

            // Exibir as informações de DUMP ajuda a char os erros e diferenças
            // lb.ShowDumpLine = true;

            string txt = lb.Remessa();

            Console.Write(txt);

            File.WriteAllText(@"..\..\TXT\Teste_Caixa.txt", txt); // Gera um arquivo para testes de compraração
            // File.WriteAllText(fileTest, txt); // Gera um novo modelo
            string cAnterior = File.ReadAllText(fileTest);

            // Isso necessáriamente não é um erro, pode ter sido uma correção ou melhoria que agora contemple mais casos
            Assert.IsTrue(cAnterior == txt);
        }
示例#10
0
    protected void Page_Load(object sender, EventArgs e)
    {
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente = "TESTE";
        Cedente.Banco   = "091";
        Cedente.Agencia = "123-4";
        Cedente.Conta   = "12345678-9";

        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "299621";
        Boleto.NumeroDocumento = Boleto.NossoNumero;
        Boleto.ValorDocumento  = 50.67;
        Boleto.DataVencimento  = new DateTime(2017, 3, 5);

        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado = "Fábio Teste";

        // Define as instruções para o atendente do caixa
        Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 4, 10, 10, 1 });
    }
示例#11
0
        /// <summary>
        /// Adiciona um boleto e seu respectivo sacado (será armazenado uma cópia (cole) destas instancias
        /// </summary>
        public void Add(BoletoInfo bol, SacadoInfo sac)
        {
            BoletoInfo boleto = bol.Clone(); // é feita uma cópia do boleto com os dados adicionais para não alterar o original

            boleto.SacadoInit((SacadoInfo)CobUtil.Clone(sac));
            cnab.Boletos.Add(boleto);
#if TEST_LOG
            cnab.Log += "\r\n +" + boleto.NossoNumero + " QTD: " + cnab.Boletos.Count + "\r\n";
            BoletoInfo b;
            foreach (string n in Boletos.NossoNumeros)
            {
                b         = Boletos[n];
                cnab.Log += string.Format("'{0}' '{1}' / ", n, b.NossoNumero);
            }
            //cnab.Log += " - bi - ";
            //foreach (string n in bi.Keys)
            //{
            //    b = null;
            //    if (bi.TryGetValue(n, out b))
            //        cnab.Log += string.Format("'{0}' '{1}' / ", n, b.NossoNumero);
            //    else
            //        cnab.Log += n + "! ";
            //}
#endif
        }
示例#12
0
 /// <summary>
 /// Chama o evento para adicions os registros opcionais
 /// </summary>
 protected void AddOpcionais(BoletoInfo boleto)
 {
     if (this.onRegOpcional != null)
     {
         SequencialRegistro += onRegOpcional(this, boleto);
     }
 }
示例#13
0
        public void Boleto_Caixa()
        {
            // Exemplo 100% de acordo com a documentação usando os parametros mínimos
            // https://github.com/impactro/Boleto-ASP.NET/files/44866/ESPCODBARR_SICOB.pdf
            // Página 8, item 5.1.1

            /* Dados usados para cálculo:
             *   104 Banco ...............................Posição: 01 - 03
             *     9 Moeda ...............................Posição: 04 - 04
             * 1099(10/10/2000) Fator de Vencimento .................Posição: 06 - 09
             * 160,00 Valor ...............................Posição: 10 - 19
             * 9001200200 Nosso Número (sem DV) ...............Posição: 20 - 29
             * 001287000000012 Código do Cedente no SICOB(sem DV) ..Posição: 30 - 44 */

            // Dados do Recebedor
            CedenteInfo c = new CedenteInfo()
            {
                Banco      = "104-0",
                CodCedente = "001287000000012"
            };

            // Dados do Pagador
            SacadoInfo s = new SacadoInfo();

            // Informações do Boleto
            BoletoInfo b = new BoletoInfo()
            {
                DataVencimento = DateTime.Parse("10/10/2000"),
                ValorDocumento = 160,
                NossoNumero    = "9001200200" // Exemplo do caso especial onde o Dv dá Zero (caso critico)
            };

            // Cria uma instancia do objeto que calcula e monta um boleto
            Boleto bol = new Boleto();

            // Seta as variáveis (parametros) com os dados do recebedor (c), pagador (s), e as informações do boleto (b)
            bol.MakeBoleto(c, s, b);

            // Calcula efetivamente o boleto
            bol.CalculaBoleto();

            // Imprime a linha digitável no console e alguns outros dados para conferencia
            Console.WriteLine("Linha Digitável: " + bol.LinhaDigitavel);
            Console.WriteLine("Agência/Conta: " + bol.AgenciaConta);
            Console.WriteLine("Nosso Número: " + bol.NossoNumeroExibicao);
            Console.WriteLine("Fator Vencimento: " + CobUtil.CalcFatVenc(bol.DataVencimento));

            // De acordo com a página 13 deve gerar exatamente a linha abaixo
            Assert.IsTrue(bol.LinhaDigitavel == "10499.00127 00200.001287 70000.000128 1 10990000016000");

            // Outro exemplo qualquer:
            b.NossoNumero = "9000003225";
            bol.MakeBoleto(c, s, b);                                  // atualizo os dados (não é recomendado, mas para simplificar funciona)
            bol.CalculaBoleto();                                      // se não chamar esta rotina, virá comos resultados calculados anteriormente
            Console.WriteLine("Exemplo Livre: Nosso Número: " + bol.NossoNumeroExibicao);
            Assert.IsTrue(bol.NossoNumeroExibicao == "9000003225-0"); // no caso o sistema sempre preenche com os digitos zeros a esquerda

            // Salva a imagem do boleto para conferencia visual
            bol.Save("boleto.png");
        }
    protected void Page_Load(object sender, EventArgs e)
    {

        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "IMPACTRO TESTE";
        Cedente.Banco = "422-7";
        Cedente.Agencia = "12300";
        Cedente.Conta = "4321-6";
        Cedente.Carteira = "1";
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "949275603";
        Boleto.NumeroDocumento = "8400004006";
        Boleto.ValorDocumento = 3482.43;
        Boleto.DataVencimento = new DateTime(2008, 8, 18);
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "FABIO FERREIRA";
        Sacado.Documento = "123456789";

        // Define as instruções para o atendente do caixa
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
        bltPag.Boleto.CarteiraExibicao = "060";

        // exibe o código fe barras de acrodo com a carteira
        if (Cedente.Carteira == "1" || Cedente.Carteira == "2")
            lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 5, 9, 9, 1 });
        else
            lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 7, 16, 1 });
    }
示例#15
0
        /// <summary>
        /// Configura o boleto, passando os 3 objetos que contem os dados para a geração do boleto para variáveis internas, mas não calcula: veja: Calculaboleto()
        /// </summary>
        /// <param name="oCedente">Dados do Cedente</param>
        /// <param name="oSacado">Dados do Sacado</param>
        /// <param name="oBoleto">Dados do Boleto</param>
        public void MakeBoleto(CedenteInfo oCedente, SacadoInfo oSacado, BoletoInfo oBoleto)
        {
            if (Boleto == null)
            {
                return;
            }

            Boleto.MakeBoleto(oCedente, oSacado, oBoleto);
            Boleto.CalculaBoleto();
        }
示例#16
0
        /// <summary>
        /// Renderiza a linha de um boleto, mas antes chama um evento proprio de customização
        /// </summary>
        protected void AddBoleto(IReg oReg, BoletoInfo boleto)
        {
            if (this.onRegBoleto != null)
            {
                onRegBoleto(this, oReg, boleto);
            }

            boleto.BindReg(oReg);
            Add(oReg);
        }
示例#17
0
    // ATENÇÃO: Este exemplo funciona apenas no .Net 3.0!
    // Por usar instaciamento direto no construtor e expressão lambida

    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente

        CedenteInfo Cedente = new CedenteInfo()
        {
            Cedente  = "Exemplo de empresa cedente",
            Banco    = "070-1",
            Agencia  = "058",
            Conta    = "6002006",
            Carteira = "1"
        };

        // Definição dos dados do sacado

        SacadoInfo Sacado = new SacadoInfo()
        {
            Sacado    = "(Teste para homologação)",
            Documento = "123.456.789-99",
            Endereco  = "Av. Paulista, 1234",
            Cidade    = "São Paulo",
            Bairro    = "Centro",
            Cep       = "12345-123",
            UF        = "SP"
        };

        // Definição dos dados do boleto

        BoletoInfo Boleto = new BoletoInfo()
        {
            NossoNumero     = "000001",
            NumeroDocumento = "1",
            ValorDocumento  = 1,
            //DataDocumento = DateTime.Now,
            //DataVencimento = new DateTime(2008, 9, 8),
        };

        // é possivel customizar a geração do campo livre
        // desta forma você poderá implementar outros bancos ou carteiras
        // (exemplo usando expressão lambida)

        /*
         * bltPag.MontaCampoLivre += (Boleto blt) =>
         * {
         *  return new string('0', 25); // importante é sempre retornar 25 caracteres
         * };
         */

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // Exibe o codigo de barras devidamente formatado e separado
        lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(
            new int[] { 3, 3, 7, 1, 6, 3, 1, 1 });
    }
示例#18
0
    // ATENÇÃO: Este exemplo funciona apenas no .Net 3.0!
    // Por usar instaciamento direto no construtor e expressão lambida

    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente

        CedenteInfo Cedente = new CedenteInfo()
        {
            Cedente = "Exemplo de empresa cedente",
            Banco = "070-1",
            Agencia = "058",
            Conta = "6002006",
            Carteira= "1"
        };

        // Definição dos dados do sacado

        SacadoInfo Sacado = new SacadoInfo()
        {
            Sacado = "(Teste para homologação)",
            Documento = "123.456.789-99",
            Endereco = "Av. Paulista, 1234",
            Cidade = "São Paulo",
            Bairro = "Centro",
            Cep = "12345-123",
            UF = "SP"
        };

        // Definição dos dados do boleto

        BoletoInfo Boleto = new BoletoInfo()
        {
            NossoNumero = "000001",
            NumeroDocumento = "1",
            ValorDocumento = 1,
            //DataDocumento = DateTime.Now,
            //DataVencimento = new DateTime(2008, 9, 8),
        };
        
        // é possivel customizar a geração do campo livre
        // desta forma você poderá implementar outros bancos ou carteiras
        // (exemplo usando expressão lambida)
        /*
        bltPag.MontaCampoLivre += (Boleto blt) =>
        {
            return new string('0', 25); // importante é sempre retornar 25 caracteres
        };
        */

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
        
        // Exibe o codigo de barras devidamente formatado e separado
        lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(
            new int[] { 3, 3, 7, 1, 6, 3, 1, 1 });

    }
示例#19
0
    void r_onRegItem(BoletoInfo boleto, object eRegT)
    {
        // é possivel definir campos adicionais como descontos, jurus, protesto e quaisquer outros via evento
        // estes campos adicionais não está na classe basica de emissão sem registro: BoletoInfo, e devem ser definidos via evento
        // veja a documentação de cada banco e atribua os campos necessários
        // o arqumento "eReg" é um tipo de Registro baseado no enumerador do banco registro: Reg<T> (é um template cuidado)
        Reg <CNAB400Remessa1Bradesco> regBoleto = (Reg <CNAB400Remessa1Bradesco>)eRegT;

        regBoleto[CNAB400Remessa1Bradesco.Condicao]   = 1;  // Para bo banco imprimir e enviar o boleto
        regBoleto[CNAB400Remessa1Bradesco.Instrucao1] = 6;  // Indica para Protestar
        regBoleto[CNAB400Remessa1Bradesco.Instrucao2] = 15; // Numero de dias apos o vencimento para o protesto
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente - QUEM RECEBE / EMITE
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente  = "Exemplo de empresa cedente";
        Cedente.Banco    = "237-";
        Cedente.Agencia  = "1234";      // use somente "-" para separa o código da agencia e digito
        Cedente.Conta    = "56789-1";   // use somente "-" para separa o código da conta e digito
        Cedente.Carteira = "6";
        Cedente.CNPJ     = "12.345.678/0001-12";
        Cedente.Endereco = "Rua Sei lá aonde, 123 - Centro, São Paulo/SP";

        // Definição dos dados do sacado -  QUEM PAGA
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.SacadoCodigo = "123"; // Código interno de controle
        Sacado.Sacado       = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento    = "123.456.789-99";
        Sacado.Endereco     = "Av. Paulista, 1234";
        Sacado.Cidade       = "São Paulo";
        Sacado.Bairro       = "Centro";
        Sacado.Cep          = "12345-123";
        Sacado.UF           = "SP";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento  = 423.45;
        Boleto.DataDocumento   = DateTime.Now;
        Boleto.DataVencimento  = new DateTime(2006, 5, 31);
        Boleto.ParcelaNumero   = 2;
        Boleto.ParcelaTotal    = 10;
        Boleto.Instrucoes      = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // Monta as informações do boleto
        bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif;
        // O Conversor padrão só lê imagens absolutas, então as imagens devem ser geradas co o nome do host
        // veja mais em: http://stackoverflow.com/questions/924996/itextsharp-htmlworker-img-not-found-404
        bltPag.ImagePath = "http://" + Request.Url.Host + ":" + Request.Url.Port + "/BoletoNet/imagens/";
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // O Calculo acontece no RENDER, que neste caso é chamado internamente ao converter para PDF
        // Comente/descomente a linha abaixo para ver em HTML ou em PDF!
        ConverteAspx2Pdf();

        // O problema desta solução é que o boleto sai muito grande, na página toda, ou seja fora da escala padrão
        // Mas tudo é valido, inclusive o código de barras, só não serve para homologação
        // O problema desta solução é que ela não é otimizada, e apenas uma conversão de HTML/CSS para um PDF dentro das possibilidades do proprio componente 'HTMLWorker' que já é obsoleto!
    }
示例#21
0
        public IActionResult Boleto()
        {
            // Definição dos dados do cedente
            var Cedente = new CedenteInfo()
            {
                Cedente  = "Teste de Cedente",
                CNPJ     = "12.345.678/0000-12",
                Endereco = "endereço do recebedor",
                Banco    = "237",
                Agencia  = "0646",
                Conta    = "9105-8",
                Carteira = "6"
            };

            // Definição dos dados do sacado
            var Sacado = new SacadoInfo()
            {
                Sacado    = "Fabio Ferreira (Teste)",
                Documento = "123.456.789-99",
                Endereco  = "Av. Paulista, 1234",
                Cidade    = "São Paulo",
                Bairro    = "Centro",
                Cep       = "12345-123",
                UF        = "SP"
            };

            // Definição das Variáveis do boleto
            var Boleto = new BoletoInfo()
            {
                NumeroDocumento = "00046356",
                NossoNumero     = "00046356",
                ParcelaNumero   = 1,
                ParcelaTotal    = 3,
                Quantidade      = 4,
                ValorUnitario   = 34.55,
                ValorDocumento  = 3070.14,
                DataDocumento   = DateTime.Now,
                DataVencimento  = DateTime.Parse("30/07/2017"),
                Demonstrativo   = "Demostrativo para o cliente",
                Instrucoes      = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"
            };

            // monta o boleto com os dados específicos nas classes
            var blt = new Boleto();

            blt.MakeBoleto(Cedente, Sacado, Boleto); // Armazena e inicializa variáveis internas
            blt.CalculaBoleto();                     // Calcula a linha digitável e código de barras

            ViewBag.Boleto = blt;                    // Coloca na viewBag a instancia do boleto calculado para ser meschado no HTML

            return(View());
        }
示例#22
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente = "Impactro Informática (teste)";
        Cedente.Banco   = "001-9";
        Cedente.Agencia = "294-1";
        Cedente.Conta   = "004570-6";
        // ATENÇÃO: Geralmente o banco informa a Carteira da seguinte forma: 16/019
        // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 dígitos
        // E estes devem ser configurados separadamente como indicado abaixo neste exemplo
        Cedente.Carteira   = "18";
        Cedente.Modalidade = "21";
        Cedente.Convenio   = "859120";

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco  = "Av. Paulista, 1234";
        Sacado.Cidade    = "São Paulo";
        Sacado.Bairro    = "Centro";
        Sacado.Cep       = "12345-123";
        Sacado.UF        = "SP";
        Sacado.Avalista  = "Banco / Empresa - CNPJ: 123.456.789/00001-23";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "131872";
        Boleto.NumeroDocumento = "131872";
        Boleto.ValorDocumento  = 0;
        Boleto.DataDocumento   = DateTime.Now;
        Boleto.DataVencimento  = DateTime.Parse("10/03/2014");
        Boleto.Instrucoes      = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // Desabilita a parte superior do boleto (Recibo do Sacado) que pode ter um layout livre
        // bltPag.ExibirReciboSacado = false;

        // Configura as imagens
        bltPag.ImagePath = "imagens/";
        bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif;
        bltPag.ImageLogo = "Impactro-Logo.gif"; //Define a imagem do logotipo da sua empresa
        bltPag.ExibeEnderecoReciboSacado = true;

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#23
0
        /// <summary>
        /// Configura o boleto e calcula o código de barras e linha digitavel com base nas informações passadas
        /// </summary>
        /// <param name="Cedente">São as dados de que Emite o Boleto (Quem irá receber)</param>
        /// <param name="Sacado">São os dados do pagador do Boleto (Quem irá pagar)</param>
        /// <param name="Boleto">São os dados da caobrança em si: Valores, Datas, Descrições e Informações</param>
        public void MakeBoleto(CedenteInfo Cedente, SacadoInfo Sacado, BoletoInfo Boleto)
        {
            if (MontaCampoLivre != null)
            {
                blt.onMontaCampoLivre += MontaCampoLivre;
            }

            if (blt != null)
            {
                blt.MakeBoleto(Cedente, Sacado, Boleto);
            }

            blt.CalculaBoleto();
        }
示例#24
0
        /// <summary>
        /// Processa o Retorno
        /// </summary>
        /// <param name="cData">TXT de entrada</param>
        public override Layout Retorno(string cData)
        {
            Layout retorno = new Layout(typeof(CNAB240SegmentoTSantander), typeof(CNAB240SegmentoUSantander));

            retorno.onInvalidLine += Retorno_onInvalidLine;
            retorno.Conteudo       = cData;
            BoletoInfo blt = null;

            retorno.ForEachIReg(ireg =>
            {
                if (ireg.NameType == typeof(CNAB240SegmentoTSantander))
                {
                    if (blt != null)
                    {
                        Boletos.Add(blt);
                    }

                    // Para registros Tipo T cria o boleto
                    var reg = ireg as Reg <CNAB240SegmentoTSantander>;
                    blt     = new BoletoInfo()
                    {
                        NossoNumero    = reg[CNAB240SegmentoTSantander.NossoNumero].ToString(),
                        ValorDocumento = (double)reg[CNAB240SegmentoTSantander.ValorDocumento],
                        DataVencimento = (DateTime)reg[CNAB240SegmentoTSantander.DataVencimento]
                                         //                        ValorPago = (double)reg[CNAB240SegmentoTSantander.ValorDocumento]
                    };
                    blt.LinhaOrigem = reg.OriginalLine;
                }
                else if (ireg.NameType == typeof(CNAB240SegmentoUSantander))
                {
                    // registros de outros tipos busca na lista de boletos existentes uma instancia válida para atualizar os dados complementares
                    var reg            = ireg as Reg <CNAB240SegmentoUSantander>;
                    blt.ValorAcrescimo = (double)reg[CNAB240SegmentoUSantander.ValorAcrescimos];
                    blt.ValorDesconto  = (double)reg[CNAB240SegmentoUSantander.ValorDesconto];
                    blt.ValorDesconto2 = (double)reg[CNAB240SegmentoUSantander.ValorAbatimento];
                    blt.ValorIOF       = (double)reg[CNAB240SegmentoUSantander.ValorIOF];
                    blt.ValorPago      = (double)reg[CNAB240SegmentoUSantander.ValorPago];
                    blt.ValorLiquido   = (double)reg[CNAB240SegmentoUSantander.ValorLiquido];
                    blt.DataPagamento  = blt.DataProcessamento = (DateTime)reg[CNAB240SegmentoUSantander.DataOcorrencia];
                    blt.DataCredito    = (DateTime)reg[CNAB240SegmentoUSantander.DataCredito];
                    blt.DataTarifa     = (DateTime)reg[CNAB240SegmentoUSantander.DataTarifa];
                }
            });
            if (blt != null)
            {
                Boletos.Add(blt);
            }
            return(retorno);
        }
示例#25
0
        public JsonResult GenerateBoleto(string boleto)
        {
            if (!String.IsNullOrEmpty(boleto))
            {
                BoletoInfo boletoJson = JsonConvert.DeserializeObject <BoletoInfo>(boleto);

                BoletoWorker bWorker = new BoletoWorker();

                if (boletoJson.autoGenerate)
                {
                    boletoJson.bankCode = bWorker.RandomBank().ToString();

                    if (boletoJson.valueCheck)
                    {
                        boletoJson.value = bWorker.RandomValue(boletoJson.valueStart, boletoJson.valueEnd);
                    }

                    if (boletoJson.expirateCheck)
                    {
                        boletoJson.expirate = bWorker.RandomDate(boletoJson.expirateStart, boletoJson.expirateEnd).ToString("dd/MM/yyyy");
                    }

                    CodebarResult boletoResult = bWorker.GenerateBoleto(boletoJson.bankCode, boletoJson.expirate, boletoJson.value.ToString());

                    boletoJson.line          = boletoResult.Line;
                    boletoJson.lineFormatted = boletoResult.LineFormatted;
                    boletoJson.barcodeBase64 = boletoResult.BarcodeBase64;

                    return(Json(JsonConvert.SerializeObject(boletoJson)));
                }
                else
                {
                    boletoJson.value = boletoJson.value.Replace(".", ",");
                    Double v;
                    Double.TryParse(boletoJson.value, out v);
                    boletoJson.value = v.ToString("N");

                    CodebarResult boletoResult = bWorker.GenerateBoleto(boletoJson.bankCode, boletoJson.expirate, boletoJson.value.ToString());

                    boletoJson.line          = boletoResult.Line;
                    boletoJson.lineFormatted = boletoResult.LineFormatted;
                    boletoJson.barcodeBase64 = boletoResult.BarcodeBase64;

                    return(Json(JsonConvert.SerializeObject(boletoJson)));
                }
            }

            return(Json(new { boleto = boleto }));
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente - QUEM RECEBE / EMITE
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = "237-";
        Cedente.Agencia = "1234";       // use somente "-" para separa o código da agencia e digito
        Cedente.Conta = "56789-1";      // use somente "-" para separa o código da conta e digito
        Cedente.Carteira = "6";
        Cedente.CNPJ = "12.345.678/0001-12";
        Cedente.Endereco = "Rua Sei lá aonde, 123 - Centro, São Paulo/SP";

        // Definição dos dados do sacado -  QUEM PAGA
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.SacadoCodigo = "123"; // Código interno de controle
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento = 423.45;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2006, 5, 31);
        Boleto.ParcelaNumero = 2;
        Boleto.ParcelaTotal = 10;
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // Monta as informações do boleto
        bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif;
        // O Conversor padrão só lê imagens absolutas, então as imagens devem ser geradas co o nome do host
        // veja mais em: http://stackoverflow.com/questions/924996/itextsharp-htmlworker-img-not-found-404
        bltPag.ImagePath = "http://" + Request.Url.Host + ":" + Request.Url.Port + "/BoletoNet/imagens/";
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // O Calculo acontece no RENDER, que neste caso é chamado internamente ao converter para PDF
        // Comente/descomente a linha abaixo para ver em HTML ou em PDF!
        ConverteAspx2Pdf();

        // O problema desta solução é que o boleto sai muito grande, na página toda, ou seja fora da escala padrão
        // Mas tudo é valido, inclusive o código de barras, só não serve para homologação
        // O problema desta solução é que ela não é otimizada, e apenas uma conversão de HTML/CSS para um PDF dentro das possibilidades do proprio componente 'HTMLWorker' que já é obsoleto!
    }
示例#27
0
 void CustomRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto)
 {
     // é possivel definir campos adicionais como descontos, jurus, protesto e quaisquer outros via evento
     // estes campos adicionais não estão na classe basica de emissão sem registro: BoletoInfo, e devem ser definidos via evento
     // veja a documentação de cada banco e atribua os campos necessários
     // o arqumento "reg" é um tipo de Registro baseado no enumerador do banco registro: Reg<T> (é um template cuidado)
     if (reg.GetType() == typeof(Reg <CNAB400Remessa1Bradesco>)) // Já como esse é um exemplo generico apenas valido o tipo
     {
         var regBoleto = reg as Reg <CNAB400Remessa1Bradesco>;
         regBoleto[CNAB400Remessa1Bradesco.Condicao]   = 1;  // Para bo banco imprimir e enviar o boleto
         regBoleto[CNAB400Remessa1Bradesco.Instrucao1] = 6;  // Indica para Protestar
         regBoleto[CNAB400Remessa1Bradesco.Instrucao2] = 15; // Numero de dias apos o vencimento para o protesto
         regBoleto[CNAB400Remessa1Bradesco.Avalista]   = "!Alterado!";
     }
 }
示例#28
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente  = "Teste de Cedente";
        Cedente.Banco    = "341";
        Cedente.Agencia  = "0646";
        Cedente.Conta    = "9105-8";
        Cedente.Carteira = "167";
        Cedente.Endereco = "endereço do recebedor";
        Cedente.CNPJ     = "12.345.678/0000-12";

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco  = "Av. Paulista, 1234";
        Sacado.Cidade    = "São Paulo";
        Sacado.Bairro    = "Centro";
        Sacado.Cep       = "12345-123";
        Sacado.UF        = "SP";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero    = Boleto.NumeroDocumento = "00046356";
        Boleto.ValorDocumento = 3070.14;
        Boleto.DataDocumento  = DateTime.Now;
        Boleto.DataVencimento = DateTime.Parse("10/07/2008");
        Boleto.Instrucoes     = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        String cDados = bltPag.Boleto.CodigoBarras;

        // Exibe o campo livre decodificado
        lblCodBar.Text = cDados + "<br/>" +
                         cDados.Substring(0, 19) + "-" +
                         cDados.Substring(19, 3) + "." +
                         cDados.Substring(22, 8) + "." +
                         cDados.Substring(30, 1) + "." +
                         cDados.Substring(31, 4) + "." +
                         cDados.Substring(35, 5) + "." +
                         cDados.Substring(40);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente =new CedenteInfo();
        Cedente.Cedente = "Impactro Informática (teste)";
        Cedente.Banco = "001-9";
        Cedente.Agencia = "294-1";
        Cedente.Conta = "004570-6";
        // ATENÇÃO: Geralmente o banco informa a Carteira da seguinte forma: 16/019
        // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 dígitos
        // E estes devem ser configurados separadamente como indicado abaixo neste exemplo
        Cedente.Carteira = "18";
        Cedente.Modalidade = "21";
        Cedente.Convenio = "859120";
        
        // Definição dos dados do sacado
        SacadoInfo Sacado =new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";
        Sacado.Avalista = "Banco / Empresa - CNPJ: 123.456.789/00001-23";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto=new BoletoInfo ();
        Boleto.NossoNumero = "131872";
        Boleto.NumeroDocumento = "131872";
        Boleto.ValorDocumento = 0;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = DateTime.Parse("10/03/2014");
        Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // Desabilita a parte superior do boleto (Recibo do Sacado) que pode ter um layout livre
        // bltPag.ExibirReciboSacado = false;

        // Configura as imagens
        bltPag.ImagePath = "imagens/";
        bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif;
        bltPag.ImageLogo = "Impactro-Logo.gif"; //Define a imagem do logotipo da sua empresa
        bltPag.ExibeEnderecoReciboSacado = true;

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#30
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente = "Impactro Informática (teste)";
        Cedente.Banco   = "756-0";
        // A "agência" e "conta" não são usado para nada no boleto, o que vale é o "Convenio", "Modalidade", e "Carteira"
        // Cedente.Agencia = "1234";
        // Cedente.Conta = "56789";
        // ATENÇÃO: Geralmebte o banco informa a Carteira da segunte forma: 16/019
        // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 digitos
        // E estes devem ser configurados separadamente como indicado abaixo neste exemplo
        Cedente.Carteira   = "1";
        Cedente.Modalidade = "01";          // ATENÇÃO a especificação: Carteira/Modalidade: 1/01-Simples Com Registro
        Cedente.Convenio   = "3010";        // Código da Cooperativa (será exibido como valor para a "agência")
        Cedente.CodCedente = "982296";      // Código do Cliente

        // Para saber quais são os campos fundamentais para a geração do boleto,
        // veja a assinatura da função estatica que calcula o campo livre do banco em questão
        // Neste caso: Banco_SICOOB.CampoLivre(...);

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco  = "Av. Paulista, 1234";
        Sacado.Cidade    = "São Paulo";
        Sacado.Bairro    = "Centro";
        Sacado.Cep       = "12345-123";
        Sacado.UF        = "SP";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "9367231";
        Boleto.NumeroDocumento = "9367231";
        Boleto.ParcelaNumero   = 1;
        Boleto.ValorDocumento  = 25;
        Boleto.DataDocumento   = DateTime.Now;
        Boleto.DataVencimento  = DateTime.Parse("10/06/2011");

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#31
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Teste de Cedente";
        Cedente.Banco = "341";
        Cedente.Agencia = "0646";
        Cedente.Conta = "9105-8";
        Cedente.Carteira = "167";
        Cedente.Endereco = "endereço do recebedor";
        Cedente.CNPJ = "12.345.678/0000-12";

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto =new BoletoInfo();
        Boleto.NossoNumero = Boleto.NumeroDocumento = "00046356";
        Boleto.ValorDocumento = 3070.14;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = DateTime.Parse("10/07/2008");
        Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        String cDados = bltPag.Boleto.CodigoBarras;

        // Exibe o campo livre decodificado
        lblCodBar.Text = cDados + "<br/>" + 
            cDados.Substring(0, 19) + "-" + 
            cDados.Substring(19, 3) + "." + 
            cDados.Substring(22, 8) + "." + 
            cDados.Substring(30, 1) + "." + 
            cDados.Substring(31, 4) + "." + 
            cDados.Substring(35, 5) + "." + 
            cDados.Substring(40);
    }
    // Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum
    void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto)
    {
        // É sempre bom validar o nome do registro, principalmente em CNAB240 que tem 2 tipos de registros para cada boleto, e cada registro deve ser tratado individualmente
        if (reg.NameType == typeof(CNAB400Remessa1Sicredi))
        {
            Reg <CNAB400Remessa1Sicredi> regBoleto = (Reg <CNAB400Remessa1Sicredi>)reg;
            // A rotina padrão define estas variáveis abaixo:

            /*
             * regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros;
             * regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero;
             * regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento;
             * regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento;
             * regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento;
             * regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.EspecieSicred(boleto.Especie);
             * regBoleto[CNAB400Remessa1Sicredi.Aceite] = boleto.Aceite == "A" ? "S" : "N";
             * regBoleto[CNAB400Remessa1Sicredi.Data] = boleto.DataDocumento;
             * regBoleto[CNAB400Remessa1Sicredi.DataEmissao] = boleto.DataDocumento;
             * if (boleto.ParcelaTotal > 0)
             * {
             *  regBoleto[CNAB400Remessa1Sicredi.TipoImpressao] = "B";
             *  regBoleto[CNAB400Remessa1Sicredi.ParcelaNumero] = boleto.ParcelaNumero;
             *  regBoleto[CNAB400Remessa1Sicredi.ParcelaTotal] = boleto.ParcelaTotal;
             * }
             * regBoleto[CNAB400Remessa1Sicredi.Instrucao] = boleto.Instrucao1;
             * regBoleto[CNAB400Remessa1Sicredi.Protesto] = boleto.DiasProtesto > 6 ? "06" : "00";
             * regBoleto[CNAB400Remessa1Sicredi.DiasProtesto] = boleto.DiasProtesto;
             * regBoleto[CNAB400Remessa1Sicredi.PercentualMora] = boleto.PercentualMora;
             * regBoleto[CNAB400Remessa1Sicredi.DataDesconto] = boleto.DataDesconto;
             * regBoleto[CNAB400Remessa1Sicredi.ValorDesconto] = boleto.ValorDesconto;
             * regBoleto[CNAB400Remessa1Sicredi.SacadoTipo] = boleto.Sacado.Tipo;
             * regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros;
             * regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco;
             * regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros;
             */

            // Campos com certa particulariade no sicred
            regBoleto[CNAB400Remessa1Sicredi.TipoCarteira] = "X"; // posição 3
            regBoleto[CNAB400Remessa1Sicredi.TipoJuros]    = "Y"; // posição 19
            regBoleto[CNAB400Remessa1Sicredi.Alteracao]    = "C"; // posição 71 // Desconto por dia de antecipação;
            regBoleto[CNAB400Remessa1Sicredi.Emissao]      = "A"; // posição 74 // O padrão é que a emissão seja feito no cliente ("B")

            // Os valores definidos em 'SetRegEnumValue' ou 'SetRegKeyValue' são obtidos apos este evento, portanto tem sempre prioridade
        }
    }
示例#33
0
        public void Retorno_Caixa()
        {
            LayoutBancos r = new LayoutBancos();

            r.Init(Cedente);

            string cFileRET = File.ReadAllText(@"..\..\TXT\Retorno_Caixa.txt");

            r.ErroType = BoletoDuplicado.Lista;
            Layout ret = r.Retorno(cFileRET);

            // O resultado pode vir completo em uma tabela
            // var tb = ret.Table(typeof(CNAB400Retorno1Bradesco));
            //string cErros = r.ErroLinhas;
            //Assert.IsTrue(string.IsNullOrEmpty(cErros), cErros);

            // Ou usa-se o array de boletos
            foreach (string nn in r.Boletos.NossoNumeros)
            {
                BoletoInfo Boleto = r.Boletos[nn];
                Console.Write("{0} {1:dd/MM/yyyy} {2:C} {3:C} {4:C} {5:C} {6:C} {7:C} {8:C} {9:dd/MM/yyyy} {10:dd/MM/yyyy} {11:dd/MM/yyyy}\r\n",
                              Boleto.NossoNumero,       // 0 reg[CNAB240SegmentoTCaixa.NossoNumero]
                              Boleto.DataPagamento,     // 1 reg[CNAB240SegmentoUCaixa.DataOcorrencia];
                              Boleto.ValorDocumento,    // 2 reg[CNAB240SegmentoTCaixa.ValorDocumento],
                              Boleto.ValorAcrescimo,    // 3 reg[CNAB240SegmentoUCaixa.ValorAcrescimos];
                              Boleto.ValorDesconto,     // 4 reg[CNAB240SegmentoUCaixa.ValorDesconto];
                              Boleto.ValorDesconto2,    // 5 reg[CNAB240SegmentoUCaixa.ValorAbatimento];
                              Boleto.ValorIOF,          // 6 reg[CNAB240SegmentoUCaixa.ValorIOF];
                              Boleto.ValorPago,         // 7 reg[CNAB240SegmentoUCaixa.ValorPago];
                              Boleto.ValorLiquido,      // 8 reg[CNAB240SegmentoUCaixa.ValorLiquido];
                              Boleto.DataProcessamento, // 9 reg[CNAB240SegmentoUCaixa.DataOcorrencia];
                              Boleto.DataCredito,       //10 reg[CNAB240SegmentoUCaixa.DataCredito];
                              Boleto.DataTarifa);       //11 reg[CNAB240SegmentoUCaixa.DataTarifa];
            }

            // por causa do tipo (r.ErroType) pode haver duplicidade de dados
            // pois um boleto pode ter sido baixado e protestado ou pago,
            // e com alguma ocorrencia e assim cada registro informa algo
            Console.WriteLine("Duplicados:");
            foreach (var Boleto in r.Boletos.Duplicados)
            {
                Console.Write("{0} {1:dd/MM/yyyy} {2:C}\r\n", Boleto.NossoNumero, Boleto.DataPagamento, Boleto.ValorDocumento);
            }
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Impactro Informática (teste)";
        Cedente.Banco = "756-0";
        // A "agência" e "conta" não são usado para nada no boleto, o que vale é o "Convenio", "Modalidade", e "Carteira"
        // Cedente.Agencia = "1234";           
        // Cedente.Conta = "56789";
        // ATENÇÃO: Geralmebte o banco informa a Carteira da segunte forma: 16/019
        // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 digitos
        // E estes devem ser configurados separadamente como indicado abaixo neste exemplo
        Cedente.Carteira = "1";
        Cedente.Modalidade = "01";          // ATENÇÃO a especificação: Carteira/Modalidade: 1/01-Simples Com Registro
        Cedente.Convenio = "3010";          // Código da Cooperativa (será exibido como valor para a "agência")
        Cedente.CodCedente = "982296";      // Código do Cliente

        // Para saber quais são os campos fundamentais para a geração do boleto, 
        // veja a assinatura da função estatica que calcula o campo livre do banco em questão
        // Neste caso: Banco_SICOOB.CampoLivre(...);

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        // Definição das Variáveis do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "9367231";
        Boleto.NumeroDocumento = "9367231";
        Boleto.ParcelaNumero = 1;
        Boleto.ValorDocumento = 25;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = DateTime.Parse("10/06/2011");

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#35
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente (do exemplo página 36 sem registro)
        // Linha digitável: 74891.11422 00001.039544 02000.921078 9 61870000010000
        // Código de Barras: 748.9.9.6187.0000010000-1.1.142000010.3954.02.00092.1.0.7
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Cedente    = "FRANCISCO ERDOS";
        Cedente.CNPJ       = "72.106.461/0001-54";
        Cedente.Banco      = "748-X";
        Cedente.Agencia    = "0723";
        Cedente.Conta      = Cedente.CodCedente = "89159-2";
        Cedente.Modalidade = "23"; // UA/POSTO:
        Cedente.Carteira   = "3";  // 1-Com Registro, 3-Sem registro

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "(Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco  = "Av. Paulista, 1234";
        Sacado.Cidade    = "São Paulo";
        Sacado.Bairro    = "Centro";
        Sacado.Cep       = "12345-123";
        Sacado.UF        = "SP";

        // Definição dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.DataDocumento = DateTime.Now;
        Boleto.Instrucoes    = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        Boleto.NossoNumero    = Boleto.NumeroDocumento = "­16204962";
        Boleto.ValorDocumento = 46.85;
        Boleto.DataVencimento = new DateTime(2016, 6, 1);


        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // Exibe o codigo de barras devidamente formatado e separado
        lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 1, 9, 4, 2, 5, 1, 1, 1 });
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        

        // Definição dos dados do cedente (do exemplo página 36 sem registro)
        // Linha digitável: 74891.11422 00001.039544 02000.921078 9 61870000010000
        // Código de Barras: 748.9.9.6187.0000010000-1.1.142000010.3954.02.00092.1.0.7
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "FRANCISCO ERDOS";
        Cedente.CNPJ = "72.106.461/0001-54";
        Cedente.Banco = "748-X";
        Cedente.Agencia = "0723";
        Cedente.Conta = Cedente.CodCedente = "89159-2";
        Cedente.Modalidade = "23"; // UA/POSTO:
        Cedente.Carteira = "3"; // 1-Com Registro, 3-Sem registro

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "(Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        // Definição dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.DataDocumento = DateTime.Now;
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        Boleto.NossoNumero = Boleto.NumeroDocumento = "­16204962";
        Boleto.ValorDocumento = 46.85;
        Boleto.DataVencimento = new DateTime(2016, 6, 1);
        

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
        
        // Exibe o codigo de barras devidamente formatado e separado
        lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 1, 9, 4, 2, 5, 1, 1, 1 });
        
    }
示例#37
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();

        Sacado.Sacado    = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco  = "Av. Paulista, 1234";
        Sacado.Cidade    = "São Paulo";
        Sacado.Bairro    = "Centro";
        Sacado.Cep       = "12345-123";
        Sacado.UF        = "SP";
        Sacado.Avalista  = "Banco XPTO - CNPJ: 123.456.789/00001-23";

        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();

        Cedente.Banco   = "356";
        Cedente.Agencia = "1234";
        Cedente.Conta   = "1234567-8";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();

        Boleto.NossoNumero     = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento  = 423.45;
        Boleto.DataDocumento   = DateTime.Now;
        Boleto.DataVencimento  = new DateTime(2006, 5, 31);

        // Obrigatório para o UNIBANCO
        Boleto.LocalPagamento = "Pagável em qualquer agência bancária";
        Boleto.Especie        = Especies.RC;
        Cedente.UsoBanco      = "CVT 7744-5";

        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // veja o exemplo: BoletoCustomizado.aspx
        bltPag.MontaCampoLivre += new BoletoMontaCampoLivre(bltPag_MontaCampoLivre);
        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#38
0
        private int BB_Registro5_Opcional(CNAB cnab, BoletoInfo boleto)
        {
            // Apenas mostrando de forma simples, que nem todos os boletos precisariam ter o registro opcional
            if (boleto.BoletoID % 2 == 0) // no caso somente os boletos de numero impar teriam o registro
            {
                return(0);                // informa que não foi inserido nenhum registro opcional, assim a numero de sequencia do registro permanece o mesmo
            }
            // Define as informações do registro opcional 5 para registro de valores de multa
            var regR = new Reg <CNAB400Remessa5BB>();

            // Os valores default nem precisa definir
            regR[CNAB400Remessa5BB.CodigoMulta] = 1;                                 // Coloque o que quiser(logico de acordo com a documentação)
            regR[CNAB400Remessa5BB.DataMulta]   = boleto.DataVencimento.AddDays(15); // 15 dias após o vencimento
            regR[CNAB400Remessa5BB.ValorMulta]  = boleto.ValorDocumento * 0.02;      // 2% do valor do documento
            regR[CNAB400Remessa5BB.Sequencial]  = cnab.SequencialRegistro;           // Já como esse evento é chamado por ultimo, ele está no valor correto, mas se precisar adicionar mais que 1 registro ai tem que adicionar +N, e retornar sempre o numero de registros incluidos

            cnab.Add(regR);

            return(1); // Nomero de registro opcionais incluidos
        }
示例#39
0
        /// <summary>
        /// Adiciona um item completo já predefinido
        /// </summary>
        /// <param name="boleto">Boleto</param>
        /// <param name="linha">linha que deu origem ao boleto</param>
        public void Add(BoletoInfo boleto, string linha = null)
        {
            if (!string.IsNullOrEmpty(linha))
            {
                if (boleto.LinhaOrigem != "")
                {
                    boleto.LinhaOrigem += "\r\n";
                }

                boleto.LinhaOrigem += linha;
            }

            if (_boletos.ContainsKey(boleto.NossoNumero))
            {
                if (sbLinhasErro == null)
                {
                    sbLinhasErro = new StringBuilder();
                }

                sbLinhasErro.AppendLine(linha);

                if (AddErroType == BoletoDuplicado.Erro)
                {
                    throw new Exception("Já existe um BoletoID com este numero: " + boleto.NossoNumero);
                }
                else if (AddErroType == BoletoDuplicado.Ultimo)
                {
                    _boletos[boleto.NossoNumero] = boleto;
                }
                else if (AddErroType == BoletoDuplicado.Lista)
                {
                    Duplicados.Add(boleto);
                }

                // else ignore!
            }
            else
            {
                _boletos.Add(boleto.NossoNumero, boleto);
            }
        }
示例#40
0
        private int Caixa_SegmentoR_Opcional(CNAB cnab, BoletoInfo boleto)
        {
            // Apenas mostrando de forma simples, que nem todos os boletos precisariam ter o registro opcional
            if (boleto.BoletoID % 2 == 0) // no caso somente os boletos de numero impar teriam o registro
            {
                return(0);                // informa que não foi inserido nenhum registro opcional, assim a numero de sequencia do registro permanece o mesmo
            }
            // Define as informações do segmento opcional R (da mesma forma pode ser criado qualquer tipo de registro opcional)
            var regR = new Reg <CNAB240SegmentoRCaixa>();

            regR[CNAB240SegmentoRCaixa.Lote]       = cnab.SequencialLote; // o número da sequencia só é alterado quando sair deste evento
            regR[CNAB240SegmentoRCaixa.Nregistro]  = cnab.SequencialRegistro;
            regR[CNAB240SegmentoRCaixa.email]      = "*****@*****.**";
            regR[CNAB240SegmentoRCaixa.Informacao] = "info...";
            cnab.Add(regR);

            // regX[CNAB240SegmentoXCaixa.Lote] = cnab.SequencialLote + 1; // Se houver mais registros o numero sequencial deve ser incrementadp
            // cnab.Add(regX); // E neste caso o retorno teria que ser 2 (numero de itens adicionados)

            return(1); // Nomero de registro opcionais incluidos
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";
        Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23";

        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Banco = "356";
        Cedente.Agencia = "1234";
        Cedente.Conta = "1234567-8";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento = 423.45;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2006, 5, 31); 

        // Obrigatório para o UNIBANCO
        Boleto.LocalPagamento = "Pagável em qualquer agência bancária";
        Boleto.Especie = Especies.RC;
        Cedente.UsoBanco = "CVT 7744-5";

        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // veja o exemplo: BoletoCustomizado.aspx
        bltPag.MontaCampoLivre += new BoletoMontaCampoLivre(bltPag_MontaCampoLivre);
        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
示例#42
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do sacado
        SacadoInfo Sacado=new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";
        Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23";

        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = "104";
        Cedente.Agencia = "0183";
        Cedente.Conta = "003.00000622-0";
        Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro
        Cedente.CodCedente = "035187000000055";

        // Definição dos dados do boleto
        BoletoInfo Boleto=new BoletoInfo();
        Boleto.NossoNumero = "8210000030";
        Boleto.NumeroDocumento = Boleto.NossoNumero;
        Boleto.ValorDocumento = 18;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2015,11,30);

        // monta o boleto com os dados específicos nas classes
        bltPag.ExibeEnderecoReciboSacado = true;
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // Exibe o código de barras
        CodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 10, 4, 11 });
    }
示例#43
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // baseado no exemplo basico: BoletoCS
        // Definição dos dados do cedente - QUEM RECEBE / EMITE
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente<br/>Endereço yyy";
        Cedente.Banco = "237";
        Cedente.Agencia = "1234";
        Cedente.Conta = "45678-9";
        Cedente.Carteira = "6";

        // Definição dos dados do sacado -  QUEM PAGA
        SacadoInfo Sacado = new SacadoInfo();
        //Sacado.SacadoCOD = "123"; // Código interno de controle
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento = 423.45;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2006, 5, 31); 

        // Obrigatório para o UNIBANCO
        Boleto.LocalPagamento = "Pagável em qualquer agência bancária";
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
        //bltPag.RenderImage = true; // isso está no aspx (html)
    }
示例#44
0
        private void frmBasico_Load(object sender, EventArgs e)
        {
            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "Impactro Informática (teste)";
            Cedente.Endereco = "Endereço xxx";
            Cedente.CNPJ = "05.343.346/0001-12";
            Cedente.Banco = "001";
            Cedente.Agencia = "999-7";
            Cedente.Conta = "999999-7";
            Cedente.Carteira = "18";
            Cedente.Modalidade = "19";
            Cedente.Convenio = "123456";    // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes
            Cedente.CodCedente = "123456";  // outros bancos chama isto de Codigo do Cedente ou Código do Cliente
            // outros usam os 2 campos para controles distintos!
            // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas!
            // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco
            Cedente.UsoBanco = "123";
            // Cedente.CIP = "456"; // se for informado esse campo o layout muda um pouco

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = "Fabio Ferreira (Teste)";
            Sacado.Documento = "123.456.789-99";
            Sacado.Endereco = "Av. Paulista, 1234";
            Sacado.Cidade = "São Paulo";
            Sacado.Bairro = "Centro";
            Sacado.Cep = "12345-123";
            Sacado.UF = "SP";
            Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23";

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.NossoNumero = "12345";
            Boleto.NumeroDocumento = "12345";
            Boleto.ParcelaNumero = 2;
            Boleto.ParcelaTotal = 6;
            Boleto.Quantidade = 5;
            Boleto.ValorUnitario = 20;
            Boleto.ValorDocumento = Boleto.Quantidade * Boleto.ValorUnitario;
            Boleto.DataDocumento = DateTime.Now;
            Boleto.DataVencimento = DateTime.Now.AddDays(-30);
            Boleto.Especie = Especies.RC;
            Boleto.DataDocumento = DateTime.Now.AddDays(-2);     // Por padrão é  a data atual, geralmente é a data em que foi feita a compra/pedido, antes de ser gerado o boleto para pagamento
            Boleto.DataProcessamento = DateTime.Now.AddDays(-1); // Por padrão é a data atual, pode ser usado como a data em que foi impresso o boleto

            // http://calculoexato.com.br/parprima.aspx?codMenu=DividBoletoVencido
            // Se for especificado o valor da mora, este será usado da forma mais simples
            //Boleto.ValorMora = 0.03;
            Boleto.PercentualMulta = 0.02; // 2.0% no mês
            Boleto.PercentualMora = 0.001; // 0.1% valor percentual ao dia...
            // Valor original: R$100,00
            // Valor da multa de 2%: R$2,00
            // Valor com multa: R$102,00
            // Valor da 0.1% ao dia por 60 dias (6,00%): R$6,12
            // Valor com mora: R$108,12
            // Valor a ser pago: R$108,12
            // veja também a mesma conta em: http://exame.abril.com.br/seu-dinheiro/ferramentas/boleto-vencido.shtml
            // No valor do percentual Mora pode ser usado um valor mensal do tipo:
            // Boleto.PercentualMora = 0.03 / 30d; // 3% ao mês

            // Se for especificado a data de pagamento esta será usada como base para o calculo do numero de dias em que será pago
            Boleto.DataPagamento = Boleto.DataVencimento.AddDays(60);

            // Ativa o calculo de Juros+Mora
            Boleto.CalculaMultaMora = true;

            // Outros valores opcionais
            //Boleto.ValorDesconto = 10;
            //Boleto.DataDesconto = DateTime.Now.AddDays(-10);
            //Boleto.ValorAcrescimo = 3;
            //Boleto.ValorOutras = 12.34;
            Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

            //BoletoInfo Boleto = new BoletoInfo();
            // O tipo de documento pode ser selecionado para cada boleto, o padrão é DM
            Boleto.Especie = Especies.DS;

            // Personaliza o boleto com seu logo
            bltFrm.Boleto.CedenteLogo = BoletoForm2.Properties.Resources.SeuLogo;

            // monta o boleto com os dados específicos nas classes
            bltFrm.MakeBoleto(Cedente, Sacado, Boleto);

            // É possivel também customizar a linha referente o local de pagamento:
            bltFrm.Boleto.LocalPagamento = "Pague Preferencialmente no BANCO NOSSA CAIXA S.A. ou na rede bancária até o vencimento";

            // Configura campos especiais extras no boleto
            PrintRecibo(bltFrm);
        }
        private void frmCustromizado_Load(object sender, EventArgs e)
        {
            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "Impactro Informática (teste)";
            Cedente.Banco = "001";
            Cedente.Agencia = "999-7";
            Cedente.Conta = "999999-7";
            Cedente.Carteira = "18";
            Cedente.Modalidade = "19";
            Cedente.Convenio = "123456";    // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes
            Cedente.CodCedente = "123456";  // outros bancos chama isto de Codigo do Cedente ou Código do Cliente
                                            // outros usam os 2 campos para controles distintos!
                                            // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas!
                                            // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco
                                            // Definição dos dados do sacado

            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = "Fabio Ferreira (Teste)";
            Sacado.Documento = "123.456.789-99";
            Sacado.Endereco = "Av. Paulista, 1234";
            Sacado.Cidade = "São Paulo";
            Sacado.Bairro = "Centro";
            Sacado.Cep = "12345-123";
            Sacado.UF = "SP";
            Sacado.Avalista = "Nome Avalista / Documento";

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.NossoNumero = "12345";
            Boleto.NumeroDocumento = "12345";
            Boleto.ValorDocumento = 160.0;
            Boleto.DataDocumento = DateTime.Now;
            Boleto.DataVencimento = DateTime.Now;
            Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

            // Cria um objeto que calcula as informações do boleto
            Boleto blt = new Boleto();
            blt.MakeBoleto(Cedente, Sacado, Boleto);

            // antes de começar a pedir as informações para o objeto,
            // é nescessário pedir que sejam calculado os dados (como se fosse um DataBind)
            blt.CalculaBoleto();

            // Coloca no TextBox o valor da linha digitável
            lblIPTE.Text = blt.LinhaDigitavel;

            // O nosso numero exibição é o numero EFETIVAMENTE que deve ser exibido
            // em vários casos os bancos exeigem formatação especial para a exibição
            // deste campo e também o calculo de digitos verificadores, assim nesta
            // variável já existe todas estas exigencias prontas
            lblNossoNumero.Text = blt.NossoNumeroExibicao;

            // Não é nescessário formatar com {0:C} pois a 'Especie' (moeda) geralmente
            // é indicada em um campo a parte
            lblValor.Text = string.Format("{0:#,###,##0.00}", blt.ValorDocumento);

            // Formata a data sempre exibindo 2 digitos para dia e mes, e 4 para ano
            lblVencimento.Text = string.Format("{0:dd/MM/yyyy}", blt.DataVencimento);

            // Obtem a imagem do código de barras
            picCodBaras.Image = CobUtil.BarCodeImage(blt.CodigoBarras);
            // A classe UTIL, contem as rotinas de geração de codigo de barras,
            // pois o codigo de barras, não é usado somente em boletos, mas em diversas aplicações
            // desta forma é possivel gerar etiquetas de produtos, identificações de usuário, etc...

            // apenas coloca o nome do avalista na tela - opcional
            lblAvalista.Text = "Avalista: " + Sacado.Avalista;
        }
示例#46
0
        // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
        void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
        {
            try
            {
                // Definição dos dados do cedente
                CedenteInfo Cedente = new CedenteInfo();
                Cedente.Cedente = "outro cedente de outro banco!";
                Cedente.Banco = "237";
                Cedente.Agencia = "1234-5";
                Cedente.Conta = "123456-7";
                Cedente.Carteira = "06";
                Cedente.Modalidade = "11";

                // Definição dos dados do sacado
                SacadoInfo Sacado = new SacadoInfo();
                Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

                // Definição das Variáveis do boleto
                BoletoInfo Boleto = new BoletoInfo();
                Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"];
                Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"];
                Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString();
                Boleto.NumeroDocumento = Boleto.NossoNumero;

                // Cria uma nova instancia totalmente idependente
                BoletoForm bol = new BoletoForm();
                // monta o boleto com os dados específicos nas classes
                bol.MakeBoleto(Cedente, Sacado, Boleto);
                bol.PrintType = PrintTypes.Documet;
                // A definição do tipo carne ou normal já define o RenderBoleto
                bol.Boleto.Carne = chkCarne.Checked;
                // bol.Boleto.RenderBoleto=new BoletoCarne(); // Na pratica definir como carne é a mesma coisa que instanciar a classe de carne no RenderBoleto
                PrintRecibo(bol);
                bol.Print(e.Graphics);

                nReg++;
                e.HasMorePages = nReg < tbDados.Rows.Count;
                if (!e.HasMorePages)
                    nReg = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#47
0
        // Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum
        void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto)
        {
            // A verificação do tipo agora é obrigatporio poosi todos os registros, incluindo o header e footer podem ser personalizados
            // Logico que em certos registro o valor de BoletoInfo é null
            if (reg.NameType == typeof(CNAB400Remessa1Sicredi))
            {
                Reg<CNAB400Remessa1Sicredi> regBoleto = (Reg<CNAB400Remessa1Sicredi>)reg;

                // A rotina padrão define estas variáveis comentadas abaixo:

                regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros;
                regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero;
                regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento;
                regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento;
                regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento;
                regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.EspecieSicred(boleto.Especie);
                regBoleto[CNAB400Remessa1Sicredi.Aceite] = boleto.Aceite == "A" ? "S" : "N";
                regBoleto[CNAB400Remessa1Sicredi.Data] = boleto.DataDocumento;
                regBoleto[CNAB400Remessa1Sicredi.DataEmissao] = boleto.DataDocumento;
                if (boleto.ParcelaTotal > 0)
                {
                    regBoleto[CNAB400Remessa1Sicredi.TipoImpressao] = "B";
                    regBoleto[CNAB400Remessa1Sicredi.ParcelaNumero] = boleto.ParcelaNumero;
                    regBoleto[CNAB400Remessa1Sicredi.ParcelaTotal] = boleto.ParcelaTotal;
                }
                regBoleto[CNAB400Remessa1Sicredi.Instrucao] = boleto.Instrucao1;
                regBoleto[CNAB400Remessa1Sicredi.Protesto] = boleto.DiasProtesto > 6 ? "06" : "00";
                regBoleto[CNAB400Remessa1Sicredi.DiasProtesto] = boleto.DiasProtesto;
                regBoleto[CNAB400Remessa1Sicredi.PercentualMora] = boleto.PercentualMora;
                regBoleto[CNAB400Remessa1Sicredi.DataDesconto] = boleto.DataDesconto;
                regBoleto[CNAB400Remessa1Sicredi.ValorDesconto] = boleto.ValorDesconto;
                regBoleto[CNAB400Remessa1Sicredi.SacadoTipo] = boleto.Sacado.Tipo;
                regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros;
                regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco;
                regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros;

                // Campos com certa particulariade no sicred
                regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A"; // O padrão é que a emissão seja feito no cliente ("B")
                regBoleto[CNAB400Remessa1Sicredi.Alteracao] = "C"; // Desconto por dia de antecipação;

                // Para que o Sicred poste o boleto tem que mudar o padrão abaixo
                regBoleto[CNAB400Remessa1Sicredi.TipoPostagem] = "S";
                regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A";
            }
        }
示例#48
0
 void r_onRegItem(BoletoInfo boleto, object eRegT)
 {
     // é possivel definir campos adicionais como descontos, jurus, protesto e quaisquer outros via evento
     // estes campos adicionais não está na classe basica de emissão sem registro: BoletoInfo, e devem ser definidos via evento
     // veja a documentação de cada banco e atribua os campos necessários
     // o arqumento "eReg" é um tipo de Registro baseado no enumerador do banco registro: Reg<T> (é um template cuidado)
     Reg<CNAB400Remessa1Bradesco> regBoleto = (Reg<CNAB400Remessa1Bradesco>)eRegT;
     regBoleto[CNAB400Remessa1Bradesco.Condicao] = 1; // Para bo banco imprimir e enviar o boleto
     regBoleto[CNAB400Remessa1Bradesco.Instrucao1] = 6; // Indica para Protestar
     regBoleto[CNAB400Remessa1Bradesco.Instrucao2] = 15; // Numero de dias apos o vencimento para o protesto
 }
示例#49
0
        private void SetValores()
        {
            // Exemplo abaixo baseado no boleto customizado...

            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "Impactro Informática (teste)";
            Cedente.Banco = "001";
            Cedente.Agencia = "999-7";
            Cedente.Conta = "999999-7";
            Cedente.Carteira = "18";
            Cedente.Modalidade = "19";
            Cedente.Convenio = "123456";    // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes
            Cedente.CodCedente = "123456";  // outros bancos chama isto de Codigo do Cedente ou Código do Cliente
            // outros usam os 2 campos para controles distintos!
            // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas!
            // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = "Fabio Ferreira (Teste)";
            Sacado.Documento = "123.456.789-99";
            Sacado.Endereco = "Av. Paulista, 1234";
            Sacado.Cidade = "São Paulo";
            Sacado.Bairro = "Centro";
            Sacado.Cep = "12345-123";
            Sacado.UF = "SP";
            Sacado.Avalista = "Impactro Informática - CNPJ: 123.456.789/00001-23";

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.NossoNumero = NossoNumero.ToString();
            Boleto.NumeroDocumento = NossoNumero.ToString();
            Boleto.ValorDocumento = 160.0;
            Boleto.DataDocumento = DateTime.Now;
            Boleto.DataVencimento = DateTime.Now;
            Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

            // incrementa o nosso numero para outro boleto
            NossoNumero++;

            // Cria um objeto que calcula as informações do boleto
            Boleto blt = new Boleto();
            blt.MakeBoleto(Cedente, Sacado, Boleto);

            // antes de começar a pedir as informações para o objeto,
            // é nescessário pedir que sejam calculado os dados (como se fosse um DataBind)
            blt.CalculaBoleto();

            Valores = new SortedList<ValoresCampos, strTextos>();

            // parte 1,2,3
            Valores.Add(ValoresCampos.ParcelaPlano, new strTextos(10, 15, 0, 0, 243, 15, " ", false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Vencimento, new strTextos(45, 15, 223, 15, 275, 15, string.Format("{0:dd/MM/yyyy}", blt.DataVencimento), true, StringAlignment.Far));
            Valores.Add(ValoresCampos.AgenciaCedente, new strTextos(45, 21, 223, 21, 275, 21, blt.AgenciaConta, false, StringAlignment.Far));
            Valores.Add(ValoresCampos.Especie, new strTextos(5, 28, 108, 34, 238, 28, "R$", false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Quantidade, new strTextos(45, 28, 138, 34, 275, 28, (blt.Quantidade == 0) ? "" : blt.Quantidade.ToString(), false, StringAlignment.Far));
            Valores.Add(ValoresCampos.ValorDocumento, new strTextos(45, 34, 223, 34, 275, 34, string.Format("{0:#,###,##0.00}", blt.ValorDocumento), true, StringAlignment.Far));
            Valores.Add(ValoresCampos.DescontoAbatimento, new strTextos(45, 41, 223, 41, 275, 41, " ", false, StringAlignment.Far));
            Valores.Add(ValoresCampos.MoraMulta, new strTextos(45, 53, 223, 53, 275, 53, "  ", false, StringAlignment.Far));
            Valores.Add(ValoresCampos.ValorCobrado, new strTextos(45, 65, 223, 65, 275, 65, " ", false, StringAlignment.Far));
            Valores.Add(ValoresCampos.NossoNumero, new strTextos(45, 71, 223, 28, 275, 71, blt.NossoNumeroExibicao, false, StringAlignment.Far));
            Valores.Add(ValoresCampos.NumeroDocumento, new strTextos(20, 79, 100, 28, 255, 79, blt.NumeroDocumento, false, StringAlignment.Center));
            Valores.Add(ValoresCampos.SacadoResumido, new strTextos(2, 85, 0, 0, 235, 85, blt.Sacado + "\n" + blt.SacadoDocumento, false, StringAlignment.Near));
            Valores.Add(ValoresCampos.Sacado, new strTextos(0, 0, 70, 69, 0, 0, blt.Sacado + " - " + blt.SacadoDocumento + "\n" + blt.SacadoEndereco + "\n" + blt.Cidade + " - " + blt.Bairro + " " + blt.UF + " CEP: " + blt.Cep, false, StringAlignment.Near));
            Valores.Add(ValoresCampos.Avalista, new strTextos(0, 0, 70, 79, 0, 0, blt.Avalista, false, StringAlignment.Near));
            Valores.Add(ValoresCampos.LocalPagamento, new strTextos(0, 0, 59, 15, 0, 0, "ATÉ O VENCIMENTO PAGUAVEL EM QUALQUER BANCO", false, StringAlignment.Near));
            Valores.Add(ValoresCampos.Cedente, new strTextos(0, 0, 59, 21, 0, 0, blt.Cedente, false, StringAlignment.Near));
            Valores.Add(ValoresCampos.DataDocumento, new strTextos(0, 0, 72, 28, 0, 0, string.Format("{0:dd/MM/yyyy}", blt.DataDocumento), false, StringAlignment.Center));
            Valores.Add(ValoresCampos.EspecieDoc, new strTextos(0, 0, 126, 28, 0, 0, "RC", false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Aceite, new strTextos(0, 0, 146, 28, 0, 0, "N", false, StringAlignment.Center));
            Valores.Add(ValoresCampos.DataProcessamento, new strTextos(0, 0, 170, 28, 0, 0, string.Format("{0:dd/MM/yyyy}", blt.DataProcessamento), false, StringAlignment.Center));
            Valores.Add(ValoresCampos.UsodoBanco, new strTextos(0, 0, 70, 34, 0, 0, " ", false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Carteira, new strTextos(0, 0, 94, 34, 0, 0, blt.Carteira, false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Valor, new strTextos(0, 0, 168, 34, 0, 0, (blt.ValorDocumento == 0) ? "" : string.Format("{0:0.00}", blt.ValorDocumento), false, StringAlignment.Center));
            Valores.Add(ValoresCampos.Instrucoes, new strTextos(0, 0, 62, 45, 0, 0, blt.Instrucoes, false, StringAlignment.Near));

            // Campos Especiais (Banco e IPTE)
            Valores.Add(ValoresCampos.Banco, new strTextos(0, 0, 98, 7, 0, 0, blt.BancoCodigo, true, StringAlignment.Center));
            Valores.Add(ValoresCampos.IPTE, new strTextos(0, 0, 223, 6, 0, 0, blt.LinhaDigitavel, true, StringAlignment.Far));

            imgBanco = (Image)CobUtil.ResLoadImage(String.Format("{0:000}.gif", blt.BancoNumero));
            imgCodBar = CobUtil.BarCodeImage(blt.CodigoBarras);
        }
    // Neste primeiro exemplo o boleto será inserido como imagem embutida no HTML em base64
    protected void Page_Init(object sender, EventArgs e)
    {
        // Definição dos dados do cedente, que será comum para todos os boletos
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "outro cedente!";
        Cedente.Banco = "237";
        Cedente.Agencia = "1234-5";
        Cedente.Conta = "123456-7";
        Cedente.Carteira = "06";
        Cedente.Modalidade = "11";

        // Cria uma tabela em memoria
        DataTable tbDados = new DataTable(); 

        // Estrutura da tabela
        tbDados.Columns.Add("Nome", typeof(string));
        tbDados.Columns.Add("Vencimento", typeof(DateTime));
        tbDados.Columns.Add("Valor", typeof(double));
        tbDados.Columns.Add("NossoNumero", typeof(int));

        // Insere os dados
        tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678);
        tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332);
        tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234);
        tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445);
        tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319);
        tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445);
        tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445);
        tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756);
        tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656);
        tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672);

        int nBoleto = 0;
        foreach (DataRow row in tbDados.Rows)
        {
            // Instancia do 'Boleto', não o 'BoletoWeb', pois a ideia é renderizar imagem
            // O BoletoWeb usa a classe 'Boleto' para fazer todos os calculos, e depois desenha em html o boleto
            Boleto blt = new Boleto();
            blt.Carne = true; // Formato de Carne, neste exemplo será colocardo 3 boletos por página

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)row["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento = (DateTime)row["Vencimento"];
            Boleto.ValorDocumento = (double)row["Valor"];
            Boleto.NossoNumero = row["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            // Calcula os dados do boleto
            blt.MakeBoleto(Cedente, Sacado, Boleto);
            
            // Obtem a imagem do boleto
            Bitmap img = blt.ImageBoleto();
            
            // Adiciona a imagem do boleto em base64 no HTML
            form1.Controls.Add(new LiteralControl(CobUtil.ToBase64ImageTag(img, ImageFormat.Png)));

            // incrementa o contador de boletos
            nBoleto++;
            if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras
                // somente nos boletos pares a iniciar de 2 força uma quebra de linha
                form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>"));
            else //  if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura
                // nos boletos impares adiciona a imagem de recorte, ou um HR
                // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>"));
                form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>"));
        }
    }
    // Mesma logica do exemplo 'geravarios'
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Endereco = "rua Qualquer no Bairro da Cidade";
        Cedente.CNPJ = "12.345.678/00001-12";
        Cedente.Banco = "104";
        Cedente.Agencia = "4353";
        Cedente.Conta = "00000939-9";
        Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro
        Cedente.CodCedente = "658857";
        Cedente.Convenio = "1234"; // CNPJ do PV da conta do cliente = 00.360.305/4353-48 (usado em alguns casos)
        Cedente.Informacoes =
            "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" +
            "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" +
            "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" +
            "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>";

        BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE";

        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";
        Sacado.Avalista = "CNPJ: 123.456.789/00001-23";

        // Para aprovar a homologação junto a caixa é necessário apresentar 10 boletos com os 10 digitos de controle da linha digitável diferentes
        // E mais outros 10 com o digito de controle do código de barras
        // Assim a ideia é criar 2 listas para ir memorizando os boletos já validos e deixa-los entrar em tela

        List<int> DAC1 = new List<int>();
        List<int> DAC2 = new List<int>();

        for (int nBoleto = 1001; nBoleto < 1100; nBoleto++)
        {
            // Definição dos dados do boleto de forma sequencial
            BoletoInfo Boleto = new BoletoInfo()
            {
                NumeroDocumento = nBoleto.ToString(),
                NossoNumero = nBoleto.ToString(),
                ValorDocumento = 123.45,
                DataVencimento = DateTime.Now,
                DataDocumento = DateTime.Now,
            };

            // Componente HTML do boleto que poderá ser ou não colocado em tela
            BoletoWeb blt = new BoletoWeb();

            // Junta as informações para fazer o calculo
            blt.MakeBoleto(Cedente, Sacado, Boleto);

            // A instancia 'blt' é apenas un Webcontrol que renderiza o boleto HTML, tudo fica dentro da propriedade 'Boleto'
            blt.Boleto.CalculaBoleto();
            // 10491.23456 60000.200042 00000.000844 4 67410000012345
            // 012345678901234567890123456789012345678901234567890123
            // 000000000111111111122222222223333333333444444444455555
            int D1 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(38, 1));
            int D2 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(35, 1));
            // De acordo com o banco:
            // Todos os Dígitos Verificadores Geral do Código de Barras possíveis(de 1 a 9) ou seja, campo 4 da Representação Numérica
            // Todas os Dígitos Verificadores do Campo Livre possíveis(de 0 a 9), 10ª posição   do campo 3 da Representação Numérica

            bool lUsar = false;
            if (!DAC1.Contains(D1))
            {
                lUsar = true;
                DAC1.Add(D1);
            }
            if (!DAC2.Contains(D2))
            {
                lUsar = true;
                DAC2.Add(D2);
            }

            if (lUsar)
            {
                // Apenas configura o As classe CSS de layout
                blt.CssCell = "BolCell";
                blt.CssField = "BolField";
                // Adiciona a instancia na tela do boleto valido para uso
                form1.Controls.Add(blt);
            }

            // Quando todas as possibilidades concluidas em até 100 boletos, já pode terminar...
            if (DAC1.Count == 9 && DAC2.Count == 10)
                break; // o Modulo 11 padrão não tem o digito Zero, mas o especial para calculo do nosso numero tem

            // Se o boleto foi usado e não acabou, então gera uma quebra de linha
            if (lUsar)
                form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>"));
        }

        // Em geral esse teste gera 11 ou mais boletos contemplando todos os casos
        // Salve como PDF e envie para homologação
    }
示例#52
0
    // Este exemplo foi baseado no exemplo: DirectPrint.aspx
    // Para criação de controles, os objetos devem ser incluidos sempre no Page_Init para não corromper a viewstate
    protected void Page_Init(object sender, EventArgs e)
    {

        DataTable tbDados;
        BoletoWeb blt;
        tbDados = new DataTable(); // Cria  atabela em memoria

        // Cria as colunas nos respectivos tipos
        tbDados.Columns.Add("Nome", typeof(string));
        tbDados.Columns.Add("Vencimento", typeof(DateTime));
        tbDados.Columns.Add("Valor", typeof(double));
        tbDados.Columns.Add("NossoNumero", typeof(int));

        // insere os dados
        tbDados.Rows.Add("Fábio", new DateTime(2008, 12, 30), 123.45, 345678);
        tbDados.Rows.Add("Érika", new DateTime(2008, 7, 25), 60, 12332);
        tbDados.Rows.Add("Milena", new DateTime(2008, 10, 20), 10.30, 234);
        tbDados.Rows.Add("Cecília", DateTime.MinValue, 200.55, 456445);
        tbDados.Rows.Add("qualquer um", new DateTime(2008, 2, 12), 7890.5, 56756);

        int nBoleto = 0;
        foreach (DataRow row in tbDados.Rows)
        {
            // o principal é inserir o componente dinakicamente dentro de um container (controle que suporte outros controles, exemplo: Form, Panel)
            blt = new BoletoWeb();

            // para caber 2 em uma página não será usado o recibo do sacado
            blt.ExibeReciboSacado = false;
            
            // configura as propriedades de estilo
            blt.CssCell = "BolCell";
            blt.CssField = "BolField";

            // Adiciona a instancia na tela
            form1.Controls.Add(blt);
            nBoleto++;


            // Mude o ZOOM do CSS BoletoWeb no arquivo .aspx para caber até 3 boletos, ai o módulo da divisão passa a ser 3
            //if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras
            if (nBoleto % 2 == 0)
                // somente nos boletos pares a iniciar de 2 força uma quebra de linha
                form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>"));
            else
                // nos boletos impares adiciona a imagem de recorte
                form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif'>"));

            // Note que na página ASPX, existe uma referencia a classe "BoeltoWeb"
            // Nesta classe CSS é definido o espaçamento entra cada boleto e a quebra de página

            // Depois segue normalmente as definições estaticas ou vindas do banco de dados
            
            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "outro cedente!";
            Cedente.Banco = "237";
            Cedente.Agencia = "1234-5";
            Cedente.Conta = "123456-7";
            Cedente.Carteira = "06";
            Cedente.Modalidade = "11";

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)row["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento = (DateTime)row["Vencimento"];
            Boleto.ValorDocumento = (double)row["Valor"];
            Boleto.NossoNumero = row["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            blt.MakeBoleto(Cedente, Sacado, Boleto);

        }
    }
示例#53
0
    protected void btnRemessa_Click(object sender, EventArgs e)
    {   // (Não é o foco validar dados de entrada, e sim testar a geração de registro)

        // Definição dos dados do cedente - QUEM RECEBE / EMITE
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = Request["banco"] ?? "341";
        Cedente.Agencia = "1510";
        Cedente.Conta = "001466-4";
        Cedente.Carteira = "09";
        Cedente.Modalidade = "05";
        Cedente.CedenteCOD = "00000000000004047726"; // 20 digitos

        //Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "Pedro Alvarez Cabral";
        Sacado.Documento = "123.123.134-12";
        Sacado.Endereco = "Rua 21 de Abril";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Vera Cruz";
        Sacado.Cep = "98765-000";
        Sacado.UF = "SP";
        Sacado.Email = "*****@*****.**";

        //Definição das Variáveis do boleto
        BoletoInfo Boleto;

        //WebControl
        BoletoWeb blt;

        // define o emissor da remessa
        // Remessa r = new Remessa(Cedente);
        CNAB400Bradesco r = new CNAB400Bradesco();
        r.Cedente = Cedente;
        // O lote padrão gera AADDDHH (Ano, Dia do ano, Hora)
        r.NumeroLote += 2000000; // inicia com 3 o numero do lote! (soma 20 anos)

        //r.ShowDumpReg = true;

        // customiza campos para Bradesco
        // r.onRegItem += new RemessaReg(r_onRegItem);

        for (int n = 0; n < Int32.Parse(txtQTD.Text); n++)
        {
            Boleto = new BoletoInfo();
            Boleto.BoletoID = n;
            Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;
            Boleto.ValorDocumento = double.Parse(txtValor.Text) + n;
            Boleto.DataDocumento = DateTime.Now;
            Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n);
            Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

            blt = new BoletoWeb();
            dvBoletos.Controls.Add(blt);

            blt.ImagePath = "../imagens/"; // Define o diretório de imagens
            blt.ExibeReciboSacado = false; // Apenas para exibir a parte que interessa do boleto
            blt.CssCell = "BolCell";
            blt.CssField = "BolField";

            // Gera um boleto
            blt.MakeBoleto(Cedente, Sacado, Boleto);

            // Gera um registro
            Boleto.SacadoInit(Sacado); // obrigatório para o registro
            r.Boletos.Add(Boleto,null);

        }

        // o numero de exemplo '123' é apenas um numero de teste
        // este numero é muito importante que seja gerado de forma exclusiva e sequencial
        txtRemessa.Text = r.Remessa(); //r.CNAB400(123);
        
    }
示例#54
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do cedente - QUEM RECEBE / EMITE
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = "237-";
        Cedente.Agencia = "1234";       // use somente "-" para separa o código da agencia e digito
        Cedente.Conta = "56789-1";      // use somente "-" para separa o código da conta e digito
        Cedente.Carteira = "6";
        Cedente.Modalidade = "";        // Em geral faz parte do nosso numero
        Cedente.Convenio = "1878794";   // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes
        Cedente.CodCedente = "1878794"; // outros bancos chama isto de Codigo do Cedente ou Código do Cliente

        // Novas Exigencias da FREBABAN: Exibir endereço e CNPJ no campo de emitente!
        //Cedente.ExibirCedenteDocumento = true; // Não é mais necessário pois agora é obrigatório para homologar
        Cedente.CNPJ = "12.345.678/0001-12";
        //Cedente.ExibirCedenteEndereco = true; // Não é mais necessário pois agora é obrigatório para homologar
        Cedente.Endereco = "Rua Sei lá aonde, 123 - Brás, São Paulo/SP";

        // outros usam os 2 campos para controles distintos!
        // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas!
        // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco

        // Para casos especiais
        Cedente.UsoBanco = "123";
        Cedente.CIP = "456";
        Cedente.UsoBanco = "CVT 7744-5";

        // Definição dos dados do sacado -  QUEM PAGA
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.SacadoCodigo = "123"; // Código interno de controle
        Sacado.Sacado = "Fabio Ferreira (Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";
        Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23";

        // Definiçào dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "123400";
        Boleto.NumeroDocumento = "123400";
        Boleto.ValorDocumento = 423.45;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2006, 5, 31);
        Boleto.ParcelaNumero = 2;
        Boleto.ParcelaTotal = 10;

        // Obrigatório para o UNIBANCO
        Boleto.LocalPagamento = "Pagável em qualquer agência bancária";
        Boleto.Especie = Especies.RC;
        Boleto.DataDocumento = DateTime.Now.AddDays(-2);     // Por padrão é a data atual, geralmente é a data em que foi feita a compra/pedido, antes de ser gerado o boleto para pagamento
        Boleto.DataProcessamento = DateTime.Now.AddDays(-1); // Por padrão é a data atual, pode ser usado como a data em que foi impresso o boleto
        
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // é possivel alterar alguns textos padrões conforme abaixo
        // conforme circulares BACEN 3.598 e 3.656 em vigor a partir de 28/06/2013 titulo fora mudados de cedente para beneficiário, e sacado para pagador
        // BoletoTextos.Cedente= "Cedente"; 
        //BoletoTextos.Sacado = "Sacador";

        // é possive exibir a linha digitável também no recibo do sacado
        //bltPag.ExibeReciboIPTE = true;

        // É possivel ocultar totalmente o recibo do sacado e customizar o layout deste
        //bltPag.ExibeReciboSacado = false;

        // personalize com o logo de sua empresa, e o caminho base das imagens
        bltPag.ImagePath = "imagens/";
        bltPag.ImageLogo = "Impactro-Logo.gif";
        bltPag.ImageType = BoletoImageType.gif; // Define que as imagens virão de arquivos esternos 

        //  // opções especiais: use com cuidado
        //  bltPag.Boleto.Especie = "?USD?";    // é possivel fazer cobranças em outras moedas
        //  bltPag.Boleto.Moeda = "3";          // mas deve ser analisado o código da moeda
        //  bltPag.ImageType = BoletoImageType.gif; // você pode customizar as imagens dos bancos
        //  bltPag.ImagePath = "imagens/";          // desde que informe um diretório onde as imagens estarão

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);
    }
    //// Para imprimir um unico boleto
    //void pDoc_PrintPageUnico(object sender, PrintPageEventArgs e)
    //{
    //    blt.PrintType = PrintTypes.Documet;
    //    blt.Print(e.Graphics);
    //}

    // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
    void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
    {
        try
        {

            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "outro cedente!";
            Cedente.Banco = "237";
            Cedente.Agencia = "1234-5";
            Cedente.Conta = "123456-7";
            Cedente.Carteira = "06";
            Cedente.Modalidade = "11";

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"];
            Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"];
            Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            // Cria uma nova instancia totalmente idependente
            BoletoForm bol = new BoletoForm();
            // monta o boleto com os dados específicos nas classes
            bol.MakeBoleto(Cedente, Sacado, Boleto);
            bol.PrintType = PrintTypes.Documet;
            bol.Print(e.Graphics);

            nReg++;
            e.HasMorePages = nReg < tbDados.Rows.Count;
        }
        catch (Exception)
        {
        }
    }
    // Este exemplo tem os mesmos parametros, mas a imagem é rederizada de forma externa
    // A instancia do boleto é serializada e fica na sessão ou cache, e é recuperada pelo gerador da imagem do boleto
    protected void Page_Init(object sender, EventArgs e)
    {
        // A Definição dos cedente fica dentro do gerador da imagem

        // Cria uma tabela em memoria
        DataTable tbDados = new DataTable();

        // Estrutura da tabela
        tbDados.Columns.Add("Nome", typeof(string));
        tbDados.Columns.Add("Vencimento", typeof(DateTime));
        tbDados.Columns.Add("Valor", typeof(double));
        tbDados.Columns.Add("NossoNumero", typeof(int));

        // Insere os dados
        tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678);
        tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332);
        tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234);
        tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445);
        tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319);
        tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445);
        tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445);
        tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756);
        tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656);
        tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672);

        int nBoleto = 0;
        foreach (DataRow row in tbDados.Rows)
        {
            // O loop apenas gera os objetos que serão memorizados em sessão ou cache

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)row["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento = (DateTime)row["Vencimento"];
            Boleto.ValorDocumento = (double)row["Valor"];
            Boleto.NossoNumero = row["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            // Vincula o Sacado ao boleto
            Boleto.SacadoInit(Sacado);

            // Crio um identificador unico para o boleto, poderia ser só um ID, ou mesmo o NossoNumero, mas depende dos critérios de segurança
            string cID = "boleto-" + Guid.NewGuid().ToString();

            // Se não for StateServer, ou sessão em banco de dados é possivel usar
            Session[cID] = Boleto; // Funciona é mais simples, mas a memoria vai ficando com todos os boletos gerados até a sessão expirar

            // Uma forma melhor é colocar em cache, com tempo de expiração
            //Cache.Insert(cID, Boleto, null, DateTime.MaxValue, new TimeSpan(0, 5, 0));

            // Adiciona a imagem do boleto em base64 no HTML
            // Para facilitar a depuração também adiciono um link para a propria imagem
            form1.Controls.Add(new LiteralControl("<a href='BoletoImagem2.ashx?id=" + cID + "' target='_blank'><img src='BoletoImagem2.ashx?id=" + cID + "' /></a>"));
            // form1.Controls.Add(new LiteralControl("<img src='BoletoImagem2.ashx?id=" + cID + "' />"));

            // incrementa o contador de boletos
            nBoleto++;
            if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras
                // somente nos boletos pares a iniciar de 2 força uma quebra de linha
                form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>"));
            else //  if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura
                // nos boletos impares adiciona a imagem de recorte, ou um HR
                // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>"));
                form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>"));
        }
    }
示例#57
0
        private void btnGerar_Click(object sender, EventArgs e)
        {
            // Definição dos dados do cedente - QUEM RECEBE / EMITE o boleto
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "TESTE QUALQUER LTDA";
            Cedente.CNPJ = "12123123/0001-01";
            Cedente.Layout = LayoutTipo.Auto;

            // ABAIXO DESCOMENTE o bloco de dados do banco que pretende usar

            // SANTANDER
            //Cedente.Banco = "033";
            //Cedente.Agencia = "1234-1";
            //Cedente.Conta = "001234567-8";
            //Cedente.CodCedente = "1231230";
            //Cedente.CarteiraTipo = "5";
            //Cedente.Carteira = "101";
            //Cedente.CedenteCOD = "33333334892001304444"; // 20 digitos (note que o final, é o numero da conta, sem os ultios 2 digitos)
            //Cedente.Convenio = "0000000000000000002222220"; // 25 digitos
            //Cedente.useSantander = true; //importante para gerar o código de barras correto (por questão de compatibilidade o padrão é false)

            // BRADESCO
            Cedente.Banco = "237-2";
            Cedente.Agencia = "1510";
            Cedente.Conta = "001466-4";
            Cedente.Carteira = "09";
            Cedente.CedenteCOD = "00000000000001111111"; // 20 digitos

            // ITAU
            //Cedente.CedenteCOD = "514432001";
            //Cedente.Banco = "341-1";
            //Cedente.Agencia = "6260";
            //Cedente.Conta = "01607-3";
            //Cedente.Carteira = "109";

            // Banco do Brasil
            //Cedente.Banco = "001-9";
            //Cedente.Agencia = "294-1";
            //Cedente.Conta = "004570-6";
            //Cedente.Carteira = "18";
            //Cedente.Modalidade = "21";
            //Cedente.Convenio = "859120";

            // CAIXA
            //Cedente.Banco = "104";
            //Cedente.Agencia = "123-4";
            //Cedente.Conta = "5678-9";
            //Cedente.Carteira = "2";          // Código da Carteira
            //Cedente.Convenio = "02";         // CNPJ do PV da conta do cliente
            //Cedente.CodCedente = "455932";   // Código do Cliente(cedente)
            //Cedente.Modalidade = "14";       // G069 - CC = 14 (título Registrado emissão Cedente)
            //Cedente.Endereco = "Rua Sei la aonde";
            //Cedente.Informacoes =
            //    "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" +
            //    "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" +
            //    "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" +
            //    "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>";
            //BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE";

            // SICRED
            //Cedente.Banco = "748-2";
            //Cedente.Agencia = "1234-5";
            //Cedente.Conta = "98765-1";
            //Cedente.CodCedente = "12345";
            //Cedente.Modalidade = "04";

            // UNICRED
            //Cedente.Banco = "091-4";
            //Cedente.Agencia = "1234-5";
            //Cedente.Conta = "98765-1";
            //Cedente.CodCedente = "12345";

            //Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = "Fábio F S";
            Sacado.Documento = "192.211.498-70";
            Sacado.Endereco = "Rua 21 de Abril 1001 ap 21";
            Sacado.Cidade = "São Paulo";
            Sacado.Bairro = "Brás";
            Sacado.Cep = "03047-000";
            Sacado.UF = "SP";
            Sacado.Email = "*****@*****.**";
            Sacado.Avalista = "Avalista";

            LayoutBancos r = new LayoutBancos();
            r.Init(Cedente);
            r.Lote = CobUtil.GetInt(txtLote.Text);
            r.ShowDumpLine = chkDump.Checked;
            //r.onRegBoleto = r_onRegBoleto; // Para personalizar as linhas com os campos adicionais

            for (int n = 0; n < Int32.Parse(txtQTD.Text); n++)
            {
                //Definição das Variáveis do boleto
                BoletoInfo Boleto = new BoletoInfo();
                Boleto.BoletoID = n;
                Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString();
                Boleto.NumeroDocumento = Boleto.NossoNumero;
                Boleto.ValorDocumento = double.Parse(txtValor.Text) + n;
                Boleto.DataDocumento = DateTime.Now;
                Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n);
                Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente";

                // outros campos opcionais
                Boleto.ValorMora = Boleto.ValorDocumento * 0.2 / 30; // Vale lembrar que o juros pode ser tão pequeno que as vezes pode sair como isento
                Boleto.PercentualMulta = 0.03;
                Boleto.ValorDesconto = n;
                Boleto.DataDesconto = DateTime.Now;
                Boleto.ValorOutras = -n; // abatimentos

                /* Exemplo de uso valido apenas para o Bradesco (Página 21 do arquivo: layout_cobranca_port_BRADESCO.pdf)
                 * Cada banco usa estes campos da forma que eles querem

                157 a 160 - 1ª / 2ª Instrução
                Campo destinado para pré-determinar o protesto do Título ou a baixa por decurso de prazo, quando do registro.
                Não havendo interesse, preencher com Zeros.
                Porém, caso a Empresa deseje se utilizar da instrução automática de protesto ou da baixa por decurso de prazo, abaixo os procedimentos:

                Protesto:
                - posição 157 a 158 = Indicar o código “06” - (Protestar).
                - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias).

                Protesto Falimentar:
                - posição 157 a 158 = Indicar o código “05” – (Protesto Falimentar)
                - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias).

                Decurso de Prazo:
                - posição 157 a 158 = Indicar o código “18” – (Decurso de prazo).
                - posição 159 a 160 = Indicar o número de dias para baixa por decurso de prazo.

                Nota: A posição 157 a 158, também poderá ser utilizada para definir as seguintes mensagens, a serem impressas nos Boletos de cobrança, emitidas pelo Banco:
                08 Não cobrar juros de mora
                09 Não receber após o vencimento
                10 Multa de 10% após o 4º dia do Vencimento.
                11 Não receber após o 8º dia do vencimento.
                12 Cobrar encargos após o 5º dia do vencimento.
                13 Cobrar encargos após o 10º dia do vencimento.
                14 Cobrar encargos após o 15º dia do vencimento
                15 Conceder desconto mesmo se pago após o vencimento.
                Atenção: Essas instruções deverão ser enviadas no Arquivo-Remessa, quando da entrada, desde que o código de ocorrência na posição 109 a 110 do registro de transação, seja “01”, para as instruções de protesto, o CNPJ / CPF e o endereço do Sacado deverão ser informados corretamente.
                */
                Boleto.Instrucao1 = 6; // Protestar
                Boleto.Instrucao2 = 7; // Depois de 7 dias do vencimento

                // No bRadesco não é usado o campo Comando, mas outros bancos podem usar
                // Boleto.Comando = 0;

                // As linhas a seguir customiza qualquer valor sem precisar usar o evento 'r.onRegBoleto' o que torna a implementação mais simples
                // A forma mais pratica e segura é sempre usar os enumeradores
                // Mas é possivel usar as duas opções como neste exemplo, mas os valores personalizados tem sempre prioridade pois são inserridos por ultimo apos todos calculos, e processamento de eventos, portanto use com cuidado!
                Boleto.SetRegEnumValue(CNAB400Remessa1Sicredi.TipoJuros, "B");    // (posição 19) // Apenas se atente para a diferença do nome para SetRegEnumValue()
                Boleto.SetRegKeyValue("CNAB400Remessa1Sicredi.Alteracao", "E");   // (posição 71) // É possivel adicionar o nome e valor do enumerador, isso é compativel com VB6
                // Cuidado ao deixar algo explicito diretamente:
                // Boleto.SetRegKeyValue("Emissao", "B"); // posição 74 // ou simplesmente informar o nome do campo, mas cuidado pois há layouts que usam mais de um tipo de registro e as vezes tem nomes iguais mas as funções podem ser diferentes
                Boleto.SetRegEnumValue(CNAB400Remessa1Bradesco.Condicao, 1); // Apenas para Bradesco enviar o boleto para residencia

                // Gera um registro
                //Boleto.Sacado = Sacado; // obrigatório para o registro
                r.Add(Boleto, Sacado);
            }

            // o numero de exemplo '123' é apenas um numero de teste
            // este numero é muito importante que seja gerado de forma exclusiva e sequencial
            txtRemessa.Text = r.Remessa(); //r.CNAB400(123);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Definição dos dados do sacado
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "(Teste para homologação)";
        Sacado.Documento = "123.456.789-99";
        Sacado.Endereco = "Av. Paulista, 1234";
        Sacado.Cidade = "São Paulo";
        Sacado.Bairro = "Centro";
        Sacado.Cep = "12345-123";
        Sacado.UF = "SP";

        /*

        // Definição dos dados do cedente
        // (de acordo com o exemplo fornecido na documentação)
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = "151-1";
        Cedente.Agencia = "0001-9";
        Cedente.Conta = "005432-4";
        Cedente.Carteira = "9";
        Cedente.Modalidade = "04";

        // Definição dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "990000001";
        Boleto.NumeroDocumento = "1";
        Boleto.ValorDocumento = 350;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2000, 7, 15);
 
        */

        // Definição dos dados do cedente

        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "Exemplo de empresa cedente";
        Cedente.Banco = "151-1";
        Cedente.Agencia = "123-4";
        Cedente.Conta = "4455-1";
        Cedente.CodCedente = "4";
        Cedente.Carteira = "1";
        Cedente.Modalidade = "04";

        // Definição dos dados do boleto
        BoletoInfo Boleto = new BoletoInfo();
        Boleto.NossoNumero = "990000003";
        Boleto.NumeroDocumento = "3";
        Boleto.ValorDocumento = 212.5;
        Boleto.DataDocumento = DateTime.Now;
        Boleto.DataVencimento = new DateTime(2008, 9, 8);
        Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente";

        // monta o boleto com os dados específicos nas classes
        bltPag.MakeBoleto(Cedente, Sacado, Boleto);

        // É possivel também customizar a linha referente o local de pagamento:
        bltPag.Boleto.LocalPagamento = "Pague Preferencialmente no BANCO NOSSA CAIXA S.A. ou na rede bancária até o vencimento";
        
        // Exibe o codigo de barras devidamente formatado e separado
        lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 8, 4, 1, 6, 3, 1, 1 });


    }
    protected void btnTest_Click(object sender, EventArgs e)
    {

        // Definição dos dados do cedente - QUEM RECEBE / EMITE o boleto
        CedenteInfo Cedente = new CedenteInfo();
        Cedente.Cedente = "TESTE QUALQUER LTDA";
        Cedente.CNPJ = "12123123/0001-01";

        // ABAIXO DESCOMENTE o bloco de dados do banco que pretende usar

        // SANTANDER
        //Cedente.Banco = "033";
        //Cedente.Agencia = "1234-1";
        //Cedente.Conta = "001234567-8";
        //Cedente.CodCedente = "1231230";
        //Cedente.CarteiraTipo = "5";
        //Cedente.Carteira = "101";
        //Cedente.CedenteCOD = "33333334892001304444"; // 20 digitos (note que o final, é o numero da conta, sem os ultios 2 digitos)
        //Cedente.Convenio = "0000000000000000002222220"; // 25 digitos
        //Cedente.useSantander = true; //importante para gerar o código de barras correto (por questão de compatibilidade o padrão é false)

        // BRADESCO
        //Cedente.Banco = "237-2";
        //Cedente.Agencia = "1510";
        //Cedente.Conta = "001466-4";
        //Cedente.Carteira = "09";
        //Cedente.CedenteCOD = "00000000000001111111"; // 20 digitos

        // ITAU
        //Cedente.CedenteCOD = "514432001";
        //Cedente.Banco = "341-1";
        //Cedente.Agencia = "6260";
        //Cedente.Conta = "01607-3";
        //Cedente.Carteira = "109";

        // Banco do Brasil
        //Cedente.Banco = "001-9";
        //Cedente.Agencia = "294-1";
        //Cedente.Conta = "004570-6";
        //Cedente.Carteira = "18";
        //Cedente.Modalidade = "21";
        //Cedente.Convenio = "859120";

        // CAIXA 
        //Cedente.Banco = "104";
        //Cedente.Agencia = "123-4";
        //Cedente.Conta = "5678-9";
        //Cedente.Carteira = "2";          // Código da Carteira
        //Cedente.Convenio = "02";         // CNPJ do PV da conta do cliente
        //Cedente.CodCedente = "455932";   // Código do Cliente(cedente)
        //Cedente.Modalidade = "14";       // G069 - CC = 14 (título Registrado emissão Cedente)
        //Cedente.Endereco = "Rua Sei la aonde";
        //Cedente.Informacoes =
        //    "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" +
        //    "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" +
        //    "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" +
        //    "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>";
        //BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE";

        // SICRED
        Cedente.Banco = "748-2";
        Cedente.Agencia = "1234-5";
        Cedente.Conta = "98765-1";
        Cedente.CodCedente = "12345";
        Cedente.Modalidade = "04";
        Cedente.Layout = LayoutTipo.Auto;

        // Cria uma instancia do gerador de arquivo que abstrai as classes individuais de geração
        LayoutBancos r = new LayoutBancos(); // classe genérica para qualquer banco, compatível até com ActiveX
        r.Init(Cedente); // define o cedente e o tipo de arquivo
        r.Lote = 1234; // Define o numero do lote!

        // É quase que obrigatporio para o sicredi
        r.onRegBoleto = r_onRegBoleto; // Para personalizar as linhas com os campos adicionais a todos registros
        // Mas há outra forma usando o 'SetRegKeyValue(key, valor);' em cada boleto info

        // É possível configurar o lote, por padrão é gerado AADDDHH (Ano, Dia do ano, Hora) obrigatório para bradesco
        // r.Lote += 2000000; // Ou é possivel usar a logica que quiser, por exemplo, inicia com 3 o numero do lote! (soma 20 anos)

        // Definição dos dados do sacado -  QUEM PAGA
        SacadoInfo Sacado = new SacadoInfo();
        Sacado.Sacado = "TESTE OK (Teste para homologação)";
        Sacado.Documento = "12321321000112";
        Sacado.Endereco = "RUA TESTE XXX";
        Sacado.Cidade = "SÃO PAULO";
        Sacado.Bairro = "JARDIM Y";
        Sacado.Cep = "12345-678";
        Sacado.UF = "SP";

        // Abaixo serão criados 5 boleto distintos para o mesmo sacado criado acima

        // Definição dos dados do boleto1
        BoletoInfo Boleto1 = new BoletoInfo();
        Boleto1.NossoNumero = "2265";
        Boleto1.BoletoID = 0000001;
        Boleto1.NumeroDocumento = Boleto1.NossoNumero;
        Boleto1.ValorDocumento = 12.34;
        Boleto1.DataDocumento = DateTime.Now;
        Boleto1.DataVencimento = DateTime.Now.AddDays(5);
        Boleto1.Ocorrencia = Ocorrencias.Remessa; // código 1

        // As linhas a seguir customiza qualquer valor sem precisar usar o evento 'r.onRegBoleto' o que torna a implementação mais simples
        // A forma mais pratica e segura é sempre usar os enumeradores
        // Mas é possivel usar as duas opções como neste exemplo, mas os valores personalizados tem sempre prioridade pois são inserridos por ultimo apos todos calculos, e processamento de eventos, portanto use com cuidado!
        Boleto1.SetRegEnumValue(CNAB400Remessa1Sicredi.TipoJuros, "B");    // (posição 19) // Apenas se atente para a diferença do nome para SetRegEnumValue()
        Boleto1.SetRegKeyValue("CNAB400Remessa1Sicredi.Alteracao", "E");   // (posição 71) // É possivel adicionar o nome e valor do enumerador, isso é compativel com VB6
        Boleto1.SetRegKeyValue("Emissao", "B"); // posição 74 // ou simplesmente informar o nome do campo, mas cuidado pois há layouts que usam mais de um tipo de registro e as vezes tem nomes iguais mas as funções podem ser diferentes
        

        // Definição dos dados do boleto2
        BoletoInfo Boleto2 = new BoletoInfo();
        Boleto2.NossoNumero = "2266";
        Boleto2.BoletoID = 0000002;
        Boleto2.NumeroDocumento = Boleto2.NossoNumero;
        Boleto2.ValorDocumento = 123.45;
        Boleto2.DataDocumento = DateTime.Now;
        Boleto2.DataVencimento = DateTime.Now.AddDays(10);
        Boleto2.Ocorrencia = Ocorrencias.AlterarDados; // código 31
        Boleto2.Ocorrencia = (Ocorrencias)31; // código 31
        Boleto2.SetRegEnumValue(CNAB240SegmentoPCaixa.BaixaDevolucaoCodigo, 1); // apenas para caixa força o campo para 1


        // Definição dos dados do boleto3
        BoletoInfo Boleto3 = new BoletoInfo();
        Boleto3.NossoNumero = "2267";
        Boleto3.BoletoID = 0000003;
        Boleto3.NumeroDocumento = Boleto3.NossoNumero;
        Boleto3.ValorDocumento = 2345.67;
        Boleto3.DataDocumento = DateTime.Now;
        Boleto3.DataVencimento = DateTime.Now.AddDays(15);
        Boleto3.Ocorrencia = Ocorrencias.Cancelamento; // 35
        Boleto3.PercentualMulta = 0.02;                             // Multa é quanto pagar a mais, apos o vencimento 2%)
        Boleto3.ValorMora = (0.01 / 30) * Boleto3.ValorDocumento;   // Mora é um valor a ser acrescido por dia apos o vencimento baseado (juros mensal total por mês 1%)

        // Definição dos dados do boleto4
        BoletoInfo Boleto4 = new BoletoInfo();
        Boleto4.NossoNumero = "2268";
        Boleto4.BoletoID = 0000004;
        Boleto4.NumeroDocumento = Boleto4.NossoNumero;
        Boleto4.ValorDocumento = 3456.78;
        Boleto4.DataDocumento = DateTime.Now;
        Boleto4.DataVencimento = DateTime.Now.AddDays(20);
        Boleto4.Ocorrencia = Ocorrencias.Remessa;
        Boleto4.PercentualMulta = 0.02;
        Boleto4.ValorMora = (0.01 / 30) * Boleto4.ValorDocumento;
        Boleto4.Instrucao2 = 6;         // Potestar (dependendo do banco esse é o código de protesto: Caixa, BB, Santander)
        Boleto4.DiasProtesto = 15;      // depois de 15 dias do vencimento

        // Definição dos dados do boleto5
        BoletoInfo Boleto5 = new BoletoInfo();
        Boleto5.NossoNumero = "2269";
        Boleto5.BoletoID = 0000005;
        Boleto5.NumeroDocumento = Boleto5.NossoNumero;
        Boleto5.ValorDocumento = 42.54;
        Boleto5.DataDocumento = DateTime.Now;
        Boleto5.DataVencimento = DateTime.Now.AddDays(25);
        Boleto5.Ocorrencia = Ocorrencias.Remessa;
        Boleto5.Instrucao2 = 6;         // Potestar (dependendo do banco esse é o código de protesto: Caixa, BB, Santander)
        Boleto5.DiasProtesto = 15;      // depois de 15 dias do vencimento
        // Protesta e sem mora

        // Adiciona os boletos previamente definidos no layout de registro
        r.Add(Boleto1, Sacado);
        r.Add(Boleto2, Sacado);
        r.Add(Boleto3, Sacado);
        r.Add(Boleto4, Sacado);
        r.Add(Boleto5, Sacado);

        // Se quiser exibir o processamento dos campos detalhados (para ajudar a identificar os campos) descomente a linha abaixo
        // r.ShowDumpLine = false;

        // Gera o texto de registro (com as informações de dump habilitadas acima)
        txtOut.Text = r.Remessa();

        // Grava um novo arquivo final no diretório atual (mas sem as informações de dump, caso tenha habilitado acima, desabilite aqui abaixo)
        // r.ShowDumpLine = false;
        r.RemessaTo(MapPath("remessa.txt"));
        // FIM DO PROGRAMA EXEMPLO
        // =======================

        // As linhas abaixão são apenas um exemplo para ilustrar o funcionamento dos dados processados
        // Muito util para conferencia do que está sendo gerado no arquivo

        //gvHeader1.DataSource = r.Table(typeof(CNAB240HeaderArquivoCaixa));
        //gvHeader2.DataSource = r.Table(typeof(CNAB240HeaderLoteCaixa));
        //gvItens1.DataSource = r.Table(typeof(CNAB240SegmentoPCaixa));
        //gvItens2.DataSource = r.Table(typeof(CNAB240SegmentoQCaixa));
        //gvFooter1.DataSource = r.Table(typeof(CNAB240TrailerLoteCaixa));
        //gvFooter2.DataSource = r.Table(typeof(CNAB240TrailerArquivoCaixa));

        //gvHeader1.DataBind();
        //gvHeader2.DataBind();
        //gvItens1.DataBind();
        //gvItens2.DataBind();
        //gvFooter1.DataBind();
        //gvFooter2.DataBind();

        // Exibe os boletos em tela (mesma lógica do exemplo 'GeraVarios.aspx')
        foreach (string cNN in r.Boletos.NossoNumeros)
        {
            BoletoWeb blt = new BoletoWeb();
            blt.CssCell = "BolCell";
            blt.CssField = "BolField";
            form1.Controls.Add(blt);
            r.Boletos[cNN].GeraInstrucoes();
            blt.MakeBoleto(Cedente, r.Boletos[cNN].Sacado, r.Boletos[cNN]);
        }
    }