Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
82
Programe/Vechi/calcamortm.prg
Normal file
82
Programe/Vechi/calcamortm.prg
Normal file
@@ -0,0 +1,82 @@
|
||||
LOCAL cond,c
|
||||
|
||||
lnValRez = m.valrez
|
||||
IF VAL(m.an) >= 2004
|
||||
m.valrez = 0 && din 2004 trece ca si valoare amortizata
|
||||
ENDIF
|
||||
|
||||
cond='month(m.datapif)=val(m.nl) and year(m.datapif)=val(m.an) and m.uzuraprec=0'
|
||||
m.normaan=ROUND(m.normat/12,3)
|
||||
|
||||
IF m.valramasa = 0 AND m.dataeval = m.datapif
|
||||
m.valramasa = m.valin - m.valrez
|
||||
ENDIF
|
||||
|
||||
IF m.normat2=0
|
||||
m.normat2=m.normaan
|
||||
ENDIF
|
||||
|
||||
IF m.normat2lun=0
|
||||
m.normat2lun=m.normat
|
||||
ENDIF
|
||||
|
||||
DO CASE
|
||||
CASE UPPER(LEFT(m.tipamort,1))='L' &&LINIARA
|
||||
DO amortlin
|
||||
m.amortan=ROUND(m.amortlun*12,gnZ)
|
||||
CASE UPPER(LEFT(m.tipamort,1))='A' &&ACCELERATA
|
||||
IF (m.P>0 AND m.P<=0.5) AND m.UZURA<=12
|
||||
m.amortlun = IIF(m.UZURA>m.normat OR &cond ,0,IIF(M.UZURA=M.normat,M.valin-m.valrez-M.AMORTprec,ROUND((m.valin-m.valrez)*m.P/12,gnZ)))
|
||||
ELSE
|
||||
m.amortlun = IIF(m.UZURA>m.normat OR &cond ,0,IIF(M.UZURA=M.normat,M.valin-m.valrez-M.AMORTprec,ROUND(((m.valin-m.valrez)*(1-m.P))/(m.normat-12),gnZ)))
|
||||
ENDIF
|
||||
m.amortan=ROUND(m.amortlun*12,gnZ)
|
||||
CASE UPPER(LEFT(m.tipamort,1))='D' &&DEGRESIVA
|
||||
IF MOD(m.UZURA,12)=1
|
||||
c=12*m.k/m.normat
|
||||
m.amortan = IIF(m.UZURA>m.normat,0,ROUND((m.valin-m.valrez-m.AMORTprec)*c,gnZ))
|
||||
IF m.amortan<ROUND(12*(m.valin-m.valrez)/m.normat,gnZ)
|
||||
m.amortan = ROUND((m.valin-m.valrez-m.AMORTprec)/(ROUND(m.normat2lun/12,3)-ROUND(m.UZURA/12,3)),gnZ)
|
||||
ENDIF
|
||||
ENDIF
|
||||
m.amortlun = IIF(m.UZURA>m.normat OR &cond ,0,IIF(m.UZURA=m.normat,M.valin-m.valrez-M.AMORTprec,ROUND(m.amortan/12,gnZ)))
|
||||
ENDCASE
|
||||
|
||||
m.amorttot=m.amortlun+m.AMORTprec
|
||||
m.valrez = lnValRez
|
||||
|
||||
RETURN
|
||||
***------------------------------------------------------------------------------------------
|
||||
|
||||
PROCEDURE amortlin
|
||||
LOCAL cond,c,cond2
|
||||
cond='(month(m.datapif)=val(m.nl) and year(m.datapif)=val(m.an) and m.uzuraprec=0)' && in luna punerii in functiune
|
||||
|
||||
IF ROUND(12*VAL(m.an)+VAL(m.nl),0)>12*YEAR(m.dataeval)+MONTH(m.dataeval)+m.normat2lun
|
||||
cond2='(M.AMORTPREC>=M.valin-m.valrez)' && total amortizare din luna precedenta a ajuns la valoare-valoarea reziduala
|
||||
ELSE
|
||||
cond2 = '.f.'
|
||||
ENDIF
|
||||
|
||||
IF &cond OR &cond2
|
||||
m.amortlun =0
|
||||
ELSE
|
||||
IF ROUND(12*VAL(m.an)+VAL(m.nl),0)=12*YEAR(m.dataeval)+MONTH(m.dataeval)+m.normat2lun AND m.cota <> 0
|
||||
m.amortlun = M.valin - m.valrez - M.AMORTprec
|
||||
IF m.amortlun<0
|
||||
m.amortlun=0
|
||||
ENDIF
|
||||
ELSE
|
||||
m.amortlun = ROUND(m.valramasa*m.cota/12/100,gnZ)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF M.AMORTprec+M.amortlun>m.valin-m.valrez AND m.valin = m.valoare && cele care nu au fost reevaluate
|
||||
m.amortlun=M.valin-m.valrez-M.AMORTprec
|
||||
IF M.amortlun<0
|
||||
m.amortlun=0
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
***------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user