Off: Re: [firebase-br] Problema em calculo de Juros em Store Procedure

Otto ottofuch em terra.com.br
Qua Dez 7 16:57:41 -03 2005


Pensamento antigo:
A solução lógia deve anteceder
a solução matemática (algoritmica) que deve anteceder
a implementação.

Estude, em termos de matemática financeira, o que acontece no mundo real ao
haver um pagamento parcial, para depois pensarm em como implementar.

Você siquer informou se usa juros simples ou compostos.
No seu espaço de soluções você deve enumerar todas alternativas possíveis em
termos lógicos e matemáticos, para depois desenhar os algoritmos, e partir
para a implementação.
100+
Otto

----- Original Message ----- 
From: "Valdecir Neumann" <valdecirneumann em gmail.com>
To: <lista em firebase.com.br>
Sent: Wednesday, December 07, 2005 3:15 PM
Subject: [firebase-br] Problema em calculo de Juros em Store Procedure


Boa Tarde!!!

Se algum amigo da lista já passou por algum tipo semelhante de duvidas e
puder me auxiliar, estou com a seguinte duvida:
O calculo de juros quando ocorre recebimento parcial num esta sendo
realizado de forma correta.

No banco de dados tenho as seguintes tabelas:
Doctos_Receber:
REC_ID, REC_DATA, REC_VENCTO, REC_HCOMPTO, REC_VALOR, HST_ID, CLI_ID, FIL_ID

Baixa_Receber:
LRC_ID, LRC_DATA, LRC_VALOR, REC_ID, HST_ID, LRC_TYPE

No campo LRC_TYPE armazeno o valor P=Principal, J=Juros, M=Multas e
D=Descontos.

Com base nas informações acima, necessito realizar o calculo de juros para
quando o cliente for realizar o pagamento, realizo o calculo do valor do
juros e mostro para o operador, até ai sem problema, o que ocorre e que
inclusive gerou muita reclamação em alguns de nossos clientes, e que o
calculo de juros e realizado da seguinte forma:
Dif_Dias = Data_Atual - Data_Vencimento;
Mas muitos consumidores vão até a empresa e pagam somente uma parte do valor
do documento, e no momento de calcular o juros novamente o cliente acaba
pagando o juro a maior devido a forma de encontrar a diferenca de dias, o
que esta causando certo transtorno.
Segue abaixo parte da store procedure que estou tentando ajustar para
realizar o calculo:
...
      IF (:TEM_JUROS ='S') THEN
      BEGIN
        FOR SELECT DISTINCT LRC_DATA FROM TLCTOS_RECEBER
        WHERE REC_ID = :CODIGO AND LRC_TYPE = 'P'  AND LRC_TYPE ='J'
        INTO :LRC_DATA do
        BEGIN
          if (LRC_DATA IS NULL) then
            DIF_DIAS = 0;
          ELSE
            DIF_DIAS = :DATA_TEMP - :LRC_DATA;
          IF (:DIF_DIAS > 0) THEN
          BEGIN
            SELECT SUM(LRC_VALOR) FROM TLCTOS_RECEBER
            WHERE REC_ID = :CODIGO AND LRC_TYPE='J' AND LRC_DATA = :LRC_DATA
            INTO :REC_JUROS;
            IF (:REC_JUROS IS NULL) THEN REC_JUROS = 0.00;
            REC_JUROS = VLR_JUROS + REC_JUROS;
            SELECT SUM(LRC_VALOR) FROM TLCTOS_RECEBER
            WHERE REC_ID = :CODIGO AND LRC_TYPE='P' AND LRC_DATA = :LRC_DATA
            INTO :VLR_TEMP2;
            if (:vlr_temp2 IS NULL) then  vlr_temp2 = 0.00;
            VLR_TEMP = :VLR_TEMP - :VLR_TEMP2;
            VLR_JUROS =(((:VLR_TEMP) * :DIF_DIAS) * :PERC_JUROS) -
:REC_JUROS;
          END
          DATA_TEMP=LRC_DATA;
          REC_JUROS = :REC_JUROS + :VLR_JUROS;
        END
        DIF_DIAS = :DATA_REF - :DATA_TEMP;
        REC_JUROS = VLR_JUROS + REC_JUROS;
        VLR_JUROS =(((:VLR_TEMP) * :DIF_DIAS) * :PERC_JUROS) - :REC_JUROS;
      END
...
Mas num esta chegando no resultado desejado, se algum amigo poder auxiliar
estou a disposição para prestar maiores informações.
meu email e msn e: valdecirneumann[arroba]gmail.com
Obs: estou utilizando Firebird 1.5.4842

Atenciosamente


Valdecir Neumann
Analista de Sistemas
Desenvolvedor Delphi e Java
Toledo - Paraná - Brasil
www.neumann.eti.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista