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

Valdecir Neumann valdecirneumann em gmail.com
Qua Dez 7 15:15:18 -03 2005


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



Mais detalhes sobre a lista de discussão lista