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:
88
Programe/Vechi/calcamortmv.prg
Normal file
88
Programe/Vechi/calcamortmv.prg
Normal file
@@ -0,0 +1,88 @@
|
||||
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
|
||||
Reference in New Issue
Block a user