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

CNAB 240 SICOOB #636

Open vitorsavi opened 6 years ago

vitorsavi commented 6 years ago

como vi o pessoal falando que o 400 o Sicoob vai tirar fora, iremos fazer o cnab 240, porem vimos que falta essa parte public string GerarDetalheRemessaCNAB240(Boleto boleto, int numeroRegistro, TipoArquivo tipoArquivo) { throw new NotImplementedException("Função não implementada."); }

alguém ja usa o cnab 240 do sicoob com esta parte implementada?

Obrigado!

eriveltoncabral commented 6 years ago

Tem uma implementação, vi que estão enviando por e-mail.

https://github.com/BoletoNet/boletonet/issues/604

EduardoMoreira commented 6 years ago

A implementação correta baseia-se, basicamente, em chamar a função GerarArquivoRemessapresente na classe BoletoNet.ArquivoRemessaCNAB240, ao invés da função GerarDetalheRemessaCNAB240 na classe BoletoNet.Banco_Sicoob

NissiusRibas commented 6 years ago

O desenvolvimento do arquivo de remessa do Sicoob esta incorreto. Falta arquivo de remessa do segmento S, só tem do P,Q, R.

Que for pegar tem que ajustar.

FabioDlink commented 6 years ago

@noiatec Conseguiu fazer a remessa do sicoob?

FabioDlink commented 6 years ago

@vitorsavi estou como mesmo problema, conseguiu resolver?

ivanteles commented 6 years ago

Implementando o segmento que falta!

ivanteles commented 6 years ago

@vitorsavi @noiatec @FabioDlink O segmento S é opcional é usado para casos de impressão. Pode ser gerado a remessa normalmente sem a implementação do mesmo. Assim como os demais bancos

eternoscav commented 6 years ago

Boa noite alguém teria algum exemplo funcional do arquivo de remessa pela dll do boletonet.

Obrigado.

ivanteles commented 6 years ago

Sim. posto amanhã

eternoscav commented 6 years ago

Bom dia Ivan! Assim que puder me envie por favor para poder dar continuidade na implementação.

Obrigado.

ivanteles commented 6 years ago

Segue:

var c = new Cedente("00.000.000/0000-00", "RAZAO SOCIAL", "AGENCIA", "", "CONTA", "DIGITO")
        {
            NumeroSequencial = 1,
            Codigo = "CODIGO FORNECIDO PELO BANCO",
            DigitoCedente = 0,
            Carteira = "1",
            MostrarCNPJnoBoleto = true,
            Endereco = new Endereco
            {
                End = "",
                CEP = "",
                Bairro = "",
                UF = "",
                Cidade = "",
                Numero = ""
            }
        };

            int id = "100";
            string idM = "";
            if (id > 7)
            {
                throw new Exception("Impossível gerar o boleto");
            }
            var falta = 7 - id.Length;
            for (int j = 0; j < falta; j++)
            {
                idM += "0";
            }

            var b = new Boleto(i.vencimento, i.receber, "1", idM, c)
            {
                ModalidadeCobranca = 1,
                TipoModalidade = "01",
                NumeroParcela = 1,
                Remessa = new Remessa(TipoOcorrenciaRemessa.EntradaDeTitulos),
                DataDocumento = i.data,
                Banco = new Banco(756),
                NumeroDocumento = idM,
                EspecieDocumento = new EspecieDocumento_Sicoob("1"),
                Aceite = "A",
                Sacado = new Sacado(i.cpf, i.nome)
                {
                    Endereco =
                    {
                        End = i.endResidencial,
                        Bairro = i.cidResidencial,
                        Cidade = i.cidResidencial,
                        CEP = i.cep,
                        UF = i.estResidencial
                    }
                },
                DataProcessamento = i.data,
                DataMulta = i.vencimento.AddDays(1),
                DataJurosMora = i.vencimento.AddDays(1),
                DataDesconto = i.vencimento,
                JurosMora = Math.Round(Convert.ToDecimal(i.receber * ((i.juros / 30m) / 100m)), 2),
                ValorDesconto = Math.Round(Convert.ToDecimal(i.receber * (i.desconto / 100m)), 2),
                ValorMulta = Math.Round(Convert.ToDecimal(i.receber * (i.multa / 100m)), 2),
            };
 boletos.Add(b);
        var boletos = new Boletos() {Banco = new Banco(756), Cedente = c};
            Stream stream = new FileStream("d:\RMESSA.TXT", FileMode.Create);
        remessa.GerarArquivoRemessa(c.Codigo, new Banco(756), c, boletos, stream, 1);
eternoscav commented 6 years ago

Muito obrigado pela atenção vou dar uma estudado no código. Qualquer coisa volto a postar aqui.

eternoscav commented 6 years ago

Será que fica muito difícil você colocar as informações dos parâmetros. Exemplo: var b = new Boleto("30/08/2018", 10, "1", "9000002", c)

Porque no meu caso dá "Erro ao gerar arquivo remessa." Estou achando que pode ser o nosso número ou alguma informação que estou passando errado.

Obrigado.

eternoscav commented 6 years ago

Ele chega nessa linha "objRemessa.GerarArquivoRemessa(numConvenio, New Banco(CodBanco), c, boletos, arq, numArqRemessa)"

e não passa

eternoscav commented 6 years ago

lembrando que tenho funcionando já Banco do Brasil, Caixa, Sicredi, Bradesco.

ivanteles commented 6 years ago

Não passa por que? da que erro? pois pra mim ta perfeito!

eternoscav commented 6 years ago

É alguma coisa que estou passando errado, e não sie o que é será que se eu postar o meu código aqui ajuda?

eternoscav commented 6 years ago

Segue o meu código:

Dim c As Cedente = New Cedente()

            Dim b As Boleto
            Dim boletoBancario As BoletoBancario = New BoletoBancario()
            boletoBancario.CodigoBanco = CodBanco

            Dim codigo As String = Cedente_Codigo.Replace("-", "").Replace(" ", "")
            c = New Cedente("00.000.000/0000-00", "RAZAO SOCIAL", Cedente_Agencia, "", Cedente_Conta)
            c.Codigo = codigo
            c.DigitoCedente = 0
            c.Carteira = num_carteira
            c.NumeroSequencial = 1
            c.MostrarCNPJnoBoleto = True
            c.Endereco = New Endereco()
            c.Endereco.End = ""
            c.Endereco.CEP = ""
            c.Endereco.Bairro = ""
            c.Endereco.UF = ""
            c.Endereco.Cidade = ""
            c.Endereco.Numero = ""

            b = New Boleto(vencimento, 10, "1", "90000002", c)

            b.ModalidadeCobranca = 1
            b.TipoModalidade = "01"
            b.NumeroParcela = 1

            b.Remessa = New Remessa(TipoOcorrenciaRemessa.EntradaDeTitulos)
            b.DataDocumento = DataDocumento
            b.Banco = New Banco(756)
            b.NumeroDocumento = "900000002"
            b.EspecieDocumento = New EspecieDocumento_Sicoob("1")
            b.Aceite = "A"

            b.Sacado = New Sacado(Sacado_CNPJ_CPF, Sacado_Nome)
            b.Sacado.Endereco.End = Sacado_Endereco
            b.Sacado.Endereco.Bairro = Sacado_Bairro
            b.Sacado.Endereco.Cidade = Sacado_Cidade
            b.Sacado.Endereco.CEP = Sacado_CEP
            b.Sacado.Endereco.UF = Sacado_UF

            b.DataProcessamento = Date.Now
            b.DataMulta = vencimento.AddDays(1)
            b.DataJurosMora = vencimento.AddDays(1)
            b.DataDesconto = vencimento
            b.JurosMora = 1
            b.ValorDesconto = 1
            b.ValorMulta = 1

            boletoBancario.AjustaTamanhoFonte(10, 10, 10, 10)
            boletoBancario.FormatoCarne = carne

            boletoBancario.GerarArquivoRemessa = True
            boletoBancario.RemoveSimboloMoedaValorDocumento = True

            b.Remessa = New Remessa()
            b.Remessa.TipoDocumento = "1"

            boletoBancario.Boleto = b

            boletoBancario.Boleto.Valida()

            Dim objRemessa As New ArquivoRemessa(TipoArquivo.CNAB240)
            Dim arq As System.IO.FileStream = New System.IO.FileStream(nome_arq_remessa, System.IO.FileMode.Append)
            Dim boletos As Boletos = New Boletos()
            Dim strMensagem As String = ""

            boletos.Add(b)

            numArqRemessa = Convert.ToInt32(contRem)
            objRemessa.GerarArquivoRemessa(numConvenio, New Banco(CodBanco), c, boletos, arq, numArqRemessa)

ivanteles commented 6 years ago

Bom aqui -> 90000002 deve ser somente 7 está com 8 num_carteira ta igual a "1"?

eternoscav commented 6 years ago

Bom vou fazer o seguinte vou colocar o código com o valores! Só um momento.

eternoscav commented 6 years ago
    ### Dim c As Cedente = New Cedente()
            Dim b As Boleto
            Dim boletoBancario As BoletoBancario = New BoletoBancario()
            boletoBancario.CodigoBanco = 756

            c = New Cedente("00337989000191", "NORTE NOVO COMERCIO DE FUMOS LTDA", "4355", "", "18434")
            c.Codigo = 346098
            c.DigitoCedente = 0
            c.Carteira = "1"
            c.NumeroSequencial = 1
            c.MostrarCNPJnoBoleto = True
            c.Endereco = New Endereco()
            c.Endereco.End = ""
            c.Endereco.CEP = ""
            c.Endereco.Bairro = ""
            c.Endereco.UF = ""
            c.Endereco.Cidade = ""
            c.Endereco.Numero = ""

            b = New Boleto("30/08/2018", 20.0 , "1", "9000686", c)

            b.ModalidadeCobranca = 1
            b.TipoModalidade = "01"
            b.NumeroParcela = 1

            b.Remessa = New Remessa(TipoOcorrenciaRemessa.EntradaDeTitulos)
            b.DataDocumento = "31/07/2018"
            b.Banco = New Banco(756)
            b.NumeroDocumento = "000686"
            b.EspecieDocumento = New EspecieDocumento_Sicoob("1")
            b.Aceite = "A"

            b.Sacado = New Sacado("09548304000132", "A. JOAO DE OLIVEIRA - MINIMERCADO - ME")
            b.Sacado.Endereco.End = "SILVEIRA DOS SANTOS"
            b.Sacado.Endereco.Bairro = "CENTRO"
            b.Sacado.Endereco.Cidade = "RIBEIRAO DO PINHAL"
            b.Sacado.Endereco.CEP = "86490-000"
            b.Sacado.Endereco.UF = "PR"

            b.DataProcessamento = "31/07/2018"
            b.DataMulta = "01/08/2018"
            b.DataJurosMora = "01/08/2018"
            b.DataDesconto = vencimento
            b.JurosMora = 1
            b.ValorDesconto = 1
            b.ValorMulta = 1

            boletoBancario.AjustaTamanhoFonte(10, 10, 10, 10)
            boletoBancario.FormatoCarne = False

            boletoBancario.GerarArquivoRemessa = True
            boletoBancario.RemoveSimboloMoedaValorDocumento = True

            b.Remessa = New Remessa()
            b.Remessa.TipoDocumento = "1"

            boletoBancario.Boleto = b

            boletoBancario.Boleto.Valida()

            Dim objRemessa As New ArquivoRemessa(TipoArquivo.CNAB240)
            Dim arq As System.IO.FileStream = New System.IO.FileStream("X:\Sistema\prj\temp\ 34609-8731.crm", System.IO.FileMode.Append)
            Dim boletos As Boletos = New Boletos()
            Dim strMensagem As String = ""

            boletos.Add(b)

            objRemessa.GerarArquivoRemessa("09", New Banco(756), c, boletos, arq, 2)### 
eternoscav commented 6 years ago

Veja se consegue ver onde estou errando no valores!!

ivanteles commented 6 years ago

Falta o digito da conta aqui var c = New Cedente("00337989000191", "NORTE NOVO COMERCIO DE FUMOS LTDA", "4355", "", "18434") var c = new Cedente("00.000.000/0000-00", "RAZAO SOCIAL", "AGENCIA", "", "CONTA", "DIGITO")

Aqui -> b.NumeroDocumento = "000686" não deveria ser o mesmo que b.NumeroDocumento = "9000686"

aqui -> objRemessa.GerarArquivoRemessa("09", New Banco(756), c, boletos, arq, 2)

ao inves de 09 deve passar o código fornecido pelo banco (código do convênio) no seu caso acho que 346098

eternoscav commented 6 years ago

Ivan muito obrigado pela ajuda o seu código conseguiu clarear bem as coisas e consegui gerar o arquivo. Sucesso.

cezarant commented 6 years ago

@vitorsavi tudo bem? Pelo que verifiquei, parece que a thread foi concluída. Teria como fechá-la?

moraisamilton commented 5 years ago

Boa tarde, eu fiz algumas alteração no código do arquivo "Boleto.Net\Banco\Banco_Sicoob.cs" e aqui esta validando. Tem este validador da sicoob que pode ajuda bastante. http://www.sicoob.com.br/validador-cnab240-cobranca Esta semana vou fazer a homologação.