BOLETO BANCARIO - NOVO FATOR DE VENCIMENTO
                    PessoALL por favor!
Baseado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.
Arrumei no sistema que trabalho uma função para o cálculo de uma [Ô]Data de Vencimento[Ô] recebendo como parâmetro um [Ô]Fator de Vencimento[Ô] e preciso validar. Meu problema é que recebo o FATOR e devolvo a DATA ... isto complica, pois agora temos duas faixas de trabalho... muito gambiware...
Já montei o código e gostaria de saber se alguém pode me ajudar e testar para ver se está certo.
O arquivo anexo: [Ô]FatorVencimento.rar[Ô] tem estes quatro arquivos a saber:
- clsFatorVencimento.cls -> Classe onde está a função que eu preciso testar;
- frmFV.frm -> Form criando um ambiente de teste;
- prjFatorVencimento.vbp -> Visual Basic Project;
- prjFatorVencimento.vbw -> Visual Basic ... que é mesmo o [Ô]w[Ô]?
A função que eu preciso testar é a:
Se você achar algo errado, ou quiser mudar o código para um mais eficiente ou outro jeito, pode me enviar? Depois eu peço para postar aqui na lista de código ... não sei se o pessoal gostaria ...
A grande mancada (que eu acho) é que a [Ô]range[Ô] que ele fala pode se deslocar erroneamente pelo fato de eu ter como parâmetro de entrada somente o Fator de Vencimento. Como vou saber se a data é a de antes do novo fator ou se é depois do novo fator? O usuário pode me mandar um fator baseado em uma data bem antiga (e não permitida) e eu devolver uma data futura para ele... sacou?
Obrigado,
Tunusat.
            Baseado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.
Arrumei no sistema que trabalho uma função para o cálculo de uma [Ô]Data de Vencimento[Ô] recebendo como parâmetro um [Ô]Fator de Vencimento[Ô] e preciso validar. Meu problema é que recebo o FATOR e devolvo a DATA ... isto complica, pois agora temos duas faixas de trabalho... muito gambiware...
Já montei o código e gostaria de saber se alguém pode me ajudar e testar para ver se está certo.
O arquivo anexo: [Ô]FatorVencimento.rar[Ô] tem estes quatro arquivos a saber:
- clsFatorVencimento.cls -> Classe onde está a função que eu preciso testar;
- frmFV.frm -> Form criando um ambiente de teste;
- prjFatorVencimento.vbp -> Visual Basic Project;
- prjFatorVencimento.vbw -> Visual Basic ... que é mesmo o [Ô]w[Ô]?
A função que eu preciso testar é a:
Public Function fuFatorVencimento(Fator As String) As String
Dim vltDataCalcVelho As Date
Dim vltDataCalcNovo As Date
Dim strFatorHoje As String
Dim strFatorVencido As String
Dim strFatorAVencer As String
Dim strFatorTransicao As String
Dim dtaVencida As Date
Dim dtaAVencer As Date
Dim dtaHOJE As Date
Dim teste1 As String
Dim teste2 As String
Dim strDataCalculo As String
    fuFatorVencimento = [Ô][Ô]
        
    dtaHOJE = Date
    dtaHOJE = [Ô]12/03/2014[Ô]
    dtaHOJE = mDtHOJE
    [ô]dtaHOJE = [Ô]13/03/2014[Ô]
    [ô]dtaHOJE = [Ô]14/03/2014[Ô]
    [ô]dtaHOJE = [Ô]15/03/2014[Ô]
    [ô]dtaHOJE = [Ô]16/03/2014[Ô]
    [ô]dtaHOJE = [Ô]25/07/2015[Ô]
    [ô]dtaHOJE = [Ô]23/02/2035[Ô]
    If Val(Left(Fator, 1)) > 0 Then
        [ô]28/02/2014
        dtaVencida = DateAdd([Ô]d[Ô], -3000, dtaHOJE)
        dtaAVencer = DateAdd([Ô]d[Ô], 5500, dtaHOJE)
        
        strFatorHoje = CalculaFatorDeVencimento(Conversion.CStr(dtaHOJE))
        strFatorVencido = strFatorHoje - 3000
        strFatorAVencer = strFatorHoje + 5500
        
        If strFatorVencido < 0 Then strFatorVencido = strFatorVencido + 9000
        If strFatorAVencer > 9999 Then strFatorAVencer = strFatorAVencer - 9000
        
        If strFatorVencido > strFatorAVencer Then
            strFatorTransicao = strFatorVencido
            strFatorVencido = strFatorAVencer
            strFatorAVencer = strFatorTransicao
        End If
        
        vltDataCalcVelho = CDate([Ô]03/07/2000[Ô]) + (Val(Fator) - 1000)
        vltDataCalcNovo = CDate([Ô]22/02/2025[Ô]) + (Val(Fator) - 1000)
        
        If dtaVencida <= vltDataCalcVelho And dtaAVencer >= vltDataCalcVelho Then
            fuFatorVencimento = vltDataCalcVelho
        End If
        If dtaVencida <= vltDataCalcNovo And dtaAVencer >= vltDataCalcNovo Then
            fuFatorVencimento = vltDataCalcNovo
        End If
        [ô]Eliminar esta faixa: Range de Segurança nessa data.
        [ô]Exemplo: em [Ô]12/03/2014[Ô] -> fator 2501 ao fator 2999 (499 fatores)
        If Fator > strFatorVencido And Fator < strFatorAVencer Then
        [ô]If Fator > 2502 And Fator < 3000 Then
            fuFatorVencimento = [Ô][Ô]
        End If
    
    End If
End Function
Se você achar algo errado, ou quiser mudar o código para um mais eficiente ou outro jeito, pode me enviar? Depois eu peço para postar aqui na lista de código ... não sei se o pessoal gostaria ...
A grande mancada (que eu acho) é que a [Ô]range[Ô] que ele fala pode se deslocar erroneamente pelo fato de eu ter como parâmetro de entrada somente o Fator de Vencimento. Como vou saber se a data é a de antes do novo fator ou se é depois do novo fator? O usuário pode me mandar um fator baseado em uma data bem antiga (e não permitida) e eu devolver uma data futura para ele... sacou?
Obrigado,
Tunusat.
                    Obrigado por postar o artigo, me auxiliou em um sistema q estava trabalhando... pelo menos para mim serviu... Grato...
                
            
                    MOUSER,
Fiquei na dúvida se este código está certo...
Funcionou direito?
Você mudou alguma coisa?
Tunusat.
            Fiquei na dúvida se este código está certo...
Funcionou direito?
Você mudou alguma coisa?
Tunusat.
                    PessoALL,
Para quem quiser testar, segue o restante do código...
[][ô]s,
Tunusat.
            Para quem quiser testar, segue o restante do código...
Public Function CalculaFatorDeVencimento(strFatorDeVencimento As String) As String
    CalculaFatorDeVencimento = DateDiff([Ô]d[Ô], [Ô]07/10/1997[Ô], strFatorDeVencimento)
    If Len(CalculaFatorDeVencimento) < 3 Then CalculaFatorDeVencimento = String$(4 - Len(Trim(CalculaFatorDeVencimento)), [Ô]0[Ô]) & Trim(CalculaFatorDeVencimento)
    
    [ô]Ajuste para nova legislação
    If CalculaFatorDeVencimento > 9999 Then
        CalculaFatorDeVencimento = CalculaFatorDeVencimento - 9000
        [ô]Se mesmo assim estourar [ô]9999[ô] ... ZERA!
        If CalculaFatorDeVencimento > 9999 Then CalculaFatorDeVencimento = 0
    End If
    [ô]Para a próxima [ô]Gambiware[ô] substitua o [Ô]IF[Ô] acima pelo while abaixo:
    [ô]Exemplo: Coloque a data de: [Ô]13/10/2490[Ô]
[ô]    Do While CalculaFatorDeVencimento > 9999
[ô]        CalculaFatorDeVencimento = CalculaFatorDeVencimento - 9000
[ô]    Loop
End Function
[][ô]s,
Tunusat.
                    Obrigado MOUSER,
Pedi para o FOXMAN subir o arquivo para as coleções do VBMania.
Ficará com este nome: [Ô]BOLETO BANCARIO - NOVO FATOR DE VENCIMENTO[Ô]
VB/VBA Todas as versões / Dicas / Tratamento de Texto ... err ... será que seria melhor [Ô]Tratamento de código[Ô] ... acho que errei de novo...
[][ô]s,
Tunusat.
            Pedi para o FOXMAN subir o arquivo para as coleções do VBMania.
Ficará com este nome: [Ô]BOLETO BANCARIO - NOVO FATOR DE VENCIMENTO[Ô]
VB/VBA Todas as versões / Dicas / Tratamento de Texto ... err ... será que seria melhor [Ô]Tratamento de código[Ô] ... acho que errei de novo...
[][ô]s,
Tunusat.
                        Tópico encerrado , respostas não são mais permitidas