Files
roaimob/Programe/Vechi/calcamortmv.prg

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