Como Crear una Tabla de Pagos(Amortizacion) Perfecta

denis guido
28 de Marzo del 2005

Tengo la siguiente lineas de codigo la cual me genera una tabla de pagos, el problema que tengo es que no me cuadra el valor de la cuota, el valor de la cuota es Principal + Interes , la verdad me gustaria saber quien tiene una mejor funcion para generar la tabla de pagos perfecta... o mejorar esta funcion

los parametros de la funcion son:
Capital=1300.00
Im(Interes mensual)=1.60970%
Plazo(meses)=12

Cuota=120.00


FUNCTION PAGO(CAP,IM,NUMMESES)
LOCAL CM

CM=(CAP*IM)/(1-(1+IM)^(-NUMMESES))

RETURN(CM)



LOCAL Tcuotas,Tvalcuota,Tmonto,Tinteres,Tlimpio,Tabono,;
Tfecha,Tprincipal,Tvalint,Tsaldo,Tentrar,TDFECHA1,;
TDFECHA2,Tfechap,TDDIAS
SELECT Camortiza
zap
Tcuotas=Thisform.txtnumcuota.Value
Tinteres=Thisform.txtia.Value/100
Tmonto=Thisform.txtmonto.Value
Tlimpio=.T.
Tabono=0
Tfecha=Thisform.txtfecha.Value
Tprincipal=0.00
Tvalint=0.00
Tsaldo=0.00
Tfechap=Thisform.txtfecha.Value
Tentrar=.T.
TDDIAS=.F.
Tvalcuota=VAL(TRANSFORM(PAGO(TMONTO,Tinteres,Tcuotas),'999999999.99'))
FOR I=1 TO Tcuotas
IF Tlimpio
Tvalint=VAL(TRANSFORM(Tmonto*Tinteres,'999999999.99'))
SELECT Camortiza
APPEND BLANK
replace nabono WITH Tabono,;
fechac WITH Tfecha,;
cuota WITH 0.00,;
principal WITH 0.00,;
interes WITH 0.00,;
saldo WITH Tmonto,;
empresa WITH Thisform.txtempresa.Value,;
nombree WITH THISFORM.text2.Value,;
sucursal WITH THISFORM.TXTsucursal.Value,;
nombres WITH THISFORM.text3.Value,;
factura WITH THISFORM.TXTFactura.Value,;
fecha WITH THISFORM.TXTFEcha.Value,;
cliente WITH THISFORM.TXTNombrec.Value,;
equipo WITH THISFORM.txtdescripcion.value,;
plazo WITH Tcuotas,;
Tint WITH Thisform.txtia.Value,;
monto WITH Thisform.txtmonto.Value
Tabono=Tabono+1
IF TENTRAR
TDFECHA1=TFECHAP
TENTRAR=.F.
ELSE
TDFECHA1=TDFECHA2
ENDIF
TDFECHA2=THISFORM.Calcularfecha(TDFECHA1,@TDDIAS,Tfechap)
Tprincipal =Tvalcuota-Tvalint
Tsaldo=Tmonto-Tprincipal
SELECT Camortiza
APPEND BLANK
replace nabono WITH Tabono,;
fechac WITH TDFECHA2,;
cuota WITH Tvalcuota,;
principal WITH Tprincipal,;
interes WITH Tvalint,;
saldo WITH Tsaldo,;
empresa WITH Thisform.txtempresa.Value,;
nombree WITH THISFORM.text2.Value,;
sucursal WITH THISFORM.TXTsucursal.Value,;
nombres WITH THISFORM.text3.Value,;
factura WITH THISFORM.TXTFactura.Value,;
fecha WITH THISFORM.TXTFEcha.Value,;
cliente WITH THISFORM.TXTNombrec.Value,;
equipo WITH THISFORM.txtdescripcion.value,;
plazo WITH Tcuotas,;
Tint WITH Thisform.txtia.Value,;
monto WITH Thisform.txtmonto.Value
Tmonto=Tsaldo
Tvalint=Tmonto*Tinteres
Tlimpio=.F.
ELSE
IF TENTRAR
TDFECHA1=TFECHAP
TENTRAR=.F.
ELSE
TDFECHA1=TDFECHA2
ENDIF
TDFECHA2=THISFORM.Calcularfecha(TDFECHA1,@TDDIAS,Tfechap)
Tprincipal =Tvalcuota-Tvalint
Tsaldo=Tmonto-Tprincipal
SELECT Camortiza
APPEND BLANK
replace nabono WITH Tabono,;
fechac WITH TDFECHA2,;
cuota WITH Tvalcuota,;
principal WITH Tprincipal,;
interes WITH Tvalint,;
saldo WITH IIF(Tsaldo<=0.01,0.00,Tsaldo),;
empresa WITH Thisform.txtempresa.Value,;
nombree WITH THISFORM.text2.Value,;
sucursal WITH THISFORM.TXTsucursal.Value,;
nombres WITH THISFORM.text3.Value,;
factura WITH THISFORM.TXTFactura.Value,;
fecha WITH THISFORM.TXTFEcha.Value,;
cliente WITH THISFORM.TXTNombrec.Value,;
equipo WITH THISFORM.txtdescripcion.value,;
plazo WITH Tcuotas,;
Tint WITH Thisform.txtia.Value,;
monto WITH Thisform.txtmonto.Value
Tmonto=Tsaldo
Tvalint=Tmonto*Tinteres
ENDIF
Tabono=Tabono+1
ENDFOR
SELECT Camortiza
CALCULATE sum(Camortiza.cuota),sum(Camortiza.principal),sum(Camortiza.interes) TO s1,s2,s3
Thisform.text4.Value=s1
Thisform.text5.Value=s2
Thisform.text6.Value=s3
s11=thisform.text4.value
s22=thisform.text5.value
s33=thisform.text6.Value
GO bottom
Thisform.grdAmortiza.Refresh

Atentamente

Denis Guido