CurrentUser rašė:
> Kazko tylu. Tikriausiai neaiskiai parasiau.
> Cia turima raumeny Gyv.pajamu mokescio skaiciavimo formule iskaitant
> lengvatas uz vaikus
GPM įstatymas, žinok, ne trijų puslapių dydžio ir bendras GPM
apskaičiavimo algoritmas yra gana sudėtingas, nes GPM suma
apskaičiuojama vertinant visus/įvairius apmokestinimo aspektus ir
niuansus (kuriuos žino tik tas, kas tą GPM apskaičiuoja): įvairių rūšių
pajamos, įvairiausios išlygos/sąlygos, lengvatos.
(Pvz.: gavai palikimą, pardavei (kada, kaip, už kiek) NT, automobilį,
grybų pusę tonos ir t.t.?)
Jei reikia apskaičiuoti GPM tik darbo santykių pajamų kontekste, tai
ir tokiu atveju, reikia visų pirma pasikliauti buhalteriu, o ne
o.programming...
O šiaip, GPM305/GPM308 yra tekstinis failas ir visas VBA kodas jame
puikiai matyti.
Kaip ir tokie perliukai, kurie priverčia nusišypsoti:
objRE.Pattern = "^\d\d\d\d\d\d\d$" '7
Set Matches = objRE.Execute(reiksme)
For Each Match in Matches
if match.value=reiksme then log=true
Next
objRE.Pattern = "^\d\d\d\d\d\d\d\d\d$" '9
Set Matches = objRE.Execute(reiksme)
For Each Match in Matches
if match.value=reiksme then log=true
Next
objRE.Pattern = "^\d\d\d\d\d\d\d\d\d\d$" '10
Set Matches = objRE.Execute(reiksme)
For Each Match in Matches
if match.value=reiksme then log=true
Next
objRE.Pattern = "^\d\d\d\d\d\d\d\d\d\d\d$" '11
Set Matches = objRE.Execute(reiksme)
For Each Match in Matches
if match.value=reiksme then log=true
Next
case "IBAN"
objRE.Pattern = "^LT\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$" ' LT + 18N
Set Matches = objRE.Execute(reiksme)
Taip ir įsivaizduoju, kaip trindami akis bent kelis sykius iš eilės
skaičiavo \d ir net komentarą pridėjo, kiek tų \d turi būti... :-)
Vietoje viso šio kvailoko šmoto buvo galima parašyti:
'objRE.Pattern = "^(\d{7}|\d{9}|\d{10}|\d{11})$"
objRE.Pattern = "^(\d{7}|\d{9,11})$"
if objRE.Test(reiksme) then
log=true
end if
Na, nukrypau. Žodžiu: to VBA kodo — *daug*, kaip ir dera GPM algoritmo
sudėtingumui ir jis gana kreivas ir painus. Todėl nieko gero be doro
supratimo ką ir kam darai, nebus...