Files
vfp_roaauto/COMUN/programe/suma_in_vorbe.prg

267 lines
6.6 KiB
Plaintext

*!* 30.06.2017
*!* marius.mutu
*!* adaugat parametru tcValuta
*!* MESSAGEBOX(suma_in_vorbe(1))
*!* MESSAGEBOX(suma_in_vorbe(10))
*!* MESSAGEBOX(suma_in_vorbe(100))
*!* MESSAGEBOX(suma_in_vorbe(1000))
*!* MESSAGEBOX(suma_in_vorbe(10000))
*!* MESSAGEBOX(suma_in_vorbe(100000))
*!* MESSAGEBOX(suma_in_vorbe(1000000))
*!* MESSAGEBOX(suma_in_vorbe(10000000))
*!* MESSAGEBOX(suma_in_vorbe(100000000))
*!* MESSAGEBOX(suma_in_vorbe(1000000000))
*!* MESSAGEBOX(suma_in_vorbe(10000000000))
*!* MESSAGEBOX(suma_in_vorbe(11000000000))
*!* MESSAGEBOX(suma_in_vorbe(11100000000))
*!* MESSAGEBOX(suma_in_vorbe(11110000000))
*!* MESSAGEBOX(suma_in_vorbe(11111000000))
*!* MESSAGEBOX(suma_in_vorbe(11111100000))
*!* MESSAGEBOX(suma_in_vorbe(11111110000))
*!* MESSAGEBOX(suma_in_vorbe(11111111000))
*!* MESSAGEBOX(suma_in_vorbe(11111111100))
*!* MESSAGEBOX(suma_in_vorbe(11111111110))
*!* MESSAGEBOX(suma_in_vorbe(11111111111))
*!* Function SUMA_IN_VORBE
Parameter tnSuma, tcValuta
LOCAL lcValuta, lcLei, lcLeu, lcBani, lcBan
lcValuta = IIF(EMPTY(m.tcValuta), 'RON', ALLTRIM(UPPER(tcValuta)))
lcLei = IIF(INLIST(m.lcValuta,'LEI','RON'), 'lei', IIF('EUR'$m.lcValuta, 'euro', IIF(m.lcValuta = 'USD', 'dolari', IIF(m.lcValuta = 'GBP', 'lire', 'lei'))))
lcLeu = IIF(INLIST(m.lcValuta,'LEI','RON'), 'un leu', IIF('EUR'$m.lcValuta, 'un euro', IIF(m.lcValuta = 'USD', 'un dolar', IIF(m.lcValuta = 'GBP', 'o lira', 'un leu'))))
lcBani = IIF(INLIST(m.lcValuta,'LEI','RON'), 'bani', IIF('EUR'$m.lcValuta, 'centi', IIF(m.lcValuta = 'USD', 'centi', IIF(m.lcValuta = 'GBP', 'pence', 'bani'))))
lcBan = IIF(INLIST(m.lcValuta,'LEI','RON'), 'un ban', IIF('EUR'$m.lcValuta, 'un cent', IIF(m.lcValuta = 'USD', 'un cent', IIF(m.lcValuta = 'GBP', 'un peny', 'un ban'))))
Local i,j, putere, lit,numar1,numar2
Local lnSuma, lnSuma2
Local A[1], B[1]
Store 0 To i,j,lnSuma,lnSuma2
Store 1 To putere
Store '' To lit,numar1,numar2
lnSuma=Round(tnSuma,2)
lnSuma2=(lnSuma-Int(lnSuma))*100
lnSuma=Int(lnSuma)
*!* lnSuma=ROUND(lnSuma,gnPa)
*!* FOR j=1 TO gnPa
*!* putere=10*putere
*!* ENDFOR
*!* lnSuma2=(lnSuma-Int(lnSuma))*putere
numar1=Space(12)
*!* numar2=Space(gnPa)
numar2=Space(2)
numar1=Str(lnSuma,12)
*!* numar2=Str(lnSuma2,gnPa)
numar2=Str(lnSuma2,2)
Dimension A(12)
A(1)=Subs(numar1,12,1)
A(2)=Subs(numar1,11,1)
A(3)=Subs(numar1,10,1)
A(4)=Subs(numar1,9,1)
A(5)=Subs(numar1,8,1)
A(6)=Subs(numar1,7,1)
A(7)=Subs(numar1,6,1)
A(8)=Subs(numar1,5,1)
A(9)=Subs(numar1,4,1)
A(10)=Subs(numar1,3,1)
A(11)=Subs(numar1,2,1)
A(12)=Subs(numar1,1,1)
Sele mila1
*********************
Loca For NR=Val(A(12))
lit=lit+Alltri(cr1)
If Val(A(11))=1
If Val(A(10))=0
Loca For NR=Val(A(11))
lit=lit+Alltri(cr5)
Else
Loca For NR=Val(A(10))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr4)
lit=lit+Alltri(Strtran(cr4,[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Else
If Val(A(10))=0
Loca For NR=Val(A(11))
lit=lit+Alltrim(cr5)
Else
Loca For NR=Val(A(11))
lit=lit+Alltrim(cr2)
Loca For NR=Val(A(10))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr3)
*!* modificare ROAAUTO v 2.1.12
lit=lit+Alltri(Strtran(Strtran(cr3,[unu],[un]),[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Endif
Do Case
CASE Val(A(10)) = 1 AND VAL(a(11)) = 0 AND VAL(a(12)) = 0 && modificare ROAAUTO v 2.1.12
lit=lit+' miliard'
Case Val(A(12)) # 0
lit=lit+' miliarde'
Case Val(A(11)) # 0
lit=lit+' miliarde'
Case Val(A(10)) # 0
lit=lit+' miliarde'
Endcase
***********************
Loca For NR=Val(A(9))
lit=lit+Alltri(cr1)
If Val(A(8))=1
If Val(A(7))=0
Loca For NR=Val(A(8))
lit=lit+Alltri(cr5)
Else
Loca For NR=Val(A(7))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr4)
lit=lit+Alltri(Strtran(cr4,[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Else
If Val(A(7))=0
Loca For NR=Val(A(8))
lit=lit+Alltrim(cr5)
Else
Loca For NR=Val(A(8))
lit=lit+Alltrim(cr2)
Loca For NR=Val(A(7))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr3)
*!* modificare ROAAUTO v 2.1.12
lit=lit+Alltri(Strtran(Strtran(cr3,[unu],[un]),[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Endif
Do Case
CASE Val(A(7)) = 1 AND VAL(a(8)) = 0 AND VAL(a(9)) = 0 && modificare ROAAUTO v 2.1.12
lit=lit+' milion'
Case Val(A(9)) # 0
lit=lit+' milioane'
Case Val(A(8)) # 0
lit=lit+' milioane'
Case Val(A(7)) # 0
lit=lit+' milioane'
Endcase
***********************
Loca For NR=Val(A(6))
lit=lit+Alltri(cr1)
If Val(A(5))=1
If Val(A(4))=0
Loca For NR=Val(A(5))
lit=lit+Alltri(cr5)
Else
Loca For NR=Val(A(4))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr4)
lit=lit+Alltri(Strtran(cr4,[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Else
If Val(A(4))=0
Loca For NR=Val(A(5))
lit=lit+Alltrim(cr5)
Else
Loca For NR=Val(A(5))
lit=lit+Alltrim(cr2)
Loca For NR=Val(A(4))
*!* modificare ROAAUTO v 2.0.5
*!* lit=lit+Alltri(cr3)
*!* modificare ROAAUTO v 2.1.12
lit=lit+Alltri(STRTRAN(Strtran(cr3,[unu],[una]),[doi],[doua]))
*!* modificare ROAAUTO v 2.0.5 ^
Endif
Endif
Do Case
CASE Val(A(4)) = 1 AND VAL(a(5)) = 0 AND VAL(a(6)) = 0 && modificare ROAAUTO v 2.1.12
lit=lit+' mie'
Case Val(A(6)) # 0
lit=lit+' mii'
Case Val(A(5)) # 0
lit=lit+' mii'
Case Val(A(4)) # 0
lit=lit+' mii'
Endcase
*********************
Loca For NR=Val(A(3))
lit=lit+Alltri(cr1)
If Val(A(2))=1
If Val(A(1))=0
Loca For NR=Val(A(2))
lit=lit+Alltri(cr5)
Else
Loca For NR=Val(A(1))
lit=lit+Alltri(cr4)
Endif
Else
If Val(A(1))=0
Loca For NR=Val(A(2))
lit=lit+Alltrim(cr5)
Else
Loca For NR=Val(A(2))
lit=lit+Alltrim(cr2)
Loca For NR=Val(A(1))
lit=lit+Alltrim(cr3)
Endif
Endif
*!* modificare ROAAUTO v 2.1.12
*!* lit=lit+' lei'
IF lnSuma # 0
IF lnSuma = 1
lit = m.lcLeu && 'un leu'
Else
lit=lit+' ' + m.lcLei && 'lei'
Endif
Endif
*!* modificare ROAAUTO v 2.1.12 ^
*********************
Do Case
Case lnSuma2>1
lit=lit+' si'
Dimension B(2)
B(1)=Subs(numar2,2,1)
B(2)=Subs(numar2,1,1)
Do Case
Case Val(B(2))=1 And Val(B(1))!=0
Loca For NR=Val(B(1))
lit=lit+Alltri(cr4)
Case Val(B(2))=0
Loca For NR=Val(B(1))
lit=lit+Alltrim(cr3)
Case Val(B(1))=0
Loca For NR=Val(B(2))
lit=lit+Alltrim(cr5)
Otherwise
Loca For NR=Val(B(2))
lit=lit+Alltrim(cr2)
Loca For NR=Val(B(1))
lit=lit+Alltrim(cr3)
Endcase
lit=lit+' ' + m.lcBani &&& 'bani'
Case lnSuma2=1
lit=lit+'si ' + m.lcBan && 'un ban'
Endcase
Sele mila1
*!* use
lit=Strtran(lit,' ','')
Return lit