Ir para conteúdo
  • Cadastre-se

dev botao

Imprimir N Titulos


Ver Solução Respondido por Mario -,
  • Este tópico foi criado há 1017 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Solution
Postado

Conforme já expliquei sou novo nas Lib ACBr mas estou gostando muito, portanto gostaria de postar aqui a forma que fiz para N Titulos usando as Classes.

O codigo abaixo se alguém achar bom, por favor pode otimizar.

Parabéns a equipe ACBr.

    Dim Boleto As New ACBrLib.Boleto.ACBrBoleto
    Dim Titulo As New ACBrLib.Boleto.Titulo
    Dim Titulos As New List(Of ACBrLib.Boleto.Titulo)
    
    Dim N As Int32 = 1
    Boleto.LimparLista()
    Call DataRowObject(drConta, Boleto.Config.Banco, "Banco.") 'DataColumn.name=Prefixo+Property.Name, caso seja necessário
    Call DataRowObject(drConta, Boleto.Config.Cedente, "Conta.")
    Call DataRowObject(drConta, Boleto.Config.Cedente, "Cedente.")

    For Each dr As DataRow In tbCompromisso.Rows
        Titulo = New ACBrLib.Boleto.Titulo
        Titulo.NossoNumero = N.ToString("0000000000")
        Call DataRowObject(dr, Titulo, "Titulo.")
        Call DataRowObject(dr, Titulo.Sacado, "Sacado.")
        Call DataRowObject(dr, Titulo.Sacado.Avalista, "Sacado.Avalista.")

        Titulos.Add(Titulo)
    Next

    Boleto.IncluirTitulos(Titulos.ToArray())
    Boleto.Imprimir()
    
    
    'Função para popular os Types
    
        Private Shared Sub DataRowObject(dr As DataRow, sender As Object, Optional ByVal Prefixo As String = "")
        'ler propriedades - obter valor em datarow.column - atribuir valor a propriedade
        Dim T As Type = sender.GetType()
        Dim value As Object, Col As String, obj As Object

        For Each P In T.GetProperties(BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.NonPublic)
            Select Case True
                Case dr.Table.Columns(Prefixo & P.Name) IsNot Nothing
                    Col = Prefixo & P.Name
                Case dr.Table.Columns(P.Name) IsNot Nothing
                    Col = P.Name
                Case Else : Continue For
            End Select

            If String.IsNullOrEmpty(dr(Col).ToString) Then Continue For

            value = P.GetValue(sender)

            Select Case P.PropertyType()
                Case GetType(Integer)
                    Integer.TryParse(dr(Col), value)
                Case GetType(Boolean)
                    value = CBool(Integer.TryParse(dr(Col), value))
                Case GetType(String)
                    value = dr(Col).ToString
                Case GetType(System.Decimal), GetType(System.Double)
                    Decimal.TryParse(dr(Col), NumberStyles.Number, NumberFormatInfo, value)
                Case GetType(System.DateTime)
                    DateTime.TryParseExact(dr(Col), {"dd/MM/yyyy"}, Nothing, DateTimeStyles.AssumeLocal, value)
                Case Else
                    Select Case True
                        Case P.PropertyType.BaseType Is (GetType(System.Enum))
                            Integer.TryParse(dr(Col), value)
                        Case P.PropertyType.FullName.Contains("System.DateTime") 'este case é devido não saber ainda como pegar classe Nullable-datetime
                            DateTime.TryParseExact(dr(Col), {"dd/MM/yyyy"}, Nothing, DateTimeStyles.AssumeLocal, value)
                        Case P.PropertyType.FullName.Contains("System.Decimal") 'este case é devido não saber ainda como pegar classe Nullable-datetime
                            Decimal.TryParse(dr(Col), NumberStyles.Number, NumberFormatInfo, value)
                        Case Else
                            value = New Generic.List(Of String) From {dr(Col).ToString}
                            Continue For

                    End Select
            End Select
            P.SetValue(sender, value)
        Next

    End Sub

    
 

A liguagem utilizada VB.NET VS 2019

 

  • Curtir 2
  • Este tópico foi criado há 1017 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.