Fórum Calculo de juros e multa #214248

15/02/2004

0

Oi, Pessoal.

Eu tenho uma tabela paradox em delphi 6 com os seguintes campos

Dt.venc
Valor
Dt.pag
Juros (1¬ dia ou seja 30¬ mes)
ValorJuros
Valortotal
Multa (2¬ em cima do total)

Vamos ver se da para ser claro: eu quero informar a ´data do vencimento´ TaB o ´valor´ TaB a ´data do pagamento´ TaB e automaticamente o juros me aparece no campo, TaB automaticamente o valor do ´juros´, TaB automaticamente o ´Valor Total´ TaB ´Multa de 2¬ em cima do ´valor total´ TaB atualiza o ´Valor Total´

Vixi! sera que deu para enternder? :lol:

Agradeço desde Já


Wagner

Wagner

Responder

Posts

15/02/2004

Marco Salles

Crie Um Camp Calculado Na Sua Tabela Chamado ´ValorTotal´ Usando O Editor De Fileds(Duplo Clique No Componente Table1) Selecione a Opção NewAlld e Depois Crie o Campo ValorTotal
No Evento Table1CalcFields Da Tabela Escreva o Código:

If Dtpag.IsNul Then
if DtPag > DtVenc.Value Then //Tem Que Cobrar Juros e Multa
ValorTotal.Value:=Valor + Valor*(Multa + (Dtpag.Value-DtVenc.Value));
else
ValorTotal.Value:=Valor; // Não Cobra Juros Pagou Dentro Do Prazo


Responder

Gostei + 0

15/02/2004

Wagner

Eu tenho uma tabela paradox em delphi 6 com os seguintes campos

Dt.venc
Valor
Dt.pag
Juros (1¬ dia ou seja 30¬ mes)
ValorJuros
[color=red:ebd6d58741]Valortotal[/color:ebd6d58741]
Multa (2¬ em cima do total)

Esse campo Valor Total que eu tenho que criar no editor e independente do campo na tabela que eu já tenho criado ou seja e outro campo


Responder

Gostei + 0

15/02/2004

Marco Salles

Em Vez De Voce Criar Na Tabela o Campo ValorTotal Crie-o O Mesmo Campo Usando o Editor De Fields...Se Este Campo Já Existir Na Sua Tabela Apague-o .. Se Voce Quiser Ver O efeito Sem Antes Apagar Então Mude O Nome Do Campo Calculado Criado No EDITOR Para ValorJuros. Rode O Programa e Analise o Resultado.. Para Esta Última Opção Não Esqueça De Mudar o Valor De ValorTotal Para ValorJuros No Evento No Table1CalcFields Da Tabela


Responder

Gostei + 0

15/02/2004

Wagner

:lol: Seguinte

Abre uma janela com os seguintes dados

Field proprieties
Onde eu coloco Name: ValorTotal
Automaticamente Type: Float
Esta selecionado: Calculated
Quando dou OK : Data field not permitted on open dataset

O que eu esqueci?


Responder

Gostei + 0

15/02/2004

Edilcimar

fechar a tabela


Responder

Gostei + 0

15/02/2004

Marco Salles

Estou Abismado :?: Recomendo a Principio Salvar , Sair Do Delphi e Novamente Entrar No Programa e Repetir O Processo


Responder

Gostei + 0

15/02/2004

Wagner

Deu certo a criação do campo, então fiz dessa forma no evento calcfield da tabela Fiz dessa forma

begin
If Datapag.IsNul Then
if DataPag > DataVenc.Value Then
ValorTotal.Value:=Valor + Valor*(Multa + (Datapag.Value-DataVenc.Value));
else
ValorTotal.Value:=Valor;

mais esta dando esses erros
[Error] U_cadinadimp.pas(339): Undeclared identifier: ´Datapag´
[Error] U_cadinadimp.pas(340): Undeclared identifier: ´DataVenc´
[Error] U_cadinadimp.pas(349): Statement expected but end of file found


Responder

Gostei + 0

15/02/2004

Marco Salles

Wagner, Observe Que Alem De Criar O Campo Calculado Voce Devia Ter Escolhido Também a Opção [color=red:eabe38270f]New Add All[/color:eabe38270f] Fields No Editor De Campos...Faça Isto Que a Mensagem Irá Desaparecer


Responder

Gostei + 0

15/02/2004

Wagner

procedure TF_Form.dadosCalcFields(DataSet: TDataSet);
begin
[color=red:43580f8180]If Datapag[/color:43580f8180].IsNul Then
if DataPag > DataVenc.Value Then
ValorTotal.Value:=Valor + Valor*(Multa + (Datapag.Value-DataVenc.Value));
else
ValorTotal.Value:=Valor;
end;

end.
:cry: Continua os mesmo erros na compilação


Responder

Gostei + 0

15/02/2004

Marco Salles

O Passo Seguinte é [color=red:3fbb465506]ATENTAR [/color:3fbb465506]Para Os Nomes Usados ...Voce Tem Que Escrever a Rotina Com os Mesmos Nomes Do Componentes Da Sua Tabela Os Quais Forão Criados em Tempo De Projeto Quando Voce Deu o Comando [color=red:3fbb465506]Add All Fileds[/color:3fbb465506]....
Escreva a Rotina Abaixo Com Os Nomes Que Estão No Editor De Campos..
Estou Vendo Aqui Que Esqueci De Colocar a Propiedade VALUE , Portanto Corrija...
procedure TF_Form.dadosCalcFields(DataSet: TDataSet);
begin
If Datapag.IsNul Then
if DataPag > DataVenc.Value Then
ValorTotal.Value:=Valor.[color=red:3fbb465506]Value [/color:3fbb465506]+ Valor.[color=red:3fbb465506]Value[/color:3fbb465506]*(Multa.[color=red:3fbb465506]Value [/color:3fbb465506]+ (Datapag.Value-DataVenc.Value));
else
ValorTotal.Value:=Valor.[color=red:3fbb465506]Value[/color:3fbb465506];
end;


Responder

Gostei + 0

15/02/2004

Wagner

acho que ainda estou esquecendo alguma coisa

begin
[color=red:be499b15d6]If Datapag[/color:be499b15d6].IsNul then
if DataPag.value > DataVenc.value Then
ValorTotal.Value:=Valor.value + atraso.value*(Multa.value + (Datapag.Value-DataVenc.Value));
else
ValorTotal.Value:=Valor.value;

[Error] U_cadinadimp.pas(339): Undeclared identifier: ´Datapag´
[Error] U_cadinadimp.pas(340): ´THEN´ expected but identifier ´value´ found
[Error] U_cadinadimp.pas(349): Statement expected but end of file found


Tentei tambem alguma coisa assim, o que eu queria era a quantidade de dias que o meu percentua de juros 1¬ AM multiplicar pelo tota e dividir por 100 e vou ter o valor do juros

datapag-datavenc =atraso, atraso * total /100 + valor * 2/100 = totalgeral
mais nao estou acertando o codigo


Responder

Gostei + 0

15/02/2004

Marco Salles

Agora Vai Dar Certo. Nós Ja Estamos Cansados é Normal De Realisarmos Alguns Deslises...

acho que ainda estou esquecendo alguma coisa

begin
If Datapag.IsNul then
if DataPag.value > DataVenc.value Then
ValorTotal.Value:=Valor.value + atraso.value*(Multa.value + ValorJuros.Value*(Datapag.Value-DataVenc.Value[color=red:4a6a438920])) //TEM QUE TIRAR VIRGULA[/color:4a6a438920]else
ValorTotal.Value:=Valor.value;

A DIVISÃO POR CEM É UM PASSO PARA DAQUI A POUCO...VAMOS PRIMEIRO COMPILAR E EXECUTAR E VER OS RESULTADOS...

ATENÇÃO : O CAMPO DATAPAG AQUI ESTA INSCRITO ASSIM, NA SUA TABELA VOCE DISSE QUE ESTA ASSIM : Dt.pag . O MESMO OCORRE PARA DATAPAG QUE NA SUA TABELA ESTA INSCRITO ASSIM : Dt.Ven..

Voce Tem Que Escrever a Instrução Com Os Mesmos Nomes Da Tabela, Se Não Ele Não Vai Compilar..Veja Tambem Se Todos Esses Campos Foram DECLARADOS NO EDITOR DE CAMPOS...

IMPORTANTE:SE DEIXAR DE DECLARAR UM CAMPO NO EDITOR DE CAMPOS , ESSE CAMPO NÃO ESTARÁ ACESSÍVEL EM TEMPO DE EXECUÇÃO E PROJETO..Poderá Dar Erro De Compilação Como Erro Na Execução..


Responder

Gostei + 0

15/02/2004

Wagner

O erro insiste e o cursor para em if datapag.

Quanto a descrisão dos campos desculpe-me achava que era daquela forma mais estou fazendo de acordo como esta na tabela
Mais uma vez agradeço sua paciencia, mais se quizer para podemos continuar outro dia, não quero abusar da sua boa vontade :oops:


begin
[color=red:127bedf0bc]If Datapag.[/color:127bedf0bc]IsNul then
if DataPag.value > DataVenc.value Then
ValorTotal.Value:=Valor.value + atraso.value*(Multa.value + (Datapag.Value-DataVenc.Value))//tirei a virgula
else
ValorTotal.Value:=Valor.value;

[Error] U_cadinadimp.pas(339): Undeclared identifier: ´Datapag´
[Error] U_cadinadimp.pas(340): ´THEN´ expected but identifier ´value´ found
[Error] U_cadinadimp.pas(349): Statement expected but end of file found


Responder

Gostei + 0

15/02/2004

Marco Salles

Olha Isto é Muito Simples.... Estamos Errando Nos Detalhes e Vencidos Pelo Cansaço...Mesmo Que Não Esteje Compilando e Consequentemente Executando, [color=red:cfd28f34bf]a [color=red]Sua Formula De Calcular Multa Desta Maneira Esta Errada...[/color:cfd28f34bf]A Multa é Um Valor Fixo e Independe Da Quantidade De Dias Em Atrazo...Tanto Faz Ser Um Dia Como 1 Ano. O Valor Da Multa é Fixo[/color]. O Que Pode Variar Por Determinação Da Justiça e os Juros Cobrados

Então Sugiro Continuar Como o Algorítimo Abaixo... Há Jeito De Resumi-lo, Mas Podemos Fazer Depois De Compilar...Certamente é Um Erro De Digitação...

[color=red:cfd28f34bf]Sugiro Por Fim Deletar o Campo DataPag No Editor..Delete-o e Insere-o Imediatamente[/color:cfd28f34bf]...E MAIS UMA VEZ, VERIFIQUE SE OS CAMPOS DE SUA TABELA POSSUEM AS MESMAS ESPECIFICAÇÕES QUE OS CAMPO DEFINIDO NO CÓDIGO EDITOR E POR FIM NA ROTINA ABAIXO:

No Evento Table1CalcFields Da Tabela Escreva o Código:

procedure TFormAlcc2.Table1CalcFields(DataSet: TDataSet);
begin
If Dtpag.IsNul Then
if DtPag.Value > DtVenc.Value Then //Tem Que Cobrar Juros e Multa
ValorTotal.Value:=Valor.Value + Valor.Value*(Multa.Value +
ValorJuros.Value*(Dtpag.Value-DtVenc.Value))
else
ValorTotal.Value:=Valor; // Não Cobra Juros Pagou Dentro Do Prazo
end;


Responder

Gostei + 0

15/02/2004

Wagner

Vai um e-mail pra voce do meu projeto para voce analizar, essa parte ainda não deu certo, não te mandei antes porque queria eu mesmo ir fazendo para poder aprender 5 a 10 minutos ele chegar ai, se puder me da um retorno do que achou eu agradeço


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar