[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