BOLETO BANCARIO - NOVO FATOR DE VENCIMENTO

TUNUSAT 01/03/2014 15:09:53
#435425
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:


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.
MOUSER 01/03/2014 17:28:21
#435436
Resposta escolhida
Obrigado por postar o artigo, me auxiliou em um sistema q estava trabalhando... pelo menos para mim serviu... Grato...
TUNUSAT 02/03/2014 11:34:41
#435448
MOUSER,


Fiquei na dúvida se este código está certo...
Funcionou direito?
Você mudou alguma coisa?


Tunusat.
TUNUSAT 04/03/2014 08:58:48
#435495
PessoALL,

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.
TUNUSAT 06/03/2014 15:01:50
#435609
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.
Tópico encerrado , respostas não são mais permitidas