BoletoNet / boleto2net

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

Conversão .net #346

Closed Marlonwg closed 1 month ago

Marlonwg commented 2 years ago

Alguém tem esse código convertido para .net Funcionando ??? E um tutorial de como implementa-lo

carloscds commented 2 years ago

@Marlonwg como assim convertido para .NET ?

Marlonwg commented 2 years ago

Para Visual Studio .net pois ele esta montado em C#

carloscds commented 2 years ago

@Marlonwg Mas o C# é tecnologia .NET e funciona no Visual Studio. Só precisa usar uma versão mais atualizada do Visual Studio, por exemplo 2017 ou 2019.

Marlonwg commented 2 years ago

Sim estou usando o Professional 2017 Problema que a Linguagem e C# e a linguagem do meu fonte e Vb.net e não C# vou precisar converter pra utilizar.

carloscds commented 2 years ago

@Marlonwg usa somente o componente, nao precisa usar o fonte. Pega do pacote nuget.

Marlonwg commented 2 years ago

Aonde fica o Tutorial de como implementa-lo ao código para gerar o boleto e para criar o arquivo de remessa e Retorno. Estava usando o boleto Cloud https://boleto.cloud/ , Mas tenho que criar boleto via codigo e criar os cnabs

carloscds commented 2 years ago

@Marlonwg Nao conheco o boleto.cloud, no BoletoNet existe um exemplo nos projetos de testes. Mas estao todos em C#.

Marlonwg commented 2 years ago

Manda o link do exemplo pra gerar o boleto eo Carne mesmo que for em C# da de converter. Eu posso montar em vb.net se usar a dll e fazer a chamada acho que nao teria diferença a linguagem de chamada

carloscds commented 2 years ago

@Marlonwg https://github.com/BoletoNet/boleto2net/tree/master/Boleto2.Net.Testes

Marlonwg commented 2 years ago

Blz vou tentar implementa-lo uma duvida nessa dll a conexão com o banco e feito de maneira autônoma consegue buscar o remessa retorno ou e necessário enviar ao banco e baixar o CNAB ?

carloscds commented 2 years ago

@Marlonwg A DLL nao trata conexao com banco.

Marlonwg commented 2 years ago

Ola carlos tem o código para ler arquivo CNAB400.REM e para Gerar o Retorno para o banco o Formato ? Procurei aqui nos exemplos nao consegui.

carloscds commented 2 years ago

@Marlonwg Cada Banco gera no seu formado CNAB, vc precisa configurar. @rafd75 você tem algum exemplo de geracao de remessa ?

rafd75 commented 2 years ago

@Marlonwg, bom dia.

No projeto de teste, tem rotinas para criar a remessa - exemplo Itaú.

https://github.com/BoletoNet/boleto2net/blob/bd563eaa4d4d83ee2b03885224a4616b08fc1791/Boleto2.Net.Testes/BancoItauCarteira109Tests.cs#L31

Para ler o arquivo retorno, não existe teste, pois necessitaria de um arquivo exemplo... Os que tenho aqui, são de clientes.

--- outra coisa:

Não existe opção para "ler arquivo .REM" ... o arquivo .REM (remessa) é gerado a partir de uma coleção de boletos previamente preenchida pela sua aplicação no componente.

E não existe gerar .RET... acho que na sua pergunta, vc inverteu os termos...

Marlonwg commented 2 years ago

E no caso e Gerar o Arquivo Remessas e preciso ler o retorno.

Marlonwg commented 2 years ago

Segue a ideia para gerar no VB.net

Public Class BoletoNet2 'Modelo funciona do BOLETONET Enum Bancos Bradesco = 1 Sicredi = 2 BancoDoBrasil = 3 End Enum Private Sub btnGerar_Click(sender As Object, e As EventArgs) Handles btnGerar.Click Dim banco As Bancos = Bancos.Bradesco 'O banco receberá o pagamento do referido documento de cobrança pago pelo 'Sacado/ pagador,e creditará a importância paga na conta bancária do cedente/beneficiário. 'Cedente/ Beneficiário: Quem emite a cobrança Ou seja, aquele que irá receber a quantia cobrada.

    If radioButtonSicredi.Checked Then
        banco = Bancos.Sicredi
        GeraBoleto(banco, 99.0, "Nome do Cedente", "123.456.789-10", "811", "81111", "Rua do Cedente", "Cidade do Cedente" _
        , "987.654.321-00", "endereço do sacado", "nome do sacado", "cidade do sacado", "00000-000", "SP")

    ElseIf radioButtonBradesco.Checked Then
        banco = Bancos.Bradesco
        GeraBoleto(banco, 99.0, "Nome do Cedente", "123.456.789-10", "0999", "012345", "Rua do Cedente", "Cidade do Cedente" _
        , "987.654.321-00", "endereço do sacado", "nome do sacado", "cidade do sacado", "00000-000", "SP")

    ElseIf radioButtonBancoBrasil.Checked Then
        banco = Bancos.BancoDoBrasil
        GeraBoleto(banco, 99.0, "Nome do Cedente", "123.456.789-10", "0999", "012345", "Rua do Cedente", "Cidade do Cedente" _
        , "987.654.321-00", "endereço do sacado", "nome do sacado", "cidade do sacado", "00000-000", "SP")
    End If
End Sub
Private Sub GeraBoleto(ByVal banco As Bancos _
     , ByVal valor As Decimal _
     , ByVal cedenteNome As String _
     , ByVal cedenteCpfCnpj As String _
     , ByVal cedenteAgencia As String _
     , ByVal cedenteConta As String _
     , ByVal cedenteRua As String _
     , ByVal cedenteCidade As String _
     , ByVal sacadoCpfCnpj As String _
     , ByVal sacadoEndereco As String _
     , ByVal sacadoNome As String _
     , ByVal sacadoCidade As String _
     , ByVal sacadoCep As String _
     , ByVal sacadoUf As String)

    ' Data de vencimento: após cinco dias 
    Dim vencimento As DateTime = DateTime.Now.AddDays(5)

    ' Dados do Cedente
    Dim cedente As Cedente = New Cedente(cedenteCpfCnpj, cedenteNome, cedenteAgencia, cedenteConta)
    cedente.Endereco = New Endereco() With {
        .End = cedenteRua,
        .Cidade = cedenteCidade
    }

    Dim b As Boleto = Nothing
    ' Gerar o "Nosso Número" pra cada banco
    Dim nossoNumero As String = "99999"
    Select Case banco
        Case Bancos.Bradesco
            nossoNumero = New Random().Next(99999).ToString().PadLeft(11, "0"c)
        Case Bancos.BancoDoBrasil
            nossoNumero = New Random().Next(99999).ToString().PadLeft(11, "0"c)
        Case Bancos.Sicredi
            Dim ano As String = DateTime.Now.Year.ToString().Substring(2)
            Dim id As String = New Random().Next(999).ToString().PadLeft(5, "0"c)

            nossoNumero = String.Format("{0}2{1}", ano, id)
            Dim posto = 10
            cedente.Codigo = String.Format("{0}{1}{2}", cedenteAgencia.PadLeft(4, "0"c), posto, cedenteConta)
    End Select
    ' Aqui vai o vencimento do boleto, o valor, a carteira, o numero, e o cedente
    valor = "99,56"

    Select Case banco
        Case Bancos.Bradesco
            b = New Boleto(vencimento, valor, "09", nossoNumero, cedente)
        Case Bancos.Sicredi
            b = New Boleto(vencimento, valor, "1", nossoNumero, cedente)
        Case Bancos.BancoDoBrasil
            b = New Boleto(vencimento, valor, "16", nossoNumero, cedente)
    End Select

    ' Número do boleto: identificador único para esse boleto
    b.NumeroDocumento = New Random().Next(99999).ToString()

    ' Dados do Sacado: endereço, cidade, CEP
    b.Sacado = New Sacado(sacadoCpfCnpj, sacadoNome)
    b.Sacado.Endereco.[End] = sacadoEndereco
    b.Sacado.Endereco.Cidade = sacadoCidade
    b.Sacado.Endereco.CEP = sacadoCep
    b.Sacado.Endereco.UF = sacadoUf

    Select Case banco
        Case Bancos.Bradesco
            Dim item1 As Instrucao_Bradesco = New Instrucao_Bradesco(9, 5)
            item1.Descricao += " após " & item1.QuantidadeDias.ToString() & " dias corridos do vencimento."
            b.Instrucoes.Add(item1)
        Case Bancos.Sicredi
            Dim item1 As Instrucao_Sicredi = New Instrucao_Sicredi(9, 5)
            Dim Item2 As Instrucao_Sicredi = New Instrucao_Sicredi(7, 0)
            item1.Descricao += " após " & item1.QuantidadeDias.ToString() & " dias corridos do vencimento."
            b.Instrucoes.Add(item1)
            b.Instrucoes.Add(Item2)
            b.EspecieDocumento = New EspecieDocumento_Sicredi("A")
        Case Bancos.BancoDoBrasil
            Dim item1 As Instrucao_BancoBrasil = New Instrucao_BancoBrasil(9, 5)
            item1.Descricao += " após " & item1.QuantidadeDias.ToString() & " dias corridos do vencimento."
            b.Instrucoes.Add(item1)
    End Select
    ' Data do documento e processamento
    b.DataDocumento = DateTime.Now
    b.DataProcessamento = DateTime.Now

    Dim oBoleto As BoletoBancario = New BoletoBancario()
    ' Código do banco
    Select Case banco
        Case Bancos.Bradesco
            oBoleto.Banco = 237
        Case Bancos.Sicredi
            oBoleto.CodigoBanco = 748
        Case Bancos.BancoDoBrasil
            oBoleto.CodigoBanco = 1
    End Select
    oBoleto.Boleto = b
    oBoleto.Boleto.Valida()
    Dim html As String = oBoleto.MontaHtmlEmbedded()

    ' Gera o arquivo PDF
    Dim pdfConv As HtmlToPdfConverter = New HtmlToPdfConverter()
    pdfConv.Zoom = 1.1
    Dim bytesPdf As Byte() = pdfConv.GeneratePdf(html)
    System.IO.File.WriteAllBytes(".\BoletoBancario.pdf", bytesPdf)

End Sub

End Class

Marlonwg commented 2 years ago

Este exemplo que tenho no BoletoNet funciona já no Boletonet2 nao.

rafd75 commented 2 years ago

@Marlonwg , não vou conseguir te ajudar com isso... estou atolado aqui.

Mas esse método de teste do Itau, cria a instância do componente, preenche com 9 títulos, gera o arquivo remessa... gera o arquivo PDF com os boletos...

tem tudo que você precisa aqui:

https://github.com/BoletoNet/boleto2net/blob/bd563eaa4d4d83ee2b03885224a4616b08fc1791/Boleto2.Net.Testes/BancoItauCarteira109Tests.cs#L11