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
480 stars 383 forks source link

Boleto SICOOB #372

Open fabiofemc opened 7 years ago

fabiofemc commented 7 years ago

Preciso gerar o boleto para o banco Sicoob. Alguém conseguiu usando o boleto.net?

TMaiaBR commented 7 years ago

Sim, comecei na última semana de Dezembro/2016. O boleto já esta sendo gerado, porém o Arquivo de Remessa parece que esta com problemas. Meu cliente ao enviar o arquivo de remessa gerado pelo meu sistema que usa o Boleto.Net diz que o site do Sicoob exibe mensagem dizendo que o número do cliente não foi encontrado. Esse número é fornecido pelo gerente da conta e eu informei corretamente, mas mesmo assim deu esse erro.

Estudando esse caso, vi na internet que o manual do Sicoob esta errado. Segundo o manual, no arquivo de remessa deve ser informado o número da agência, dígito da agência, número do cliente e dígito da conta do cliente. Só que nos outros bancos o dígito da agência e dígito da conta não deve ser informado. Como esta no manual, deixei os dígitos e o cliente me avisou do erro de número do cliente não encontrado. Removi esses dígitos manualmente e enviei o arquivo para o cliente fazer outro teste. Até agora não tive retorno, mas acho que agora passará de boa.

Se realmente passar, vou notificar o pessoal aqui para fazer essa mudança.

TMaiaBR commented 7 years ago

Parece que outra pessoa já passou por isso também:

http://www.projetoacbr.com.br/forum/topic/17100-infidelidade-de-layout-x-arquivo-de-remessa/

fabiofemc commented 7 years ago

TMaiaBR Poderia me enviar sua implementação do boleto Sicoob? No meu caso quando mando visualizar fica em branco o boleto.

fabiofemc commented 7 years ago

Meu código está assim:

            ContaBancaria conta = new ContaBancaria();
            conta.Agencia = "4134";
            conta.DigitoAgencia = "0";
            conta.Conta = "1289";
            conta.DigitoConta = "0";

            Cedente c = new Cedente();
            c.ContaBancaria = conta;
            c.CPFCNPJ = "00.693.135/0001-80";
            c.Nome = "Empresa de Atacado";
            c.Codigo = "0322";
            c.DigitoCedente = 0;
            c.Carteira = "1";

            bb = new BoletoBancario();
            bb.CodigoBanco = _codigoBanco;

            Boleto b = new Boleto();
            b.Cedente = c;
            //
            b.DataProcessamento = DateTime.Now;
            b.DataVencimento = DateTime.Now.AddDays(15);
            b.ValorBoleto = Convert.ToDecimal(1);
            b.Carteira = "1";
            b.NossoNumero = "7777777";
            b.NumeroDocumento = "NF1234";
            //
            b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
            b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
            b.Sacado.Endereco.Bairro = "Testando";
            b.Sacado.Endereco.Cidade = "Testelândia";
            b.Sacado.Endereco.CEP = "70000000";
            b.Sacado.Endereco.UF = "RS";

            b.Banco = new Banco(756);

            EspecieDocumento especiedocumento = new EspecieDocumento(756, "1");//Duplicata Mercantil
            b.EspecieDocumento = especiedocumento;

            bb.Boleto = b;
            bb.Boleto.Valida();
            boletos.Add(bb);
TMaiaBR commented 7 years ago

Posso enviar sim, mas preciso pegar o código na empresa e com isso acessar o Github de lá. Para adiantar sua vida, achei dois post aqui do próprio Github que esta bem legal.

Aqui o usuário Guigomesa já algumas dicas para o Sicoob: https://github.com/BoletoNet/boletonet/issues/267

E aqui ele postou o código dele para o Sicoob: https://gist.github.com/guigomesa/fdd6491f7875c8123e5a16c0deb8441f

Se o seu boleto esta ficando em branco, então algum erro esta ocorrendo. A melhor forma de vc descobrir é debugando o componente. Baixe o código fonte do projeto (na versão que vc esta usando senão pode dar merda em produção onde o servidor tem mais segurança - já aconteceu comigo), abra o código fonte do Boleto.Net no visual estudio e mande compilar. Vá até a pasta bin do projeto e pegue a dll do boleto.net e use ele no seu projeto. Pronto, agora se vc debugar o seu projeto vc conseguirá entrar nas funções do Boleto.Net, assim vc saberá o que esta acontecendo.

fabiofemc commented 7 years ago

Descobrir qual era minha falha. Obrigado pela atenção..

jaedson-barbosa commented 6 years ago

Então, o Boleto.NET vai gerar boleto pra SICOOB ou falta algo ainda? Eu posso ajudar

eternoscav commented 6 years ago

Boa noite Alguém teria um exemplo funcional para a geração do arquivo e remessa, no meu está dando erro da geração do arquivo de remessa.

Obrigado.

ivanteles commented 6 years ago

https://github.com/BoletoNet/boletonet/issues/636#issuecomment-409033629

cezarant commented 6 years ago

@fabiofemc tudo bem? Poderia encerrar a issue por favor? Parece que a discussão foi encerrada.

ExayneMourao commented 5 years ago

Ola! Alguém conseguiu homologar o boleto do Sicoob?

ivanteles commented 5 years ago

Eu sim.

Em seg, 26 de nov de 2018 16:41, ExayneMourao <notifications@github.com escreveu:

Ola! Alguém conseguiu homologar o boleto do Sicoob?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-441750286, or mute the thread https://github.com/notifications/unsubscribe-auth/AAzdTt6PqGuk8qzQL0rh5mii3WwvqChXks5uzDXugaJpZM4LZxSi .

ExayneMourao commented 5 years ago

Olá Ivan, você poderia me disponibilizar o código? Eu estou conseguindo gerar o boleto, mas ao ler o código de barras ou informar a linha digitável os valores lidos são incorretos; Procurei uma forma de resolver, mas até agora não encontrei.

Se puder me ajudar ficarei extremamente grata :D

Aguardo retorno.

Em seg, 26 de nov de 2018 às 16:51, Ivan Teles notifications@github.com escreveu:

Eu sim.

Em seg, 26 de nov de 2018 16:41, ExayneMourao <notifications@github.com escreveu:

Ola! Alguém conseguiu homologar o boleto do Sicoob?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub < https://github.com/BoletoNet/boletonet/issues/372#issuecomment-441750286>, or mute the thread < https://github.com/notifications/unsubscribe-auth/AAzdTt6PqGuk8qzQL0rh5mii3WwvqChXks5uzDXugaJpZM4LZxSi

.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-441753351, or mute the thread https://github.com/notifications/unsubscribe-auth/AkZaSd68x4Cp8-26BhB0i5ECjCeGs_hoks5uzDgygaJpZM4LZxSi .

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6

ivanteles commented 5 years ago

web forms

var c = new Cedente("00.000.000/0000-00", "razao social", "0000", "", "00000", "0")
            {
                Codigo = "000000",
                DigitoCedente = 0,
                Carteira = "1",
                MostrarCNPJnoBoleto = true,
                Endereco = new Endereco
                {
                    End = "",
                    CEP = "72500-000",
                    Bairro = "Brasília",
                    UF = "DF",
                    Cidade = "Brasília",
                    Numero = "0"
                }
            };

            var boletoBancario = new BoletoBancario { CodigoBanco = 756, MostrarEnderecoCedente = true };

            int id = _debito.id.ToString().Length;
            string idM = "";
            if (id > 7)
            {
                throw new Exception("Impossível gerar o boleto");
            }
            else
            {
                var falta = 7 - id;

                for (int i = 0; i < falta; i++)
                {
                    idM += "0";
                }
                idM += _debito.id.ToString();
            }

            var b = new Boleto(_debito.vencimento, _debito.receber, "1", idM, c)
            {
                TipoModalidade = "01",
                NumeroParcela = 1,
                NumeroDocumento = idM,
                EspecieDocumento = new EspecieDocumento_Sicoob("1"),
                Sacado = new Sacado(_responsavel.cpf, _aluno.nomeAluno)
                {
                    Endereco =
                    {
                        End = _responsavel.endResidencial,
                        Bairro = _responsavel.cidResidencial,
                        Cidade = _responsavel.cidResidencial,
                        CEP = _responsavel.cep,
                        UF = _responsavel.estResidencial
                    }
                },
                DataDocumento = _debito.data,
                DataProcessamento = _debito.data,
                DataMulta = _debito.vencimento.AddDays(1)                
            };

            var li = new List<IInstrucao>
                                     {
                                         new Instrucao(756) { Descricao = string.Format("Sr. Caixa,<br />.")},
                                         new Instrucao(756) { Descricao = string.Format("Cobrar multa de {0:c} após o vencimento.", Convert.ToDouble(_debito.receber*_contrato.multa/100m))},
                                         new Instrucao(756) { Descricao = string.Format("Cobrar mora diária de {0:c} após o vencimento.", Convert.ToDouble(_debito.receber* ( _contrato.juros / 30m)/100m))},
                                         new Instrucao(756) { Descricao = "Não receber após 30 dias do vencimento."}
                                     };
            foreach (var l in li)
            {
                b.Instrucoes.Add(l);
            }

            if (_debito.tipo == 0)
            {
                var inst = new Instrucao(756)
                {
                    Descricao =
                        string.Format("Concerder desconto de {0:c} até o vencimento.",
                            Convert.ToDouble(_debito.receber * _contrato.desconto / 100m))
                };
                b.Instrucoes.Add(inst);
            }
            boletoBancario.Boleto = b;
            boletoBancario.Boleto.Valida();   
            form1.Controls.Add(boletoBancario);
ExayneMourao commented 5 years ago

Ivan muito obrigada, muito mesmo :D

Em ter, 27 de nov de 2018 às 05:44, Ivan Teles notifications@github.com escreveu:

web forms

var c = new Cedente("00.000.000/0000-00", "razao social", "0000", "", "00000", "0") { Codigo = "000000", DigitoCedente = 0, Carteira = "1", MostrarCNPJnoBoleto = true, Endereco = new Endereco { End = "", CEP = "72500-000", Bairro = "Brasília", UF = "DF", Cidade = "Brasília", Numero = "0" } };

        var boletoBancario = new BoletoBancario { CodigoBanco = 756, MostrarEnderecoCedente = true };

        int id = _debito.id.ToString().Length;
        string idM = "";
        if (id > 7)
        {
            throw new Exception("Impossível gerar o boleto");
        }
        else
        {
            var falta = 7 - id;

            for (int i = 0; i < falta; i++)
            {
                idM += "0";
            }
            idM += _debito.id.ToString();
        }

        var b = new Boleto(_debito.vencimento, _debito.receber, "1", idM, c)
        {
            TipoModalidade = "01",
            NumeroParcela = 1,
            NumeroDocumento = idM,
            EspecieDocumento = new EspecieDocumento_Sicoob("1"),
            Sacado = new Sacado(_responsavel.cpf, _aluno.nomeAluno)
            {
                Endereco =
                {
                    End = _responsavel.endResidencial,
                    Bairro = _responsavel.cidResidencial,
                    Cidade = _responsavel.cidResidencial,
                    CEP = _responsavel.cep,
                    UF = _responsavel.estResidencial
                }
            },
            DataDocumento = _debito.data,
            DataProcessamento = _debito.data,
            DataMulta = _debito.vencimento.AddDays(1)
        };

        var li = new List<IInstrucao>
                                 {
                                     new Instrucao(756) { Descricao = string.Format("Sr. Caixa,<br />.")},
                                     new Instrucao(756) { Descricao = string.Format("Cobrar multa de {0:c} após o vencimento.", Convert.ToDouble(_debito.receber*_contrato.multa/100m))},
                                     new Instrucao(756) { Descricao = string.Format("Cobrar mora diária de {0:c} após o vencimento.", Convert.ToDouble(_debito.receber* ( _contrato.juros / 30m)/100m))},
                                     new Instrucao(756) { Descricao = "Não receber após 30 dias do vencimento."}
                                 };
        foreach (var l in li)
        {
            b.Instrucoes.Add(l);
        }

        if (_debito.tipo == 0)
        {
            var inst = new Instrucao(756)
            {
                Descricao =
                    string.Format("Concerder desconto de {0:c} até o vencimento.",
                        Convert.ToDouble(_debito.receber * _contrato.desconto / 100m))
            };
            b.Instrucoes.Add(inst);
        }
        boletoBancario.Boleto = b;
        boletoBancario.Boleto.Valida();
        form1.Controls.Add(boletoBancario);

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-441958962, or mute the thread https://github.com/notifications/unsubscribe-auth/AkZaSXsWb5Nn2iTBh-z6_4LeR10_QYZoks5uzO1fgaJpZM4LZxSi .

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6

ivanteles commented 5 years ago

De nada, deu certo?

ExayneMourao commented 5 years ago

Não, ainda continuou com o mesmo problema, eu enviei para a homologação, acredito que o problema pode ser este. Estou agradando o retorno agora.

Em ter, 27 de nov de 2018 às 09:44, Ivan Teles notifications@github.com escreveu:

De nada, deu certo?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-442029675, or mute the thread https://github.com/notifications/unsubscribe-auth/AkZaScS-HWtzoY3WlVVS9ZSbu8Zgd7wuks5uzSWCgaJpZM4LZxSi .

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6

ExayneMourao commented 5 years ago

Ola Ivan tudo bem? Então, eu consegui gerar o boleto, aliás, mais uma vez obrigada, eu queria só tirar uma dúvida, você conhece alguma maneria de fazer o envio automático da remessa?

Aguardo retorno, Desde já agradeço.

Em ter, 27 de nov de 2018 às 13:40, Exayne Mourão exaynemourao@gmail.com escreveu:

Não, ainda continuou com o mesmo problema, eu enviei para a homologação, acredito que o problema pode ser este. Estou agradando o retorno agora.

Em ter, 27 de nov de 2018 às 09:44, Ivan Teles notifications@github.com escreveu:

De nada, deu certo?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-442029675, or mute the thread https://github.com/notifications/unsubscribe-auth/AkZaScS-HWtzoY3WlVVS9ZSbu8Zgd7wuks5uzSWCgaJpZM4LZxSi .

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6

ivanteles commented 5 years ago

Até que os bancos adotem API para trasmissão. Hoje, a unica forma de automatizar o envio de remessa e captura dos retornos. Na qual já fiz para alguns clientes, são necessários se for uma app WEB Um servidor dedicado e um serviço de VAN, na qual o app da VAN faça o envio sem necessidade de interação humana. Já fiz para o banco Caixa e talvez irei fazer para BRB

ExayneMourao commented 5 years ago

Entendi, dei uma pesquisada também, muito obrigada Ivan :D

Em qui, 6 de dez de 2018 às 06:01, Ivan Teles notifications@github.com escreveu:

Até que os bancos adotem API para trasmissão. Hoje, a unica forma de automatizar o envio de remessa e captura dos retornos. Na qual já fiz para alguns clientes, são necessários se for uma app WEB Um servidor dedicado e um serviço de VAN, na qual o app da VAN faça o envio sem necessidade de interação humana. Já fiz para o banco Caixa e talvez irei fazer para BRB

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BoletoNet/boletonet/issues/372#issuecomment-444782142, or mute the thread https://github.com/notifications/unsubscribe-auth/AkZaSTbV1A0tMiOk5eevfy6jhvUjJev4ks5u2M7ZgaJpZM4LZxSi .

-- Exayne Mourão Curriculo Lattes

http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6 http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K8205854P6