;Example of bdbfs plugin file.
;Современная величина ренты (Present value investment)
;В Excel называется ПЗ. В FoxPro - Pv.
;Два возможных формата:
;1)постоянный платеж,процент,число платежей
;2)годовой платеж,процент,всего лет,начислений в год,выплат в год
;Если что-то из первых трех параметров не задано предлагает ввести.

PARAMETERS nConst,nPercent,nNumber,nPay,nInv
LOCAL nRes, color, _aGets, _aVars, lEdit:=.F.

cCodePage:='cp866'
IF VALTYPE(nInv)<>'N'
	nInv:=1
	lEdit:=.T.
ENDIF
IF VALTYPE(nPay)<>'N'
	nPay:=1
	lEdit:=.T.
ENDIF
IF VALTYPE(nNumber)<>'N'
	nNumber:=1
	lEdit:=.T.
ENDIF
IF VALTYPE(nPercent)<>'N'
	nPercent:=1
ENDIF
IF VALTYPE(nConst)<>'N'
	nConst:=0
ENDIF

IF lEdit
*Что-то не было задано
	color:=SetColor(m->_im)
	ScrSave()
	Panel(9,10,16,69,{'Современная величина ренты (Present value investment)'}, {_im, _im, _im} )
	DispOutAt(16, 14, 'F10 - запись', _HdColor)
	_aVars:={nConst,nPercent,nNumber}
	_aGets:={ {12,14,'Постоянный платеж','999999.99'},;
		  {12,44,'Процент (норма)','999.99'},;
		  {14,14,'Число платежей (периодов)','999'}}
	IF !ReadCycle(_aGets,_aVars,15,MaxCol()-20)
		ScrRest()
		RETURN 0
		#BREAK
	ENDIF
	ScrRest()
	nConst:=_aVars[1]
	nPercent:=_aVars[2]
	nNumber:=_aVars[3]
ENDIF
nRes:=1+nPercent*0.01/nPay
RETURN nConst*(1- nRes^(-nNumber*nPay))/((nRes^(nPay/nInv)-1)*nInv)
