Polako privodeći kraju rad na programu za obračun zarada, naleteo sam na kako mi se čini nerešiv problem – zahtevano iskazivanje zaokruženih iznosa u pojedinim obrascima.
Naime, iz ko zna kog razloga, državne birokrate su propisale da što se njih tiče iznosi ispod dinara ne postoje te iako se obračun zarade vrši sa decimalama koje izražavaju pare (koliko ja znam u Srbiji je to još uvek važeća veličina) većina obrazaca vezanih za obračun zarade moraju da se iskazuju u zaokruženim iznosima.
Tako na primer OD obrazac ima polja u kojima se iskazuju iznosi doprinosa za socijalno osiguranje na teret poslodavca i zaposlenog, što je u slučaju prijavljenim od strane knjigovođe sa kojim sarađujem tokom testiranja obračuna dovelo do sledećeg slučaja.
Precizno obračunati doprinosi na zaradu:
- PIO na teret radnika 3600,79 din
- ZDR na teret radnika 2013,17 din
- NEZ na teret radnika 245,51 din.
- PIO na teret poslodavca 3600,79 din
- ZDR na teret poslodavca 2013,17 din
- NEZ na teret poslodavca 245,51 din
UKUPNO: 11.718,94 din
Ako zaokružim ovaj zbir dobijam naravno 11.719 din uz vrlo malu grešku tako da je to ciljani zbir zaokruženih sabiraka.
Prosto zaokruživanje
Ako sad krenem onako da zaokružujem svaki sabirak zasebno dobijam
- PIO na teret radnika 3601 din
- ZDR na teret radnika 2013 din
- NEZ na teret radnika 246 din.
- PIO na teret poslodavca 3601 din
- ZDR na teret poslodavca 2013 din
- NEZ na teret poslodavca 246 din
UKUPNO: 11.720 din.
Problem: dinar previše.
Balansirano zaokruživanje.
Ja sam pre par meseci za ove potrebe razvio ceo algoritam oko “pametnog zaokruživanja” koji uzima u obzir kumulativni efekt zaokruživanja kod sekvence zaokruživanja te ako bi njega primenio na ova 6 iznosa rezultat bi bio nešto poput ovog:
- PIO na teret radnika 3601 din
- ZDR na teret radnika 2013 din
- NEZ na teret radnika 245 din.
- PIO na teret poslodavca 3601 din
- ZDR na teret poslodavca 2013 din
- NEZ na teret poslodavca 246 din
UKUPNO: 11.719 din.
Problem: Doprinosi za nezaposlenost na teret radnika i poslodavca nisu isti – razlikuju se za dinar
Evo kako sam došao do tih iznosa 3600,79+0.00 = 3600,79 => ~= 3601 din
3600.79 – 3601 = -0.21 balans2013.17 – 0.21= 2012.96 => ~=2013 din
2013.17 – 2013 = +0.17 – 0.21 = -0.04 balans 245.51-0.04 = 245.47 => ~= 245 din.
245.51 – 245 = 0.51 – 0.04 = +0.47 balans
3600,79 + 0,47 = 3601.26 => ~= 3601 din
3600.79 – 3601 = – 0.21 + 0.47 = + 0.26 balans
2013.17+0.26= 2013.43 => ~=2013 din
2013.17 – 2013 = 0.17 + 0.26 = +0.43 balans245.51+0.43 = 245.94 => ~= 246 din.
245.51 -246 = -0.49 + 0.43 = -0.06 balans
Rešenje?
Moj zaključak je da je problem nemoguće rešiti kako je postavljen i da je jedin pravo rešenje ili da birokrate dobiju obrasce sa preciznim ciframa ili da kao zemlja ukinemo parice i sve svuda izražavamo u celim dinarima.
Do tad, pošto rešenja tačnog nema ja sam odlučio da idem sa najprostijim – prostim matematičkim zakruživanjem.
A vi?