BoletoNet / boleto2net

Nova versão do Boleto.Net
Apache License 2.0
162 stars 139 forks source link

Tutorial implementação #221

Closed Marlonwg closed 3 weeks ago

Marlonwg commented 4 years ago

Como faço emissão de boleto pelo sicredi oque vou precisar ? Preciso de autorização bancaria para isso ? Como gero um boleto pelo vb.net ?

carloscds commented 4 years ago

@marcosgerene Já deu uma olhada no readme ?

Marlonwg commented 4 years ago

@marcosgerene Já deu uma captura no readme?

Ola Carlos Obrigado por responder .. Então, minha aplicação e feita em .net no caso de Boleto é em C # Permite saber como migrar e gerar ou recuperar remessas que você precisará importar todo o código de geração de boleto dentro da aplicação?

Marlonwg commented 4 years ago

@marcosgerene Já deu uma captura no readme?

Eu li o README mas nao entendi muito bem , Vi vários fóruns sobre implementação mas ainda estou em duvida.... :(

carloscds commented 4 years ago

@Marlonwg O Boletonet é uma DLL que você pode adicionar ao seu projeto e utilizar. Os exemplos podem te ajudar a implementar. O BoletoNET emite os boletos e faz remessa e retorno.

Marlonwg commented 4 years ago

@Marlonwg O Boletonet é uma DLL que você pode adicionar ao seu projeto e utilizar. Os exemplos podem te ajudar a implementar. O BoletoNET emite os boletos e faz remessa e retorno.

Então andei fazendo a leitura do mesmo como você disse e uma DLL posso apenas utilizar a DLL eo BoletoNET como exemplo para montar meu próprio gerador de remessas e retorno então?. Se sim podes me ajudar a implementar não me importo em pagar por isso

carloscds commented 4 years ago

@Marlonwg Só você usar o pacote nuget do boleto.net na sua aplicacao, não precisa do código fonte. Depois so seguir o exemplo.

Marlonwg commented 4 years ago

@Marlonwg Só você usar o pacote nuget do boleto.net na sua aplicacao, não precisa do código fonte. Depois so seguir o exemplo.

Eu importei a DLL do Nuget Boleto.Net.dll e NReco.PdfGenerator.dll Estou utilizando o Exemplo do Boleto.net Aonde clica Arquivo > Remessa para gerar para o Banco Sicredi no CNAB 400 e CNAB 240 qual dos dois esta funcionando ? e no caso quando implemento Carlos minha codificação é em .net se quiser posto o código de como esta ficando a conversão caso alguém precisar utilizar.

Mas ate agora não entendi muito bem o funcionamento estou estudando o Boleto.net ainda.

Marlonwg commented 4 years ago

Código abaixo de Geração de Boleto em Vb.net

Sub GerarBoleto()
  GeraDadosSicredi()
End Sub
 Public Sub GeraDadosSicredi()
        Dim conta As ContaBancaria = New ContaBancaria()
        conta.Agencia = "051"
        conta.DigitoAgencia = "2"
        conta.Conta = "13000"
        conta.DigitoConta = "3"
        Dim c As Cedente = New Cedente()
        c.ContaBancaria = conta
        c.CPFCNPJ = "00000000000000"
        c.Nome = "Empresa de Atacado"
        c.Codigo = "12345"
        c.Convenio = 124522
        Dim b As Boleto = New Boleto()
        b.Cedente = c
        b.DataProcessamento = DateTime.Now
        b.DataVencimento = DateTime.Now.AddDays(15)
        b.ValorBoleto = Convert.ToDecimal(2469.69)
        b.Carteira = "1"
        b.VariacaoCarteira = "02"
        b.NossoNumero = String.Empty
        b.NumeroDocumento = "1008073"
        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"
        Dim item1 As Instrucao_Sicredi = New Instrucao_Sicredi(9, 5)
        b.Instrucoes.Add(item1)
        b.Banco = New Banco(748)
        Dim especiedocumento As EspecieDocumento = New EspecieDocumento(748, "A")
        b.EspecieDocumento = especiedocumento
        b.Remessa = New Remessa()
        b.Remessa.TipoDocumento = "A"
        Dim boletos As Boletos = New Boletos()
        boletos.Add(b)
        GeraArquivoCNAB400(b.Banco, c, boletos)
    End Sub
 Public Sub GeraArquivoCNAB400(ByVal banco As IBanco, ByVal cedente As Cedente, ByVal boletos As Boletos, ByVal Optional numeroConvenio As String = Nothing)
        Try
            saveFileDialog.Filter = "Arquivos de Retorno (*.rem)|*.rem|Todos Arquivos (*.*)|*.*"
            If saveFileDialog.ShowDialog() = DialogResult.OK Then
                Dim arquivo As ArquivoRemessa = New ArquivoRemessa(TipoArquivo.CNAB400)
                Dim vMsgRetorno As String = String.Empty
                Dim vValouOK As Boolean = arquivo.ValidarArquivoRemessa(cedente.Convenio.ToString(), banco, cedente, boletos, 1, vMsgRetorno)

                If Not vValouOK Then
                    MessageBox.Show(String.Concat("Foram localizados inconsistências na validação da remessa!", Environment.NewLine, vMsgRetorno), "Teste", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Else
                    arquivo.GerarArquivoRemessa(If(numeroConvenio IsNot Nothing, numeroConvenio, "0"), banco, cedente, boletos, saveFileDialog.OpenFile(), 1)
                    MessageBox.Show("Arquivo gerado com sucesso!", "Teste", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
MrFurlan commented 4 years ago

Pessoal, preciso gerar vários boletos em apenas um PDF, uso o Boleto2Net.. alguém já fez algo nesse sentido?

LarineSoares commented 3 years ago

Pessoal, preciso gerar vários boletos em apenas um PDF, uso o Boleto2Net.. alguém já fez algo nesse sentido?

Sim. No meu caso, separei o método que retorna a impressão em pdf solicitando um byte[] para requisição e na função de criar arquivos, concatenei cada pdf gerado pela solução do boleto2net em list<byte[]> com o seguinte código:

public byte[] ConcatenarByteArrays(List<byte[]> pdfByteContent) { byte[] allBytes; using (MemoryStream ms = new MemoryStream()) { Document doc = new Document(); PdfWriter writer = PdfWriter.GetInstance(doc, ms);

            doc.SetPageSize(PageSize.A4);
            doc.Open();
            PdfContentByte cb = writer.DirectContent;
            PdfImportedPage page;

            PdfReader reader;
            foreach (byte[] p in pdfByteContent)
            {
                reader = new PdfReader(p);
                int pages = reader.NumberOfPages;

                for (int i = 1; i <= pages; i++)
                {
                    doc.SetPageSize(PageSize.A4);
                    doc.NewPage();
                    page = writer.GetImportedPage(reader, i);
                    cb.AddTemplate(page, 0, 0);

                }
            }

            doc.Close();
            allBytes = ms.GetBuffer();
            ms.Flush();
            ms.Dispose();
        }

        return allBytes;
    }

Uso essa lista como retorno aqui:

public void ImprimirPDF(HttpResponse response, byte[] bytes) { response.Clear(); response.Buffer = true; response.ContentType = "aplicativo/pdf"; response.AddHeader("Content-Disposition", $"attachment; filename=Relatório.pdf"); response.Cache.SetCacheability(HttpCacheability.NoCache); response.BinaryWrite(bytes); response.End(); response.Close(); } Espero ter conseguido esclarecer algo. Um abraço!

ferreira37 commented 1 year ago

Boa tarde Pessoal Estou tendo problemas na geração do arquivo de remessa do banco Sicredi com cnab 400, está apresentando o erro de "registro com tamanho incorreto:401", como se tivesse acrescentando um caractere a mais na geração do arquivo. Alguem já passou por isso e conseguiu resolver esse problema?

rafd75 commented 1 year ago

@ferreira37 , boa tarde!

Se não me engano, essa é a única carteira que não implementei. Sei de muita gente com problemas relacionado ao sicredi... Acho que nem os testes unitários estão confiáveis.

Essa carteira precisa de passar por uma revisão no código. Até o momento, nenhum cliente que atendo precisa, e a falta de tempo me impede de fazer isso.

ferreira37 commented 1 year ago

Bom dia @rafd75 Agradeço pela resposta.

wellingtonarantesjunior commented 8 months ago

boa tarde. estou implementado o boleto do banco do brasil, carteira 17/019 CNAB240...fazendo a validação no no validador de layouts do BB, Segmento Q está com o seguinte erro 20.3Q - Cód. Bco. Corresp. na Compensação // Campo numérico: Verificar o preechimento. / Preencher com zeros à esquerda. Quando gero pela dll está colocando espaços vazios na posicao. Baixei o codigo do projeto e vi que reg.Adicionar(TTiposDadoEDI.ediNumericoSemSeparador_, 0210, 003, 0, string.Empty, ' ');

Alterei no arquivo de remessa preenchi com '000' e validei e deu tudo ok

Alguem poderia me ajudar no que pode ser feito...alguma idéia?

rafd75 commented 8 months ago

@wellingtonarantesjunior , boa noite.

O que diz o manual referente a esse campo?