POS AMEN · živi dio Genesis mreže · chain c1237 → c1741 → c2241 → c2245 (ovaj zapis)

Naš POS engine izračuna identičan broj kao Synesis, red po red.

Nije re-zbrajanje Synesisovih vlastitih polja. Ovo je stvarna funkcija _izracunaj_stavku() iz produkcijskog koda (pos/services/checkout.py), pozvana nad 49.416 sirovih blagajničkih stavki dviju stvarnih firmi, čiji rezultat je uspoređen sa Synesisovim spremljenim iznosima. Jedina razlika koja je ostala — točno jedan cent, na točno jednom retku od 15.510 — pronađena je do korijena i objašnjena niže, ne sakrivena.

Ispravak metode (pošteno, prije brojki)

Zašto ovaj zapis, a ne samo c1237/c1741

Prethodni testovi (i dalje istiniti) provjeravali su da se Synesisovi vlastiti brojevi slažu sami sa sobom — stavka-suma jednaka je zaglavlju bona, zaglavlje jednako zaključku smjene, sve iz iste Synesis baze. To je vrijedna provjera integriteta uvezenih podataka, ali ne dokazuje da naš sustav, kad primi iste sirove ulaze, sam izračuna isti broj.

Ovaj test to popravlja: umjesto ponovnog zbrajanja Synesisovih polja, uvozimo i pozivamo pravu funkciju iz živog koda nad svakom stavkom (količina, cijena, PDV stopa) i uspoređujemo NJEZIN nezavisan izračun sa Synesisovim spremljenim rezultatom po stavci i po računu.

Formule (točno onakve kakve su u kodu)

1 · Bruto iznos stavke
brutto = zaokruzi( količina × cijena )
Metoda B (zadano): cijena je bruto, s PDV-om uključenim.
pos/services/checkout.py — _izracunaj_stavku()
2 · PDV (top-down, RRIF metoda)
pdv_iznos = zaokruzi( brutto_neto × pdv% / (100 + pdv%) ) neto = brutto_neto − pdv_iznos
PDV se vadi IZ bruto iznosa nakon rabata, ne dodaje se na neto.
pos/services/checkout.py — _izracunaj_stavku()
3 · Zaokruživanje ("cake") — TOČNO pravilo
ROUND_HALF_UP na 2 decimale (0.01), PO STAVCI, ne po računu
Aritmetičko zaokruživanje naviše na pola centa, primijenjeno na svaki redak posebno prije zbrajanja — CIS/fiskalizacijski standard. Synesis (staro Access-bazirano rješenje) koristi bankarsko zaokruživanje (ROUND_HALF_EVEN) — razlika između ta dva pravila pojavljuje se ISKLJUČIVO kad iznos padne točno na granicu pola centa. Vidi nalaz niže — točno jedan takav slučaj postoji u cijelom testu.
CENT = Decimal("0.01"); rounding=ROUND_HALF_UP
4 · Rabat — dvije stvarne konvencije, obje poštovane
Široki Šor: konačan iznos = naš_brutto − Item_DiscountAmmount (rabat zaseban, npr. 15% na hranu) Friško: konačan iznos = naš_brutto (Item_Discount = šifra vjernosti, NE postotak)
Nalaz iz c1237/c1741: polje "Item_Discount" u Synesisu ima različito značenje po firmi — kod Friška je to kod programa vjernosti (npr. "200"), ne rabat. Da smo to polje slijepo protumačili kao postotak, dobili bismo pogrešan rezultat kod SVAKE stavke koja ima taj kod. Testirano oprezno, po firmi, ne uopćeno.

Ukupan rezultat — dvije firme, sve stavke

49.416
stavki testirano ukupno
29.831
računa (bona) provjereno
147.067,20 €
ukupan promet (obje firme, Synesis)
1 od 15.510
redak s objašnjenom razlikom (0,01 €) — vidi nalaz niže
Široki Šor — OPG Kruljac Sladana · Kasa2026-01.mdb (najnoviji izvoz)
RačunArtiklKol.CijenaPDV%RabatSynesisNaš POSRazlika
69BEEF BURGER310,0013%4,50 (15%)25,5025,500,00
69CEVAPI VELIKI18,0013%1,20 (15%)6,806,800,00
69PALAČINKE14,0013%0,60 (15%)3,403,400,00
2PIVO OSJEČKO 0,522,5025%—5,005,000,00
4409SIR (1,49 kg — vidi nalaz niže)1,4912,5025%1,86 (10%)16,7616,770,01
svih 7.4717.471 / 7.471 računa unutar objašnjenog raspona · 15.510 / 15.510 stavki obrađenoΣ 0,01
Friško Pekarnica · Kasa2026-01.mdb (Uvijek Friško)
RačunArtiklKol.CijenaPDV%RabatSynesisNaš POSRazlika
1SLANAC 80gr20,405%kod "200" (ne rabat!)0,800,800,00
1KIFLA PECIVO 80gr10,405%—0,400,400,00
svih 22.36022.360 / 22.360 računa OK · 33.906 / 33.906 stavki OKΣ 0,00
Retci "svih X" su zbirni redak, ne pojedinačan artikl — pokazuju da je svaka stavka i svaki račun provjeren, ne samo primjeri prikazani iznad. Puni popis (49.416 redaka) čuva se u testnom izvještaju, dostupan na zahtjev.

Gdje je taj cent otišao — pronađeno do korijena

Nalaz, ne pretpostavka — Zakon 58 (test mora naći TOČAN uzrok)

Prvi pokušaj usporedbe pokazao je 173 "razlike" reda veličine 0,00000000000001 € — to je bio lažni trag: Synesisova stara Access baza sprema iznose kao binarni decimalni broj (IEEE-754) koji ne može točno zapisati brojeve poput 9,20 (sprema ih kao 9,199999999999999). Kad se to ukloni pravilnim zaokruživanjem, ostaje točno jedan pravi slučaj:

Račun
#4409
Artikl
SIR
Količina
1,49 kg
Cijena
12,50 €/kg
Umnožak
1,49 × 12,50 = 18,625 € — točno na granici pola centa
Synesis (bankarsko zaokruživanje)
18,625 → 18,62

Zadnja znamenka (2) je parna → ostaje. − rabat 1,86 = 16,76 €

Naš POS (ROUND_HALF_UP, CIS standard)
18,625 → 18,63

Pola centa uvijek gore, po zakonskom fiskalnom pravilu. − rabat 1,86 = 16,77 €

Zašto baš ovaj jedan redak od 15.510: samo roba koja se prodaje na težinu (kg, s decimalnom količinom) može slučajno proizvesti umnožak koji točno padne na granicu 0,xx5. Komadna roba (cijeli brojevi) to praktički nikad ne proizvede. Nije formula-greška ni s jedne strane — dvije različite, obje legitimne konvencije zaokruživanja koje se razlikuju samo na toj točnoj granici.

Odluka za Ivana/Mariju: zadržati ROUND_HALF_UP (vjerojatno zakonski ispravnije, CIS standard) i prihvatiti ovu objašnjenu, dokumentiranu iznimku — ili mijenjati zaokruživanje da kopira Synesisovu naviku. CC preporuča zadržati fiskalni standard.

Zaključci

Drugo čitanje — rezultat

Naš POS engine (produkcijski kod, ne testni stub), pokrenut nad sirovim Synesis ulazima dvije stvarne firme, samostalno je izračunao:

Formule korištene u testu su doslovno iste funkcije koje danas rade u produkcijskom Genesis POS-u — nisu preslikane niti pojednostavljene za potrebe ovog testa.

Što Marija provjerava (amen je njezin)

Ovaj zapis ne zatvara O-030 — dokazuje da je tehnički izračun ispravan. Amen je Marijina presuda, ne CC-ova ni Ivanova.

  1. Nasumično odabrati 5-10 redaka iz gornjih tablica i ručno preračunati (kalkulator, ne vjerovati ekranu)
  2. Provjeriti da formule gore odgovaraju onome što ona zna o PDV-u/rabatima u stvarnom poslovanju obje firme
  3. Posebno pogledati "Friško rabat" red — potvrditi da kod "200" STVARNO jest šifra vjernosti, ne propušten pravi rabat
  4. Pogledati račun #4409 (SIR) i odlučiti: zadržati naše zaokruživanje (CIS standard) ili uskladiti sa Synesisom — poslovna odluka, ne tehnička
  5. Ako se slaže: amen. Ako ne: javiti točno koji redak i zašto — to postaje novi nalaz, ne skriva se

Provjeri sam — na pet nezavisnih čvorova

Ovaj zapis nije samo tvrdnja na stranici. Zapečaćen je i stoji na pet čvorova u različitim mrežama i kod različitih pružatelja — nijedan od njih nije nužan da bi se provjerio.

čvorpoveznica za provjerupravi atomizmišljen ID
EUgenesis.limit-connect.com/v/db4d18344e…200 autentično404
ESno-limit.world/v/db4d18344e…200 autentično404
DEsati.ink/v/db4d18344e…200 autentično404
NEWfina-connect.online/v/db4d18344e…200 autentično404
MARlimit-connect.com/v/db4d18344e…200 autentično404

Stupac „izmišljen ID“ nije ukras. Da svih pet čvorova vraća „autentično“ na bilo što, poveznica ne bi ništa značila. Zato se svaki provjerava i s izmišljenim brojem — i svaki mora reći ne.

Puni otisak: db4d18344e46e76cc3f7cf4420ff6aeb2610f4130def025b7cd97513dcf3908f

Pošteno o vremenu: novi atom ne osvane na svih pet istog trenutka — izmjereno kašnjenje od pečaćenja do prvog udaljenog čvora bilo je oko 6 minuta. Prije toga udaljeni čvor odgovara 404, i to je točan odgovor, ne kvar.