Cálculo de dólar

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Cálculo de dólar

Mensagem por JoséQuintas »

Estou retirrando as rotinas do meu aplicativo, então deixar aqui pra quem precisar, ou se algum dia eu precisar novamente.
Caso seja data futura, o valor do dólar é calculado baseado nas variações anteriores.

Código: Selecionar todos

FUNCTION CalcInd()

   LOCAL nSelect := Select(), nIndRef, nValorAnt

   SELECT jpdolar
   GOTO BOTTOM
   DO WHILE jpdolar->dlValor == 0 .AND. ! Bof()
      SKIP -1
   ENDDO
   nValorant := jpdolar->dlValor
   DO WHILE ( jpdolar->dlValor == 0 .OR. jpdolar->dlValor == nValorant ) .AND. ! Bof()
      SKIP -1
   ENDDO
   IF nValorant == 0 .OR. jpdolar->dlValor == 0
      nIndRef := 1
   ELSE
      nIndRef := nValorant / jpdolar->dlValor
      nIndRef := iif( nIndRef < 1, 1, nIndRef )
   ENDIF
   SELECT ( nSelect )

   RETURN nIndRef

FUNCTION CalcDolar( m_Data )

   LOCAL mValor, m_QtDias, m_Int7, m_VlTmp, nIndRef, m_DifDias, nSelect := Select()

   SELECT jpdolar
   IF Encontra( Dtos( m_Data ), "jpdolar","data" )
      mValor := jpdolar->dlValor
   ELSE
      nIndRef := CalcInd()
      SEEK Dtos( m_Data ) SOFTSEEK
      SKIP -1
      IF jpdolar->( Eof() )
         mValor := 1
      ELSE
         m_DifDias := m_Data - jpdolar->dlData
         m_Int7    := int( m_DifDias / 7 )
         m_Data    -= ( m_Int7 * 7 )
         m_QtDias  := m_Int7 * 5
         DO WHILE m_Data > jpdolar->dlData
            IF Dow( m_Data ) > 2
               m_QtDias += 1
            ENDIF
            m_Data -= 1
         ENDDO
         m_VlTmp := ( nIndRef ^ m_QtDias )
         IF m_VlTmp <= 0 .OR. m_vlTmp > 9999
            mValor := jpdolar->dlValor
         ELSE
            mValor := Round( jpdolar->dlValor * m_VlTmp, 2 )
         ENDIF
      ENDIF
   ENDIF
   SELECT ( nSelect )

   RETURN mValor
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Cálculo de dólar

Mensagem por fladimir »

Obrigado
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder