BoletoNet / boletonet

Boleto.Net is a library developed for use in Brazil, given it has been programmed with Brazilian retail legislation and business rules for bank registered billing integration.
Apache License 2.0
481 stars 383 forks source link

SICOOB - O que estou fazendo errado? #162

Open cristianormoraes opened 8 years ago

cristianormoraes commented 8 years ago

Estou tentando implementar o boleto Sicoob, porém parece que o codigo do cedente que o boletonet aceita é maior que o cedente que o banco me informou, gerando o seguinte erro: "O índice e o comprimento devem se referir a um local dentro da cadeia de caracteres. Nome do parâmetro: length", quando eu completo com "00" e fica "008481", ai ele não da o erro porém o boleto sai errado, alquem pode me ajudar?

Cedente ced = new Cedente("xxx", "xxx", "4033", "", "", "");
ced.Codigo = "8481";
ced.DigitoCedente = 6;
ced.Carteira = "1";   
Westfallx commented 8 years ago

O erro é onde vc está instanciando o cedente Cedente ced = new Cedente("xxx", "xxx", "4033", "", "", ""); Vc está passando os parametros do cedente e digito na hora que está instanciando???

cristianormoraes commented 8 years ago

Como deveria ficar? acho que eu não estou colocando isso corretamente.. boleto não é validado pelo banco de jeito nenhum.

public ActionResult Index()
        {
            var boletoBancario = new BoletoBancario();
            boletoBancario.CodigoBanco = 756;

            DateTime vencimento = new DateTime(2016, 02, 29);

            Cedente c = new Cedente("19.460.870/0001-35", "CDL - CDL UBERLANDIA", "4033", "0", "1233", "0");

            c.Codigo = "008481";
            c.DigitoCedente = 6;
            c.Carteira = "02";

            BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 124.30m, "1", "003322934", c);
            b.NumeroDocumento = "718049";
            b.DataProcessamento = new DateTime(2016, 02, 18);

            b.Sacado = new Sacado("23.168.206/0001-20", "PLASTICENTRO LTDA");
            b.Sacado.Endereco.End = "AV Afonso Pena 1386";
            b.Sacado.Endereco.Bairro = "Centro";
            b.Sacado.Endereco.Cidade = "Uberlândia";
            b.Sacado.Endereco.CEP = "38400-706";
            b.Sacado.Endereco.UF = "MG";

            boletoBancario.Boleto = b;
            boletoBancario.Boleto.Valida();

            byte[] _ByteArray = boletoBancario.MontaBytesPDF();

            System.IO.FileStream _FileStream = new System.IO.FileStream(Server.MapPath("~/") + "CDL_Uberlandia-Boleto_02_2016.pdf", System.IO.FileMode.Create, System.IO.FileAccess.Write);
            _FileStream.Write(_ByteArray, 0, _ByteArray.Length);
            _FileStream.Close();

            return File(boletoBancario.MontaBytesPDF(), "application/pdf", "boleto.pdf");
        }
Westfallx commented 8 years ago

Tem 2 coisas que eu vi que está diferente,
Cedente c = new Cedente("19.460.870/0001-35", "CDL - CDL UBERLANDIA", "4033", "0", "1233", "0"); o número do cedente é 1233 ou 8481? c.Codigo = "008481"; no código eu coloco mesmo numero quando eu faço a instância do cedente (no quinto parametro) caso isso não resolva, vai dbugando o método Valida() até chegar onde ele solta a msg. Pode ser um bug. No sicredi eu tive que corrigir alguns bugs nas versões anteriores.

cristianormoraes commented 8 years ago

Então eu acho que vou ter que mexer no codigo.. :(

Westfallx commented 8 years ago

Cara eu mexi em algumas coisas nas versoes anteriores uma das empresas elas trabalha com carnês, o nome dos codigos de barras era feito por tick, se for imprimir um boleto blz.. o problema é quando vc tem que gerar 1 - 300 boletos de uma vez, no servidor da empresa era tão rápido que no mesmo tick ele pegava até em 4 boletos. imagina a m... que deu, eram 4 boletos com o mesmo código de barras. ai eu mudei pra guid (tem uma chance de quase impossível de repetir). outra cosia que eu vou alterar e subir pra contribuir é código de baixa e alteração de vencimento no arquivo de remessa do sicredi, hj ele está fixo somente para cadastro.

mauriliommachado commented 8 years ago

estou tendo o mesmo erro. alguma resolução?

carlezzo commented 8 years ago

Ola galera com o código de vocês me ajudou a resolver este problema. Isso acontece por que o código "1233" tem que ter "001233" ou seja 6 caracteres :D