88 lines
2.5 KiB
Plaintext
88 lines
2.5 KiB
Plaintext
Local cond,c
|
|
cond='month(m.datapif)=val(m.nl) and year(m.datapif)=val(m.an) and m.uzuraprec=0'
|
|
m.normaan=Round(m.normat/12,0)
|
|
*!* If m.normat2<0
|
|
*!* m.normat2=0
|
|
*!* Endif
|
|
|
|
*WAIT WINDOW STR(m.tipcalcul)
|
|
|
|
Do Case
|
|
Case Upper(Left(m.tipamort,1))='L' &&LINIARA
|
|
*m.amortlun = IIF(m.UZURA>m.NORMAT or &cond ,0,iif(M.uzura=M.normat,M.valoare-M.AMORTprec,ROUND((m.valoare-m.AMORTprec)/(m.normat-m.UZURA+1),0)))
|
|
Do amortlin
|
|
m.amortan=m.amortlun*12
|
|
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.valramasa-M.AMORTprec,Round(m.valramasa*m.P/12,0)))
|
|
Else
|
|
m.amortlun = Iif(m.UZURA>m.normat Or &cond ,0,Iif(M.UZURA=M.normat,M.valramasa-M.AMORTprec,Round((m.valramasa*(1-m.P))/(m.normat-12),0)))
|
|
Endif
|
|
m.amortan=m.amortlun*12
|
|
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.valramasa-m.AMORTprec)*c,0))
|
|
If m.amortan<12*m.valramasa/m.normat
|
|
m.amortan = (m.valramasa-m.AMORTprec)/(m.normat/12-Round(m.UZURA/12,0))
|
|
Endif
|
|
Endif
|
|
m.amortlun = Iif(m.UZURA>m.normat Or &cond ,0,Iif(m.UZURA=m.normat,M.valramasa-M.AMORTprec,Round(m.amortan/12,0)))
|
|
Endcase
|
|
|
|
|
|
|
|
m.amorttot=m.amortlun+m.AMORTprec
|
|
*wait wind m.denumire
|
|
Return
|
|
|
|
|
|
|
|
|
|
*__________________________________________________________
|
|
Proc 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
|
|
*cond2='((M.AMORTPREC>=M.VALRAMASA AND m.normat2#0) OR (M.AMORTPREC>=M.VALOARE AND m.normat2=0))'
|
|
cond2='(M.AMORTPREC>=M.valramasa-m.valrez)' && total amortizare din luna precedenta a ajuns la valoare-valoarea reziduala
|
|
|
|
|
|
IF m.normat2=0
|
|
m.normat2=m.normaan
|
|
ENDIF
|
|
IF m.normat2lun=0
|
|
m.normat2lun=m.normat2*12
|
|
ENDIF
|
|
|
|
*!* If m.normat2=0
|
|
*!* m.valramasa=m.valoare
|
|
*m.cota=Round(1/m.normaan*100,1)
|
|
*!* Else
|
|
m.cota=Round(1/m.normat2*100,1)
|
|
*!* Endif
|
|
|
|
|
|
If &cond Or &cond2
|
|
m.amortlun =0
|
|
Else
|
|
If M.UZURA=M.normat
|
|
m.amortlun =M.valramasa-M.AMORTprec
|
|
*!* IF m.amortlun<0
|
|
*!* m.amortlun=0
|
|
*!* endif
|
|
Else
|
|
*If m.tipcalcul=0
|
|
m.amortlun = Round(m.valramasa*m.cota/12/100,0)
|
|
*Else
|
|
* m.amortlun = Round((m.valramasa-m.AMORTprec)/(m.normat-m.UZURA+1),0)
|
|
*Endif
|
|
Endif
|
|
Endif
|
|
|
|
If M.AMORTprec+M.amortlun>M.valramasa
|
|
m.amortlun=M.valramasa-M.AMORTprec
|
|
If M.amortlun<0
|
|
m.amortlun=0
|
|
Endif
|
|
Endif
|
|
return |