PDA

Ver la Versión Completa : Cuadro de amortización de Prestamos


Delphitest
22-10-2014, 10:50:52
Buenos días,

he empezado con una aplicación y en ella debo incluir un generador de cuadros de amortización parecido a lo que aparece en esta web:

Cuadro de Amortización (http://www.economia-excel.com/2007/06/cuadro-de-amortizacin-de-prstamos.html)

Principalmente necesito el sistema Francés y el Americano.

Antes de plantearme enlaces con campos de tablas y cosas que pueden complicar más la tarea me gustaría ser capaz de llevar a cabo esta tarea en un grid que ni siquiera se almacene, algo parecido a lo que hace la hoja de calculo del ejemplo.

Para los valores que debo rellenar puedo usar Edit sin mas pero para que se generen las diferentes lineas con las cuotas no se bien que debo poner ya que el número de líneas quedará definido por los plazos del préstamo.

¿Me sabría decir alguien como se suele hacer esa parte del cuadro de amortización?

Gracias por vuestro tiempo

Neftali [Germán.Estévez]
22-10-2014, 12:31:31
...me gustaría ser capaz de llevar a cabo esta tarea en un grid que ni siquiera se almacene, algo parecido a lo que hace la hoja de calculo del ejemplo.


Utiliza un TStringGrid, donde tú puedes definir las filas y columnas que se crean. Dependiendo de los años tendrás que asignar un valor diferente a la propiedad RowCount del TStringGrid.



Para los valores que debo rellenar puedo usar Edit sin mas pero para que se generen las diferentes lineas con las cuotas no se bien que debo poner ya que el número de líneas quedará definido por los plazos del préstamo.

Lo dicho. Propiedad RowCount.

pacopenin
22-10-2014, 17:39:26
Yo tengo una pequeña utilidad parecida para el cálculo de intereses y uso tablas en memoria y un grid normal.

http://www.gestionportable.com/img/intereses.jpg

Delphitest
22-10-2014, 21:24:07
Gracias por la información

Estoy haciendo pruebas e intentando entender el mecanismo antes de preguntar a lo loco.

Me toca repasar los bucles, las condiciones... ufff hace años que no tocaba esto. :o

En cuanto tenga algo hecho si os parece lo subo al foro para que lo veáis y por si alguien quiere aprovecharlo.

Buenas noches

Delphitest
23-10-2014, 19:56:08
Bueno, ya voy teniendo algo hecho, lo adjunto para que lo veais (no se si afecta que este hecho con la versión XE5) aunque queda tarea pero le voy cogiendo el tranquillo al menos a esta parte que es la sencilla.

He puesto valores por defecto para que se vea mas o menos la idea pero son modificables.

El siguiente paso que tengo que dar es dar formato a los edit para que los números que pongo ahí aparezcan con el punto de los miles y alineados a la derecha.

Solo está hecho para el sistema americano por ahora (es el sencillo)

La ultima linea necesita retoques porque debe poner el importe del préstamo como amortización, amortizado y a cero el capital pendiente, tengo que darle vueltas a algún If... pero no doy con ello todavía.

Continuo y os voy contando los avances.

Delphitest
16-12-2014, 18:12:32
Buenas tardes,

ya estoy por aquí de nuevo, tuve que seguir con otras cosas y deje de lado lo del cuadro de amortización pero ya he llegado a este punto y necesito continuar con ello.

Estoy haciendo algo mal pero no veo qué. Pretendo que a través del For... se generen las lineas del cuadro de amortización menos la última y eso sí sale bien, pero después de esas líneas tengo que generar la última donde se indica el importe amortizado de tal manera que el capital pendiente quede a cero.

No entiendo porqué pero no consigo generar esa última línea.

Pongo el código y adjunto el fichero por si alguien ve algo que no este haciendo bien y pudiese orientarme para solucionarlo.

procedure TForm1.Button1Click(Sender: TObject);
var
Lineas : Integer;
NumPlazos : Integer;
ImporteCuota : Double;
ImporteIntereses : Double;
ImporteAmortizacion : Double;
ImporteAmortizado : Double;
ImportePendiente : Double;
begin
if Plazos.Text = '' then
ShowMessage('Debe indicar el número de plazos del préstamo')
Else
Begin
NumPlazos := Strtoint(Plazos.Text) ;
ImporteCuota := StrToFloat(ImportePrestamo.Text)*(StrtoFloat(TipodeInteres.Text)/12)/100;
ImportePendiente := StrtoFloat(ImportePrestamo.Text);
CuadrodeAmortizacion.RowCount := NumPlazos ;
For Lineas := 1 to NumPlazos do
Begin
CuadrodeAmortizacion.Cells[0,Lineas] := InttoStr(Lineas);
CuadrodeAmortizacion.Cells[1,Lineas] := FormatFloat('#,##0.00 €',ImporteCuota);
CuadrodeAmortizacion.Cells[2,Lineas] := FormatFloat('#,##0.00 €',ImporteCuota);
CuadrodeAmortizacion.Cells[3,Lineas] := '0';
CuadrodeAmortizacion.Cells[4,Lineas] := '0';
CuadrodeAmortizacion.Cells[5,Lineas] := FormatFloat('#,##0.00 €',ImportePendiente);
End;
end;
Lineas := Lineas-1;
CuadrodeAmortizacion.Cells[0,Lineas] := InttoStr(Lineas);
CuadrodeAmortizacion.Cells[1,Lineas] := FormatFloat('#,##0.00 €',ImporteCuota+ImportePendiente);
CuadrodeAmortizacion.Cells[2,Lineas] := FormatFloat('#,##0.00 €',ImporteCuota);
CuadrodeAmortizacion.Cells[3,Lineas] := FormatFloat('#,##0.00 €',ImportePendiente);
CuadrodeAmortizacion.Cells[4,Lineas] := FormatFloat('#,##0.00 €',ImportePendiente);
CuadrodeAmortizacion.Cells[5,Lineas] := '0';
end;

Delphitest
16-12-2014, 19:32:26
Pues ahora yo lo entiendo ... :)

Las vueltas que hay que darle a veces a unas tonterías :o

Me explico a mi mismo donde estaba el problema;

Estaba definiendo el número de líneas del Grid igual que el número de plazos, entonces como la linea de la cabecera ocupa una fila lógicamente nunca llegaba a la última que necesitaba.

Lo he solucionado incrementando 1 al número de líneas del Grid y restando 1 al bucle para que deje la ultima sin generar y se pueda hacer cuando finalice. Grrrrrrr Esto hace que se me caiga un poco más el pelo...


NumPlazos := Strtoint(Plazos.Text) ;
ImporteCuota := StrToFloat(ImportePrestamo.Text)*(StrtoFloat(TipodeInteres.Text)/12)/100;
ImportePendiente := StrtoFloat(ImportePrestamo.Text);
CuadrodeAmortizacion.RowCount := NumPlazos + 1 ;
For Lineas := 1 to NumPlazos - 1 do

Casimiro Notevi
16-12-2014, 19:44:15
Grrrrrrr Esto hace que se me caiga un poco más el pelo... ¿Por qué crees que los veteranos estamos todos calvos? :p

Delphitest
17-12-2014, 19:24:09
He donado otros pelillos a la ciencia ;)

y a lo tonto ya lo he conseguido, se generan los cuadros de amortización con el sistema americano y el sistema francés.

He sufrido un poco en este último y he descubierto la función Payment() que no sabía ni que existía, jajajjajaj

Si queréis subirlo al ftp del foro igual viene bien como ejemplo, es algo muy básico pero para los que andamos en el sector financiero puede servir de base para después integrarlo en algún programa.

Adjunto el código y aprovecho el tirón...

¿Se podría imprimir el Grid con el resultado del cuadro de amortización? Obviamente sé que la respuesta es sí, pero si me encamináis un poquillo de cómo hacerlo igual me lanzo unas cuantas horas más y lo dejo hecho.

Gracias