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