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