FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Funcion PAGO de excel ( RESUELTO )
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Funcion PAGO de excel ( RESUELTO )
Posted: Tue Sep 15, 2009 04:26 PM
Estimados

Habra alguna funcion que sea igual a la funcion PAGO de excel o alguien que la haya desarrollado y la pueda facilitar

Code (fw): Select all Collapse
PAGO
Calcula el pago de un pr茅stamo bas谩ndose en pagos constantes y en una tasa de inter茅s constante.
Sintaxis
PAGO(tasa;nper;va;vf;tipo)


En realidad esto lo que quiero calcular..

Code (fw): Select all Collapse
CAPITAL聽 $ 10.000.000 聽 聽 聽 
INTERES聽3.00%聽 聽聽 聽 
PERIODOS聽 聽 12聽 聽 聽 

MES聽SALDO INICIAL聽 聽CUOTA聽 聽INTERES
1聽 聽 $ 10.000.000 聽 聽$ 1.004.621 聽 聽 $ 300.000 
2聽 聽 $ 9.295.379 聽 聽 $ 1.004.621 聽 聽 $ 278.861 
3聽 聽 $ 8.569.619 聽 聽 $ 1.004.621 聽 聽 $ 257.089 
4聽 聽 $ 7.822.087 聽 聽 $ 1.004.621 聽 聽 $ 234.663 
5聽 聽 $ 7.052.129 聽 聽 $ 1.004.621 聽 聽 $ 211.564 
6聽 聽 $ 6.259.072 聽 聽 $ 1.004.621 聽 聽 $ 187.772 
7聽 聽 $ 5.442.223 聽 聽 $ 1.004.621 聽 聽 $ 163.267 
8聽 聽 $ 4.600.869 聽 聽 $ 1.004.621 聽 聽 $ 138.026 
9聽 聽 $ 3.734.274 聽 聽 $ 1.004.621 聽 聽 $ 112.028 
10聽 聽$ 2.841.681 聽 聽 $ 1.004.621 聽 聽 $ 85.250 
11聽 聽$ 1.922.310 聽 聽 $ 1.004.621 聽 聽 $ 57.669 
12聽 聽$ 975.358 聽 聽 聽 聽$ 1.004.621 聽 聽 $ 29.261


desde ya muchas gracias
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Funcion PAGO de excel
Posted: Tue Sep 15, 2009 07:11 PM

Patricio:

Usando solo funciones de Excel, me parece que, he logrado "destripar" la funci贸n
PAGO(), revisando lo que tengo creo que podr谩s pasarlo a xBase.

Por favor dame un correo para enviarte el libro de Excel.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Funcion PAGO de excel
Posted: Tue Sep 15, 2009 07:22 PM

Hola Armando

gracias por responder

mi mail

patricio_avalos_aguirre@hotmail.com

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Re: Funcion PAGO de excel
Posted: Tue Sep 15, 2009 10:19 PM
Hola Patricio:
Patricio Avalos Aguirre wrote:Habra alguna funcion que sea igual a la funcion PAGO de excel o alguien que la haya desarrollado y la pueda facilitar


Aqui tienes un programa que calcula y muestra amortizaciones de cr茅ditos con diferentes opciones de c谩lculo.

.PRG
Code (fw): Select all Collapse
* Programa que calcula amortizaciones de cr茅ditos
* Autor Manuel Mercado G贸mez
* Ultima actualizaci贸n 15/09/2009

#include "FiveWin.ch"
#include "TSButton.ch"
#include "TSBrowse.ch"

#define CLR_HBROWN nRGB( 205, 192, 176 )

MemVar nTotInt, nTotTot, nDayAnt

Static aTasas

//--------------------------------------------------------------------------------------------------------------------//

Function Principal()

聽 聽Local oWnd, oBar, oIco, oMenu, aCtl[ 14 ], oFont, nCapital, nTipInt, nTasa, nPagos, ;
聽 聽 聽 聽 聽dFecIni, nGracia, ;
聽 聽 聽 聽 聽aInt 聽 := { "Tasa fija sobre saldos insolutos con amortizaci贸n variable", ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"Tasa fija sobre saldos insolutos con amortizaci贸n fija", ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"Tasa variable sobre saldos insolutos con amortizaci贸n fija", ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"Tasa fija sobre operaci贸n global con amortizaci贸n fija" }, ;
聽 聽 聽 聽 聽aCalen := { { "", "", "", "", "", "", "", "" } }

聽 聽Private nTotInt := 0, ;
聽 聽 聽 聽 聽 聽nTotTot := 0, ;
聽 聽 聽 聽 聽 聽nDayAnt := 0

聽 聽SET CONFIRM ON
聽 聽SET DATE BRITISH
聽 聽SET EPOCH TO 1980
聽 聽SetHandleCount( 20 )
聽 聽Set( _SET_INSERT, .T. )

聽 聽nCapital := 0
聽 聽nTipInt 聽:= 1
聽 聽nTasa 聽 聽:= 0
聽 聽nPagos 聽 := 0
聽 聽dFecIni 聽:= Date()
聽 聽nGracia 聽:= 0

聽 聽MENU oMenu
聽 聽 聽 MENUITEM "&Excel" ;
聽 聽 聽 聽 聽 ACTION ( If( Len( aCtl[ 12 ]:aArray ) > 1, fExcel( aCtl[ 12 ] ), Nil ) ) ;
聽 聽 聽 聽 聽 MESSAGE "Transferir calendario de pagos a Excel"
聽 聽 聽 MENUITEM "&Salir" ACTION oWnd:End() MESSAGE "Salir del programa"
聽 聽ENDMENU

聽 聽DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -17
聽 聽DEFINE ICON oIco RESOURCE "Money"

聽 聽DEFINE WINDOW oWnd FROM 0, 0 TO 454, 620 PIXEL ;
聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN MENU oMenu ICON oIco ;
聽 聽 聽 聽 聽 TITLE "C谩lculo de amortizaci贸n de cr茅ditos"

聽 聽DEFINE SBUTTONBAR oBar 3D SIZE 36, 36 OF oWnd OFFICE

聽 聽DEFINE SBUTTON aCtl[ 13 ] OF oBar RESOURCE "Excel" ;
聽 聽 聽 聽 聽 ACTION ( If( Len( aCtl[ 12 ]:aArray ) > 1, fExcel( aCtl[ 12 ] ), Nil ) ) ;
聽 聽 聽 聽 聽 TOOLTIP "Transferir calendario de pagos a Excel"

聽 聽DEFINE SBUTTON OF oBar RESOURCE "Calc" GROUP ;
聽 聽 聽 聽 聽 ACTION WinExec( "Calc" ) ;
聽 聽 聽 聽 聽 TOOLTIP "Calculadora" ;
聽 聽 聽 聽 聽 MESSAGE "La calculadora de Windows"

聽 聽DEFINE SBUTTON OF oBar RESOURCE "Calen" GROUP ;
聽 聽 聽 聽 聽 ACTION WinExec( "Calendar" ) ;
聽 聽 聽 聽 聽 TOOLTIP "Calendario"

聽 聽DEFINE SBUTTON OF oBar RESOURCE "Quit" GROUP PIXELS ;
聽 聽 聽 聽 聽 ACTION oWnd:End() ;
聽 聽 聽 聽 聽 TOOLTIP "Salir del programa"

聽 聽@ 42, 10 SAY aCtl[ 1 ] PROMPT "Importe del Cr茅dito:" OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 155, 20 PIXEL

聽 聽@ 42,225 GET aCtl[ 2 ] VAR nCapital OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont 聽UPDATE ;
聽 聽 聽 聽 聽 聽 PICTURE "@K #########.##" COLORS CLR_BLACK, CLR_WHITE SIZE 116, 20 PIXEL ;
聽 聽 聽 聽 聽 聽 VALID ( fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni ), .T. )

聽 聽aCtl[ 2 ]:bGotFocus := {||aCtl[ 2 ]:SetColor( CLR_WHITE, CLR_BLUE ) }
聽 聽aCtl[ 2 ]:bLostFocus := {||aCtl[ 2 ]:SetColor( CLR_BLACK, CLR_WHITE ) }

聽 聽@ 65, 10 SAY aCtl[ 4 ] PROMPT "Inter茅s Anual:" OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 99, 20 PIXEL

聽 聽@ 65,225 GET aCtl[ 5 ] VAR nTasa OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont 聽UPDATE ;
聽 聽 聽 聽 聽 聽 PICTURE "@K ###.## %" COLORS CLR_BLACK, CLR_WHITE SIZE 43, 20 PIXEL ;
聽 聽 聽 聽 聽 聽 VALID ( fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni ), .T. )

聽 聽aCtl[ 5 ]:bGotFocus := {||aCtl[ 5 ]:SetColor( CLR_WHITE, CLR_BLUE ) }
聽 聽aCtl[ 5 ]:bLostFocus := {||aCtl[ 5 ]:SetColor( CLR_BLACK, CLR_WHITE ) }

聽 聽@ 90, 10 SAY aCtl[ 6 ] PROMPT "N煤mero de Pagos Mensuales:" OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 215, 20 PIXEL

聽 聽@ 90,225 GET aCtl[ 7 ] VAR nPagos OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont 聽UPDATE ;
聽 聽 聽 聽 聽 聽 PICTURE "@K ###" COLORS CLR_BLACK, CLR_WHITE SIZE 30, 20 PIXEL ;
聽 聽 聽 聽 聽 聽 VALID ( fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni ), .T. )

聽 聽aCtl[ 7 ]:bGotFocus := {||aCtl[ 7 ]:SetColor( CLR_WHITE, CLR_BLUE ) }
聽 聽aCtl[ 7 ]:bLostFocus := {||aCtl[ 7 ]:SetColor( CLR_BLACK, CLR_WHITE ) }

聽 聽@114, 10 SAY aCtl[ 8 ] PROMPT "Fecha del Primer Pago:" OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 175, 20 PIXEL

聽 聽@114,225 GET aCtl[ 9 ] VAR dFecIni OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont 聽UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_WHITE SIZE 68, 20 PIXEL ;
聽 聽 聽 聽 聽 聽 VALID ( fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni ), .T. )

聽 聽aCtl[ 9 ]:bGotFocus := {||aCtl[ 9 ]:SetColor( CLR_WHITE, CLR_BLUE ) }
聽 聽aCtl[ 9 ]:bLostFocus := {||aCtl[ 9 ]:SetColor( CLR_BLACK, CLR_WHITE ) }

聽 聽@138, 10 SAY aCtl[ 10 ] PROMPT "Per铆odo de Gracia:" OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 140, 20 PIXEL

聽 聽@138,225 GET aCtl[ 11 ] VAR nGracia OF oWnd ;
聽 聽 聽 聽 聽 聽 FONT oFont 聽UPDATE ;
聽 聽 聽 聽 聽 聽 PICTURE "@K ###" COLORS CLR_BLACK, CLR_WHITE SIZE 30, 20 PIXEL ;
聽 聽 聽 聽 聽 聽 VALID ( fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni ), .T. )

聽 聽aCtl[ 11 ]:bGotFocus := {||aCtl[ 11 ]:SetColor( CLR_WHITE, CLR_BLUE ) }
聽 聽aCtl[ 11 ]:bLostFocus := {||aCtl[ 11 ]:SetColor( CLR_BLACK, CLR_WHITE ) }

聽 聽@ 42,355 SRADIO aCtl[ 3 ] VAR nTipInt OF oWnd ;
聽 聽 聽 聽 聽 聽 ITEMS aInt UPDATE GROSS BBOX FONT oFont, oFont SIZE 318, 134 PIXELS ;
聽 聽 聽 聽 聽 聽 LABEL "Tipo de Inter茅s" ALIGN DT_CENTER ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN, CLR_WHITE, CLR_GRAY ;
聽 聽 聽 聽 聽 聽 ON CHANGE If( nTipInt == 3 .and. fGetTasas( nTasa, nPagos, dFecIni ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 dFecIni ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 If( nTipInt != 3, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 dFecIni ), Nil ) )

聽 聽@186, 10 STATIC aCtl[ 14 ] BBOX OF oWnd SIZE 774, 468 PIXEL FONT oFont ;
聽 聽 聽 聽 聽 聽 LABEL "Calendario de Pagos" ALIGN DT_CENTER

聽 聽@211, 15 BROWSE aCtl[ 12 ] OF oWnd ARRAY aCalen ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN, CLR_BLACK, CLR_HGRAY, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽CLR_WHITE, CLR_BLACK,,, CLR_BLACK, CLR_CYAN, CLR_BLACK, CLR_HBROWN ;
聽 聽 聽 聽 聽 聽 SIZE 764, 436 PIXEL

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 1 TITLE "Pago" SIZE 40 ;
聽 聽 聽 聽ALIGN DT_CENTER, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 2 TITLE "Fecha" SIZE 68 ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 3 TITLE "Saldo Inicial" SIZE 116 ;
聽 聽 聽 聽PICTURE "###,###,###.##" ALIGN DT_RIGHT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 4 TITLE "Tasa" SIZE 56 ;
聽 聽 聽 聽PICTURE "###.##" FOOTER "Totales" ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER, DT_RIGHT 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 5 TITLE "Inter茅s" SIZE 116 ;
聽 聽 聽 聽PICTURE "###,###,###.##" ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER, DT_RIGHT 3DLOOK FALSE, TRUE, TRUE ;
聽 聽 聽 聽FOOTER { || Transform( nTotInt, "###,###,###.##" ) }

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 6 TITLE "Capital" SIZE 116 ;
聽 聽 聽 聽PICTURE "###,###,###.##" ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE ;
聽 聽 聽 聽FOOTER { || Transform( nCapital, "###,###,###.##" ) }

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 7 TITLE "Total" SIZE 116 ;
聽 聽 聽 聽PICTURE "###,###,###.##" ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE ;
聽 聽 聽 聽FOOTER { || Transform( nTotTot, "###,###,###.##" ) }

聽 聽ADD COLUMN TO aCtl[ 12 ] DATA ARRAY ELM 8 TITLE "Saldo Final" SIZE 116 ;
聽 聽 聽 聽PICTURE "###,###,###.##" ;
聽 聽 聽 聽ALIGN DT_RIGHT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽aCtl[ 12 ]:lNoHScroll := .T.

聽 聽SET MESSAGE OF oWnd CLOCK DATE KEYBOARD NOINSET

聽 聽ACTIVATE WINDOW oWnd MAXIMIZED ON INIT aCtl[ 2 ]:SetFocus() ;
聽 聽 聽 聽 聽 聽 VALID ( oFont:End(), oIco:End(), .T. )

Return Nil

//--------------------------------------------------------------------------------------------------------------------//

Static Function fCalculate( aCtl, nTipInt, nTasa, nPagos, nCapital, nGracia, dFecIni )

聽 聽Local nInteres, nPagoCap, nPagoMes, ;
聽 聽 聽 聽 聽aCalen 聽:= {}, ;
聽 聽 聽 聽 聽nCapFin := nCapital, ;
聽 聽 聽 聽 聽dFecha 聽:= dFecIni, ;
聽 聽 聽 聽 聽xVar 聽 聽:= 1

聽 聽If nPagos == 0 .OR. nCapital == 0
聽 聽 聽 Return Nil
聽 聽EndIf

聽 聽nTotInt 聽:= nDayAnt := 0
聽 聽nTasa 聽 聽/= 1200
聽 聽nPagos 聽 -= nGracia
聽 聽nPagoMes := If( nTasa > 0, If( nTipint == 1, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Round( nCapital * nTasa / ( 1 - ( 1 + nTasa ) ** -nPagos ), 2 ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Round( ( nCapital + ( nCapital * nTasa * nPagos ) ) / nPagos, 2 ) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Round( nCapital / nPagos, 2 ) )

聽 聽nCapmes 聽:= Round( nCapital / nPagos, 2 )

聽 聽While xVar <= ( nPagos + nGracia )

聽 聽 聽 If nTipInt == 3

聽 聽 聽 聽 聽If Empty( aTasas )
聽 聽 聽 聽 聽 聽 fGetTasas( nTasa * 1200, nPagos, dFecIni )
聽 聽 聽 聽 聽EndIf

聽 聽 聽 聽 聽nTasa := aTasas[ xVar, 3 ] / 1200

聽 聽 聽 EndIf

聽 聽 聽 nInteres := Round( If( nTipInt < 4, nCapfin, nCapital ) * nTasa, 2 )
聽 聽 聽 nPagoCap := If( xVar > nGracia, If( nTipInt == 1, nPagoMes - nInteres, nCapMes ), 0 )
聽 聽 聽 nPagoCap += If( xVar == ( nPagos + nGracia ), nCapFin - nPagoCap, 0 )
聽 聽 聽 nTotInt 聽+= nInteres
聽 聽 聽 AAdd( aCalen, { xVar++, DtoC( dFecha ), nCapfin, Round( nTasa * 1200, 2 ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nInteres, nPagoCap, nInteres + nPagoCap, nCapFin -= nPagoCap } )
聽 聽 聽 dFecha := AddMonth( dFecha, 30 )

聽 聽EndDo

聽 聽nTotTot := nCapital + nTotInt

聽 聽aCtl[ 12 ]:SetArray( aCalen )

Return Nil

//--------------------------------------------------------------------------------------------------------------------//

Static Function AddMonth( dDate, nDays )

聽 聽Local nMonth, nMonths, nDay, nYear, ;
聽 聽 聽 聽 聽aDias := { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }

聽 聽If ( nDays % 30 ) > 0
聽 聽 聽 Return dDate + nDays
聽 聽EndIf

聽 聽nMonths := nDays / 30
聽 聽nMonth := Month( dDate ) + nMonths
聽 聽nDay := Day( dDate )
聽 聽nYear := Year( dDate )

聽 聽If nMonth > 12
聽 聽 聽 nMonth := nMonth - 12
聽 聽 聽 ++nYear
聽 聽EndIf

聽 聽If nDayant > 0
聽 聽 聽 nDay := nDayAnt
聽 聽EndIf

聽 聽nDayAnt := 0

聽 聽If nDay > aDias[ nMonth ]

聽 聽 聽 nDayAnt := nDay

聽 聽 聽 If nMonth == 2
聽 聽 聽 聽 聽If ( ( nYear % 4 ) == 0 ) .and. ( ( ( nYear % 100 ) != 0 ) .or. ;
聽 聽 聽 聽 聽 聽 ( ( nYear % 400 ) == 0 ) )
聽 聽 聽 聽 聽 聽 nDay := If( nDay > 29, 29, nDay )
聽 聽 聽 聽 聽Else
聽 聽 聽 聽 聽 聽 nDay := 28
聽 聽 聽 聽 聽EndIf
聽 聽 聽 Else
聽 聽 聽 聽 聽nDay := aDias[ nMonth ]
聽 聽 聽 EndIf

聽 聽EndIf

Return CtoD( Str( nDay, 2 ) + "." + StrZero( nMonth, 2) + "." + LTrim( Str( nYear ) ) )

//--------------------------------------------------------------------------------------------------------------------//

Static Function fGetTasas( nTasa, nPagos, dFecIni )

聽 聽Local oDlg, oFont, nEle, aCtl[ 3 ], ;
聽 聽 聽 聽 聽aArr := {}, ;
聽 聽 聽 聽 聽lOk 聽:= .F.

聽 聽If ! Empty( aTasas ) .and. Len( aTasas ) == nPagos .and. aTasas[ 1, 2 ] == dFecIni
聽 聽 聽 aArr := AClone( aTasas )
聽 聽Else
聽 聽 聽 For nEle := 1 To nPagos
聽 聽 聽 聽 聽AAdd( aArr, { nEle, dFecIni, nTasa } )
聽 聽 聽 聽 聽dFecIni := AddMonth( dFecIni, 30 )
聽 聽 聽 Next
聽 聽EndIf

聽 聽DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -11

聽 聽DEFINE DIALOG oDlg FROM 0, 0 To 400, 160 PIXEL COLOR CLR_BLACK, CLR_HBROWN ;
聽 聽 聽 聽 聽 TITLE "Inter茅s Variable" FONT oFont

聽 聽@ 聽0, 聽0 BROWSE aCtl[ 1 ] ARRAY aArr OF oDlg SIZE 80, 176 PIXEL CELLED ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN, CLR_BLACK, CLR_HGRAY, CLR_WHITE, CLR_BLACK

聽 聽ADD COLUMN TO aCtl[ 1 ] DATA ARRAY ELM 1 TITLE "Pago" SIZE 30 ;
聽 聽 聽 聽ALIGN DT_CENTER, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 1 ] DATA ARRAY ELM 2 TITLE "Fecha" SIZE 60 ;
聽 聽 聽 聽ALIGN DT_LEFT, DT_CENTER 3DLOOK FALSE, TRUE, TRUE

聽 聽ADD COLUMN TO aCtl[ 1 ] DATA ARRAY ELM 3 TITLE "Tasa" SIZE 60 ;
聽 聽 聽 聽ALIGN DT_LEFT, DT_CENTER PICTURE "###.##" 3DLOOK FALSE, TRUE, TRUE ;
聽 聽 聽 聽POSTEDIT { |uVar| fActTasa( aCtl[ 1 ], aCtl[ 1 ]:nAt, uVar ) } ;
聽 聽 聽 聽EDITABLE MOVE DT_MOVE_NEXT

聽 聽aCtl[ 1 ]:lNoHScroll := .T.
聽 聽aCtl[ 1 ]:nFreeze := 2
聽 聽aCtl[ 1 ]:lLockFreeze := .T.

聽 聽@180, 聽5 SBUTTON aCtl[ 2 ] PROMPT "&Aceptar" OF oDlg ;
聽 聽 聽 聽 聽 聽 RESOURCE "Save" SIZE 35, 14 PIXEL ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN ;
聽 聽 聽 聽 聽 聽 ACTION ( lOk := .T., oDlg:End() )

聽 聽@180, 45 SBUTTON aCtl[ 3 ] PROMPT "&Salir" OF oDlg RESOURCE "Exit" ;
聽 聽 聽 聽 聽 聽 SIZE 30, 14 PIXEL ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN ;
聽 聽 聽 聽 聽 聽 ACTION oDlg:End()

聽 聽ACTIVATE DIALOG oDlg CENTERED VALID ( oFont:End(), .T. )

聽 聽If lOk
聽 聽 聽 aTasas := AClone( aArr )
聽 聽EndIf

Return lOk

//--------------------------------------------------------------------------------------------------------------------//

Static Function fActTasa( oBrw, nEle, nTasa )

聽 聽For nEle := ++nEle To Len( oBrw:aArray )
聽 聽 聽 oBrw:aArray[ nEle, 3 ] := nTasa
聽 聽Next

聽 聽oBrw:Refresh()

Return Nil

//--------------------------------------------------------------------------------------------------------------------//

Function fExcel( oBrw, cFile, cTitle, oFnt, bExtern, aColSel, bPrintRow )

聽 聽Local oDlg, aCtl[ 9 ], lActivate, oFont, ;
聽 聽 聽 聽 聽nAvance := 0

聽 聽Default cFile 聽:= Padr( "MgLibro1.xls", 60 ), ;
聽 聽 聽 聽 聽 聽cTitle := ""

聽 聽lActivate := .T.
聽 聽cTitle 聽 聽:= PadR( cTitle, 128 )

聽 聽DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -11

聽 聽DEFINE DIALOG oDlg FROM 0, 0 TO 202, 360 PIXEL ;
聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN ;
聽 聽 聽 聽 聽 TITLE "Generar hoja de Excel"

聽 聽oDlg:nStyle := nOr( oDlg:nStyle, 4 )

聽 聽@ 11, 6 SAY aCtl[ 1 ] PROMPT "Archivo" OF oDlg ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 19, 9 PIXEL

聽 聽@ 11, 31 GET aCtl[ 2 ] VAR cFile OF oDlg SIZE 141, 9 PIXEL COLOR CLR_BLACK, CLR_WHITE FONT oFont ;
聽 聽 聽 聽 聽 聽 ACTION ( cFile := PadR( fSaveFile(), 60 ), aCtl[ 2 ]:Refresh() )

聽 聽@ 27, 6 SAY aCtl[ 3 ] PROMPT "T铆tulo" OF oDlg ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN SIZE 19, 9 PIXEL

聽 聽@ 27, 31 GET aCtl[ 4 ] VAR cTitle OF oDlg ;
聽 聽 聽 聽 聽 聽 FONT oFont UPDATE 聽;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_WHITE SIZE 141, 9 PIXEL

聽 聽@ 43, 31 SRADIO aCtl[ 5 ] VAR lActivate OF oDlg ;
聽 聽 聽 聽 聽 聽 PROMPT "Abrir Excel" CHECK ;
聽 聽 聽 聽 聽 聽 FONTS oFont, oFont UPDATE SIZE 50, 16 PIXELS ;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, CLR_HBROWN, CLR_WHITE, CLR_GRAY, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽CLR_BLACK

聽 聽@ 66, 36 SBUTTON aCtl[ 7 ] PROMPT "&Aceptar" OF oDlg RECT BORDER ;
聽 聽 聽 聽 聽 聽 RESOURCE "Save" ;
聽 聽 聽 聽 聽 聽 ACTION ( oBrw:ExcelOle( cFile, lActivate, aCtl[ 9 ], cTitle, oFnt,, bExtern, aColSel, bPrintRow ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oDlg:End() ) ;
聽 聽 聽 聽 聽 聽 FONT oFont SIZE 38, 12 PIXEL 聽;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, { CLR_WHITE, nRGB( 139, 125, 107 ), 3 }

聽 聽@66, 99 SBUTTON aCtl[ 8 ] PROMPT "&Salir" OF oDlg RECT BORDER ;
聽 聽 聽 聽 聽 聽 RESOURCE "Exit" ;
聽 聽 聽 聽 聽 聽 ACTION oDlg:End() ;
聽 聽 聽 聽 聽 聽 FONT oFont SIZE 38, 12 PIXEL 聽;
聽 聽 聽 聽 聽 聽 COLORS CLR_BLACK, { CLR_WHITE, nRGB( 139, 125, 107 ), 3 }

聽 聽@ 86, 聽6 METER aCtl[ 9 ] VAR nAvance OF oDlg TOTAL 100 ;
聽 聽 聽 聽 聽 聽 PROMPT "Avance" SIZE 168, 12 PIXEL FONT oFont ;
聽 聽 聽 聽 聽 聽 COLORS CLR_HBROWN, CLR_BLACK ;
聽 聽 聽 聽 聽 聽 BARCOLOR CLR_HBLUE, CLR_YELLOW

聽 聽ACTIVATE DIALOG oDlg CENTERED VALID ( oFont:End(), .T. )

Return Nil

//--------------------------------------------------------------------------------------------------------------------//

Static Function fSaveFile()

Return cGetFile( "Libro Excel (*.xls) | *.xls", "Selecciona el Archivo",, "\Mis Documentos\", .T., .T. )


.RC
Code (fw): Select all Collapse
Money 聽 ICON "\Fwh\Icons\Money.ico"
Calc 聽 聽BITMAP "\Fwh\Bitmaps\Calc.bmp"
Calen 聽 BITMAP "\Fwh\Bitmaps\Calendar.bmp"
Excel 聽 BITMAP "\TSBrowse\Bitmaps\Excel.bmp"
Quit 聽 聽BITMAP "\Fwh\Bitmaps\32x32\Quit.bmp"
Exit 聽 聽BITMAP "\Fwh\Bitmaps\16x16\Exit2.bmp"
Save 聽 聽BITMAP "\Fwh\Bitmaps\16x16\Save.bmp"


Espero te sirva.

Un abrazo.

Manuel Mercado G贸mez.
manuelmercado at prodigy dot net dot mx
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Funcion PAGO de excel
Posted: Tue Sep 15, 2009 10:31 PM

Gracias Manuel

pero podrias incluir el Ejecutable para ir viendolo ya que al compliar me salen errorres

desde ya muchas gracias

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Re: Funcion PAGO de excel
Posted: Tue Sep 15, 2009 10:54 PM
Patricio Avalos Aguirre wrote:pero podrias incluir el Ejecutable para ir viendolo ya que al compliar me salen errorres

Que raro acabo de compilarlo, en tu script de linkeo debes incluir SBrowsex.lib y Sbuttonx.lib ya que el programa usa ambas clases.

De cualquier forma aqu铆 puedes descargar el ejecutable:
http://www.box.net/shared/zdttjarkks

Un abrazo.

Manuel Mercado G贸mez.
manuelmercado at prodigy dot net dot mx
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Funcion PAGO de excel
Posted: Wed Sep 16, 2009 02:23 PM
Estimados

Muchas gracias a todos en especial a Armando que me envio la soluci贸n y a manuel por su generosidad

adjunto la formula para el calculo de cuotas

Code (fw): Select all Collapse
function Cuotainteres( capital, nInt, periodo )
local n, interes := nInt / 100

n := int( capital * interes / ( 1 - ( 1 + interes ) ^ -periodo ))

return( n )
//-----------------------------------------------------------------------------------------------------------
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl

Continue the discussion