Marcin MazurekRSS

Kwota słownie: 1,50 zł to nie jest pięć groszy

Kwota 1,5 zł zapisana słownie jako „jeden złoty pięć groszy". Widziałem to w szablonie faktury, w druku KP i we własnym skrypcie sprzed lat, więc nie mam prawa się z tego śmiać.

Różnica między poprawnym a błędnym zapisem to w tym przypadku dziesięciokrotność. Na kwocie 1,5 zł nikt tego nie zauważy. Na 12 340,5 zł już warto, żeby ktoś zauważył.

Skąd się bierze ten błąd

Z jednej linijki kodu. Ktoś dzieli tekst na przecinku, bierze to, co jest po prawej stronie, i zamienia na słowa. Dla „1,50" wychodzi pięćdziesiąt, dla „1,5" wychodzi pięć.

A część po przecinku to części setne, nie „tyle groszy, ile cyfr". Poprawnie trzeba ją najpierw uzupełnić zerem z prawej strony, a nie z lewej — 1,5 zł to pięćdziesiąt groszy, 1,05 zł to pięć groszy.

Ten sam błąd wychodzi przy danych z bazy. Kolumna typu decimal odda „1.5", nie „1.50", i jeżeli po drodze nie ma formatowania do dwóch miejsc, skrypt dostaje dokładnie to, na czym się wykłada.

Druga pułapka: odmiana

Złoty, złote czy złotych rozstrzyga ostatnia cyfra — ale nie zawsze:

  • dokładnie 1 to „jeden złoty", natomiast 21, 31 czy 101 to już „złotych",
  • ostatnia cyfra 2, 3 lub 4 daje „złote": dwa złote, dwadzieścia dwa złote, sto cztery złote,
  • cała reszta to „złotych": pięć złotych, dziewięć złotych, dwadzieścia złotych,
  • i wyjątek, na którym wykłada się każda reguła patrząca tylko na ostatnią cyfrę — dwanaście, trzynaście i czternaście złotych, a nie „złote".

Grosze odmieniają się tak samo: jeden grosz, dwa grosze, pięć groszy, dwanaście groszy.

Gdzie ten zapis jest w ogóle potrzebny

Na fakturze nie jest obowiązkowy. Ustawa o VAT wylicza elementy, które faktura musi zawierać, i zapisu słownego na tej liście nie ma.

Zwyczaj wziął się z dokumentów, w których dopisanie jednej cyfry przed kwotą jest realnym ryzykiem: weksle, czeki, dokumenty kasowe KP i KW, umowy pożyczki. Z „1 200" łatwo zrobić „11 200", ze słowa „tysiąc" już nie. Poza tym zdarza się, że wymaga tego procedura kontrahenta albo treść umowy — i wtedy dyskusja o obowiązku jest bezcelowa, po prostu trzeba to wpisać.

Dwa formaty groszy, jeden dokument

Obie formy są poprawne: pełna („pięćdziesiąt groszy") i księgowa („50/100"). Ta druga jest krótsza i odporna na błąd odmiany, dlatego dominuje w programach księgowych.

Ważniejsze od wyboru jest trzymanie się go w całym dokumencie. Jeżeli w pierwszej pozycji piszesz „50/100", to w podsumowaniu nie pisz „pięćdziesiąt groszy".

Do pojedynczych kwot używam kwotaslownie.pl — wpisujesz liczbę, wybierasz walutę i format groszy, dostajesz gotowy tekst do skopiowania. Jest tam też opcja wielkości liter, bo część wzorów umów wymaga wersalików, oraz przełącznik pomijania zerowych groszy.

Jeżeli generujesz to u siebie w kodzie

Warto mieć stały zestaw przypadków testowych i przepuszczać przez niego każdą zmianę:

  1. 1,5 — ma wyjść pięćdziesiąt groszy, nie pięć.
  2. 1,05 — pięć groszy.
  3. 13,00 — trzynaście złotych, nie „trzynaście złote".
  4. 21,00 — dwadzieścia jeden złotych, mimo że kończy się jedynką.
  5. 0,01 — zero złotych i jeden grosz.
  6. 1 000 000,00 — sprawdzenie, czy spacja w tysiącach nie rozwala parsowania.

Sześć linijek testu, a wyłapują praktycznie wszystko, co w tym zadaniu potrafi pójść źle.

Zobacz również