Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   funcion payment (https://www.clubdelphi.com/foros/showthread.php?t=30594)

cmena 11-04-2006 00:00:47

funcion payment
 
hola, uso esta funcion para determinar el valor cuota de un monto x, pero me da error , dice que me falta el tpaymenttime al parecer es obligatorio, como lo paso y que significa?


function Payment(Rate: Extended; NPeriods: Integer; const PresentValue, const FutureValue: Extended; PaymentTime: TPaymentTime): Extended;


gracias

Sotrono 11-04-2006 00:08:04

Que tal una vuelta por la ayuda de Delphi??? :p
Por lo que veo TPaymentTime tiene estos dos posibles valores:

ptStartOfPeriod: Interest is calculated on the principle balance at the beginning of the payment period

ptEndOfPeriod: Interest is calculated at the end of the payment period

Bytes...

cmena 11-04-2006 16:30:19

Cita:

Empezado por Sotrono
Que tal una vuelta por la ayuda de Delphi??? :p
Por lo que veo TPaymentTime tiene estos dos posibles valores:

ptStartOfPeriod: Interest is calculated on the principle balance at the beginning of the payment period

ptEndOfPeriod: Interest is calculated at the end of the payment period

Bytes...

Gracias, si revise la ayuda, pero que es lo que paso como parametro? pongo el ptstartofperiod y me envia este error "[Error] UnitCotizaciones.pas(310): Incompatible types: 'Extended' and 'TPaymentTime'"
asi tengo la instruccion que se cae
ShowMessage(floattostr(payment(5,12,100000,ptStartOfPeriod)));

Sotrono 11-04-2006 19:58:08

Hola, el problema es que te falta pasarle un parámetro (son 5, no 4). El que te falta es: FutureValue, que es de tipo Extended. Por eso el error "Incompatible types: 'Extended' and 'TPaymentTime'"

Bytes...

cmena 12-04-2006 00:12:24

Cita:

Empezado por Sotrono
Hola, el problema es que te falta pasarle un parámetro (son 5, no 4). El que te falta es: FutureValue, que es de tipo Extended. Por eso el error "Incompatible types: 'Extended' and 'TPaymentTime'"

Bytes...

Gracias amigo argentino, me funciono, pero el valor que me retorna no es el valor cuota estoy usando la funcion correcta para calcular el valor de la cuota?
ejemplo: valor_cuota:=Payment(5,12,100000,0,ptStartOfPeriod);

si tengo 5% de tasa, a 12 meses y saldo afinanciar de 100.000 la cuota deberia ser 10.475 mensual. la funcion me devuelve 83.333 ???

gracias por la ayuda

se despide un amigo chileno.

Sotrono 12-04-2006 02:33:17

Cita:

estoy usando la funcion correcta para calcular el valor de la cuota?
Nunca utilice esa función y mis conocimientos en finanzas no son muy grandes. La traducción de lo que dice la ayuda de Delphi sobre la función es: Calcula un pago completamente amortizado.

Bien, si lo que queres es calcular el valor de la cuota, supongo que se calcula así:
Digamos que hay que realizar un pago de $100 en 10 cuotas con un interés del 5%. El total a pagar sería $105. Si a $105 lo dividimos por la cantidad de cuotas tendriamos el valor de la cuota.
Codificado:
Código Delphi [-]
function ValorCuota(APagar : Extended; Cant_Cuotas : Integer; Interes : Real): Extended;
begin
  Result := (APagar + (Interes * APagar / 100)) / Cant_Cuotas;
end;

Como ya te dije, no tengo grandes conocimientos en finanzas, y no manejo muy bien el "lenguaje financiero", asi que ya me dirás si eso es lo que necesitabas o no.

Saludos...

cmena 12-04-2006 19:51:37

hola , el interes compuesto lleva operaciones exponenciales, cual es la funcion para calcular potencias ej 10 elevado a N ,
de igual forma creo que la funcion ya la yiene incorporada delphi, independiete habria qu averiguar cual y como se usa.

lokodelphi 16-04-2006 01:01:26

bueno entonces lo q tu deseas es hallar R=p(1+i)^n

eso lo haces solo con variables y nada masalgo asi

Result := (APagar*(1+Interes)^Cant_Cuotas;
Result := (1000000*(1+0.05)^12;
el interes es en porcentaje como es el 5% lo pones asi 5/100=0.05

espero haberte ayudado

smessina 17-04-2006 00:09:17

payment
 
el monto del prestamo si es que quieres calcular la cuota de un prestamo va en negativo :

valor_cuota:=Payment(5,12,-100000,0,ptStartOfPeriod);


ya que ese dinero es el que no tienes y debes cubrir.

espero no estar orinando fuera del tarro como se dice.

sino pido disculpas.

cmena 17-04-2006 19:43:58

calcular valor cuota con payment ?
 
Cita:

Empezado por smessina
el monto del prestamo si es que quieres calcular la cuota de un prestamo va en negativo :

valor_cuota:=Payment(5,12,-100000,0,ptStartOfPeriod);


ya que ese dinero es el que no tienes y debes cubrir.

espero no estar orinando fuera del tarro como se dice.

sino pido disculpas.

Gracias , pero si pruebas da un valor de 83.000, esto deberia devolver un valor cuota mensual de 10.745 (hecho en calculadora hp 12c), favor me puedes ayudar ya que llevo 2 semanas en el foro y nadie anda cerca, solo tu me entiendes

gracias

cmena 17-04-2006 19:48:52

Cita:

Empezado por lokodelphi
bueno entonces lo q tu deseas es hallar R=p(1+i)^n

eso lo haces solo con variables y nada masalgo asi

Result := (APagar*(1+Interes)^Cant_Cuotas;
Result := (1000000*(1+0.05)^12;
el interes es en porcentaje como es el 5% lo pones asi 5/100=0.05

espero haberte ayudado

esto no funciona asi la expresion es otra, pero la idea es usar la funciones financieras de delphi, en el foro nadie entiende la pregunta si pido 100.000 al banco a 12 meses con un interes del 5% la cuota mensual deberia ser 10.745,
esto es lo que necesito
sigo en espera de ayuda
muchas gracias

marcoszorrilla 17-04-2006 23:36:15

Esta es la función en D5:
Código Delphi [-]
function Payment(Rate: Extended; NPeriods: Integer; PresentValue, FutureValue:
  Extended; PaymentTime: TPaymentTime): Extended;
var
  Annuity, CompoundRN: Extended;
begin
  if Rate <= -1.0 then ArgError('Payment');
  Annuity := Annuity2(Rate, NPeriods, PaymentTime, CompoundRN);
  if CompoundRN > 1.0E16 then
    Payment := -PresentValue * Rate / (1 + Integer(PaymentTime) * Rate)
  else
    Payment := (-PresentValue * CompoundRN - FutureValue) / Annuity
end;

Un Saludo.

smessina 19-04-2006 18:56:35

Cita:

Empezado por cmena
Gracias , pero si pruebas da un valor de 83.000, esto deberia devolver un valor cuota mensual de 10.745 (hecho en calculadora hp 12c), favor me puedes ayudar ya que llevo 2 semanas en el foro y nadie anda cerca, solo tu me entiendes

gracias

si lo que pasa es que la tasa no esta expresada en %
prueba asi y te dara 10.745,28 (osea la tasa seria 5/100)
Cita:

valor_cuota:=Payment(0.05,12,-100000,0,ptStartOfPeriod);

egostar 19-04-2006 20:52:19

Cita:

valor_cuota:=Payment(0.05,12,-100000,0,ptStartOfPeriod);
Asi es la forma correcta de obtener el resultado, encontre un link donde se muestra la forma de como usar esta funcion e incluye algo mas interesante que no se ha tocado, Pago a capital y monto del interes. Aqui el LINK.

Este ejemplo del link tiene 24 periodos, ademas de que el interes es del 8% anual. Hay que modificarlo a las necesidades reales.

Cita:

1 5983.37 4761.90 10745.28 10745.28
2 6282.54 4462.74 10745.28 10745.28
3 6596.67 4148.61 10745.28 10745.28
4 6926.50 3818.78 10745.28 10745.28
5 7272.83 3472.45 10745.28 10745.28
6 7636.47 3108.81 10745.28 10745.28
7 8018.29 2726.99 10745.28 10745.28
8 8419.21 2326.07 10745.28 10745.28
9 8840.17 1905.11 10745.28 10745.28
10 9282.17 1463.10 10745.28 10745.28
11 9746.28 998.99 10745.28 10745.28
12 10233.60 511.68 10745.28 10745.28
95238.10 33705.23 128943.33 128943.33
Saludos


La franja horaria es GMT +2. Ahora son las 22:11:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi