PDA

Ver la Versión Completa : bucle para fechas de pagos


chino150
28-04-2008, 20:18:06
Hola a todos.

Necesito un bucle para una tabla de amorización para las fechas de pagos


por ejemplo


Periodo Fecha De Pago
1 01/04/2008
2 01/05/2008
3 01/06/2008

Lepe
28-04-2008, 20:37:47
ufff, que espeso te veo. ¿crees que podemos entender tus tablas, campos y lo que quieres hacer con esa explicación?

... Po va a sé que no.

saludos

BlueSteel
28-04-2008, 21:32:21
ufff, que espeso te veo. ¿crees que podemos entender tus tablas, campos y lo que quieres hacer con esa explicación?

... Po va a sé que no.

saludos

vamos.. si no se ve tan dificil.....

chino150, necesitas tener los siguientes datos....

Numero de Cuotas -> lo que te dará el largo del bucle...
Fecha de Pago -> para repetir esa fecha (cambiando el mes...)



Fecha_dePago // Variable de tipo Fecha...con 30 dias antes del primer vencimiento
For i:= 1 to Numero_Cuotas do
Begin
Fecha_dePago := Fecha_dePago + 1Mes;
// Aqui debes hacer el proceso para cambiar la fecha de mes en mes...
Imprimir Fecha_dePago // Aqui imprimes lo que quieras..
End;


Por Ejemplo, si tenemos

Fecha_dePago := StrToDate('28/04/2008');
Numero_Cuotas := 12;
vencimiento
For i:= 1 to Numero_Cuotas do
Begin
ShowMessage('La Cuota Numero '+IntToStr(i)+' Vence el '+DateToStr(Fecha_dePago);
Fecha_dePago := Fecha_dePago + 30;
End;

Salu2:p:D

chino150
12-05-2008, 17:15:47
Hola BlueSteel,

Yo estoy usando 3 Edit y 1 datepicker, 1 stringgrid el codigo

Codigo Delphi [-]


procedure TForm1.amortizacionClick(Sender: TObject);
begin
{inicializamos todo}
deu:=strtofloat(deuda.Text);
int:=strtofloat(interes.text);
ti:=strtofloat(tiempo.text);

{calculamos interes mensual}
if rg1.itemindex=0then
im:=int/100
else
im:=(int/100)/12;

{primer columna}
if rg2.itemindex=0then
mes:=ti
else
mes:=ti*12;

{Colocamos total de filas}
if rg2.itemindex=0then
tf:=strtoint(tiempo.text)
else
tf:=strtoint(tiempo.text)*12;

m.RowCount:=tf +1;
for fil:=1to tf do
m.cells[0,fil]:=floattostr(roundto(fil, -2));

{tercera columna}
pc:=deu/mes;
for fil:=1to tf do
m.cells[2,fil]:=floattostr(roundto(pc, -2));

{segunda columna}
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
m.Cells[1,fil]:=floattostr(roundto(si, -2));
end;

{quinta columna}
sf:=deu;
for fil:=1to tf do
begin
sf:=sf-pc;
m.Cells[4,fil]:=floattostr(roundto(sf, -2));
end;

{cuarta columna}
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
i:=si*im;
m.Cells[3,fil]:=floattostr(roundto(i, -2));
end;
{sexta columna}
pc:=deu/mes;
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
i:=si*im;
pm:=pc+i;
m.Cells[5,fil]:=floattostr(roundto(pm, -2));
end;
{interes total}
ti:=0;
for fil:=1to tf do
ti:=ti+strtofloat(m.Cells[3,fil]);
it.Caption:=floattostr(roundto(ti,-2));

end;

end.
gracias

BlueSteel
13-05-2008, 01:30:27
Hola BlueSteel,

Yo estoy usando 3 Edit y 1 datepicker, 1 stringgrid el codigo

Codigo Delphi [-]


procedure TForm1.amortizacionClick(Sender: TObject);
begin
{inicializamos todo}
deu:=strtofloat(deuda.Text);
int:=strtofloat(interes.text);
ti:=strtofloat(tiempo.text);

{calculamos interes mensual}
if rg1.itemindex=0then
im:=int/100
else
im:=(int/100)/12;

{primer columna}
if rg2.itemindex=0then
mes:=ti
else
mes:=ti*12;

{Colocamos total de filas}
if rg2.itemindex=0then
tf:=strtoint(tiempo.text)
else
tf:=strtoint(tiempo.text)*12;

m.RowCount:=tf +1;
for fil:=1to tf do
m.cells[0,fil]:=floattostr(roundto(fil, -2));

{tercera columna}
pc:=deu/mes;
for fil:=1to tf do
m.cells[2,fil]:=floattostr(roundto(pc, -2));

{segunda columna}
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
m.Cells[1,fil]:=floattostr(roundto(si, -2));
end;

{quinta columna}
sf:=deu;
for fil:=1to tf do
begin
sf:=sf-pc;
m.Cells[4,fil]:=floattostr(roundto(sf, -2));
end;

{cuarta columna}
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
i:=si*im;
m.Cells[3,fil]:=floattostr(roundto(i, -2));
end;
{sexta columna}
pc:=deu/mes;
si:=deu+pc;
for fil:=1to tf do
begin
si:=si-pc;
i:=si*im;
pm:=pc+i;
m.Cells[5,fil]:=floattostr(roundto(pm, -2));
end;
{interes total}
ti:=0;
for fil:=1to tf do
ti:=ti+strtofloat(m.Cells[3,fil]);
it.Caption:=floattostr(roundto(ti,-2));

end;

end.
gracias


Hola Chino...

bueno, creo que podrias optimizar mucho más tu codigo... como por ejemplo

para llenar cada una de las columnas del StringGrid utilizas

for fil:=1to tf do

cuando podrias poner el codigo de todas las colunas en ese mismo codigo...

Nunca dices si el codigo que tienes esta bien.. te funciona... o tiene algun error...

Tambien, no se como estas realizando tu cuadro de amortización...

generalmente yo utilizo uno con los sgtes datos:

| Nro de Cta | Valor Cuota | Interes | Amortización | Saldo Capital

para calcular el valor cuota necesitas :
- Monto del Credito (Inversión)
- Tasa de Interes (Definir si es mensual o anual)
- Horizonte de Evaluación (Nº de Cuotas)

Bueno... espero que todo te resulte bien...

Salu2:p:D

chino150
19-05-2008, 15:01:28
Hola BlueSteel,

El codigo funciona bien solo que deseo agregarle las fechas de pago, uso
para ingresar el monto del credito la tasa de interes y el numero de cuotas tres componentes edit para la fecha un datetimepicker las columnas del stringgrid son Cuotas, Fecha de Pago, Amortización, Intereses, Pago, Balance.