Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JOSE MARIA

juros ao dia automaticamente

Recommended Posts

bom dia...tenho uma tabela contasreceber, e preciso que seja incrementado automaticamente no total da duplicata juros ao dia, o percentual seja 3% ao mes, eu tenho o campo juros que calcula manualmente, ai o usuario tera q abrir duplicata por duplicata e colocar o juros...ai fica complicado....ou seja preciso q o sistema ja vai calculando automaticamente, assim todos os debitos ficarao atualizados..ok aguardo ajuda..uso delphi 7 e mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Não compreendi muito bem onde está a sua dúvida, dificuldade.

 

No caso, você poderia fazer um update na sua tabela e gravar o valor da sua duplicata + os 3% correspondente ao porcentagem de juro cobrada ao mês.

 

Exemplo:

 

Valor da duplicata: 100,00

Valor da duplicata + 3% = 103,00

Valor correspondente de juros ao dia: 0,10

 

É isso que você precisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a logica eu sei...mas o que preciso é que o valor da duplicata seja atualizado dia a dia, o calculo direto eu ja tenho, mas preciso que o sistema ja vai alterando o valor da duplicata dia a dia. preciso criar uma funcao que faça este calculo ok...se puder ajudar...desde ja agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só não entendi uma coisa ainda... você quer fazer com que o delphi fique atualizando este valor diariamente diretamente no banco ou quer que um campo na tela mostre este valor apenas? Você não pode por essa lógica diretamente no sql que trás os dados?

 

Se for pra ficar atualizando no banco, não acho boa idéia trocar o valor original da duplicata incrementando-a com os juros diários (se estou entendendo direito o que quer fazer) , acho mais lógico trazer via sql no momento que faz a consulta o valor calculado num campo virtual e exibí-lo ao usuário e, se precisar, ainda poderia usá-lo no seu programa como se fosse um campo comum...

 

Explica melhor o que precisa, dê um exemplo mais claro... do jeito que está colocando fica difícil dar uma sugestão de solução pro seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tarde...eu preciso que o banco atualize diariamente o campo total da duplicata(tabela contasreceber): exemplo: o cliente compra uma escada hoje a 100,00, amanha o valor da duplicata sera de 100,10...entendeu...o cliente cobra 3% ao mes, dividindo 3/30 = 0,10, olha, no meu formulario(contareceber) tem como o usuario colocar juros qdo o cliente for pagar, mas ele quer q o sistema vai alterando automaticamente..ok...

aguardo a ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ai te pergunto uma coisa.... o juro é calculado diariamente sobre o valor original ou é juro sobre juro? Porque se você for ficar atualizando o valor da duplicata com o valor do juro diariamente, no primeiro dia o valor é 100 e o juro disso é 0,10. No dia seguinte, o valor que ele iria usar para calcular o juro não seria mais 100, e sim 100,10, o que já daria diferença... além do que, provavelmente isso seria um trabalho para uma procedure no BD rodando uma job noturna para não impactar na produção, pois se você for executar via delphi isto, como vai garantir que o dado não seja atualizado 2 ou mais vezes no mesmo dia? Se o executável for rodar em mais de uma máquina, como vai controlar a concorrência? De boa, acho que você deve sim ter um campo na tela de consulta de duplicatas que traga este valor com o juro correspondente, mas sem gravá-lo no banco até a efetiva baixa. O mais certo seria você ou atuar diretamente no BD com uma job diária chamando uma procedure de atualização do cálculo ou no delphi só mostrar o valor "atualizado" executando o cálculo na tela e exibindo-o apenas, sem gravar no banco até a baixa efetiva da duplicata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é juros sobre juros, entao nao mexeria no total da duplicata, criaria um outro campo para mostrar o valor da duplicata com juros diariamente? como faço esta job diaria para ele me dar o valor atualizado...aguardo retorno...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto a job, você precisaria ver na área específica do fórum referente ao seu banco de dados para que o pessoal possa te orientar melhor... quanto a forma de calcular, você poderia fazer algo como o esquema abaixo pra pegar o juro de um dia (montei um script no sql server para ilustrar)

 

 

create table #teste ( valor numeric(13,02) null,
                      data_venc datetime null )

insert into #teste
select 100, dateadd(day,-5, getdate())                      

select valor as valor_duplicata,
       data_venc as data_vencimento,
       (valor * 0.03)/30 as juro_dia,
       (valor + ((valor * 0.03)/30) ) as valor_atualizado
from #teste

 

O retorno disto seria:

 

Duplicata: 100,00

Data de Vencimento: 21/09/2013

Juro Dia 1: 0,10

Valor Atualizado (Dia 1): 100,10

 

Ai seria questão de criar uma procedure no seu banco, por o cálculo lá dentro e por uma job diária atualizando os dados (ou pegar a regra matemática para juros sobre juros e migrar ela pro select, que te daria o valor diretamente e não precisaria atualizar nada pra ter o valor atualizado a partir do original).

Compartilhar este post


Link para o post
Compartilhar em outros sites

De boa, sugiro levar esse problema para a área de banco de dados do fórum... já tem uma pré-solução acima, acho que lá será mais fácil o pessoal te sugerir como lidar com esse problema, visto que o assunto já não é mais um problema ligado a área de Delphi e sim de BD. E manjo mais de SQL Server e Interbase.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jose Maria,

O que o Chrnos sugeriu a você, acredito que é o correto e mais simples. Vou explicar...

Você não precisa criar uma trigger pra atualizar o campo automaticamente e sim tratar para que seu select traga corretamente. Quando o usuário final for liquidar a duplicata você atualiza os campos..

 

CREATE  TABLE contasreceber (
  idcontasreceber INT NOT NULL AUTO_INCREMENT ,
  valtotal FLOAT NULL ,
  valjuros FLOAT NULL ,
  dtaReferencia DATE NULL ,
  PRIMARY KEY (idcontasreceber) );
insert into contasreceber (valtotal, valjuros, valoriginal, dtareferencia) 
					values(100,0,100,'2013-10-10');

select CURRENT_DATE,
	   dtaReferencia,
       (CURRENT_DATE - dtaReferencia) as qtdDiaAtraso,
	   (valtotal + (((valtotal * 0.03)/30) * (CURRENT_DATE - dtaReferencia))) as TOTAL
from contasreceber;

Enfim, eu fiz assim e me retornou o resultado que eu queria. Se possível analise e me informe caso fiz algo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.