Jun 19
Wykorzystanie ceny brutto w rachunkach aplikacji
W naszych serwisach bardzo często pojawia się zarządzanie cenami różnych produktów (wyliczanie cen, stawek VAT oraz innych skomplikowanych obliczeń). W większości przypadków podstawą jest cena netto, natomiast problem pojawia się, kiedy klient zażyczy aby podstawą była cena brutto!
Przy reprezentacji cen w postaci DECIMAL(X, 2) nie możliwe jest ustalenie dokładnej ceny netto, VAT oraz brutto w przypadku, gdy musimy ją pomnożyć przez jakąś liczbę. Rozpatrzmy przypadek, kiedy cena brutto wynosi 2.70zł a stawka podstawowa VAT to 22%:
A więc jak ja powyższym przykładzie widzimy, że kwota netto + kwota VAT daje nam dokładną cenę brutto. Radośnie zapisujemy do bazy cenę jednostkową i cieszymy się, że nasza aplikacja działa ale popatrzmy co się dzieje, kiedy zamawiamy 100 takich produktów:
Zgadza się! 221zł + 49zł = 270zł Cieszymy się (niestety zbyt wcześnie) ponieważ nasza aplikacja potrafi dodawać i mnożyć, ale jeżeli spojrzy na to bystre oko pani sekretarki z urzędu skarbowego to nam powie, że nie znamy podstaw matematyki ;( Ponieważ oto co następuje:
Powyżej już widać gołym okiem, że wszystkie stawki sie zgadzją. Jednakowoż za każdym razem wyliczamy cenę netto, na podstawie której znowu obliczamy kwotę VAT. Jeżeli chcemy przechowywać obie ceny (netto i brutto) jednostkowe w bazie danych należy to zrobić z odpowiednią precyzją, w moim przypadku było to 6 miejsc po przecinku (DECIMAL(X,6)) ponieważ mało prawdopodobne jest to, że ktoś zamówi x-set tysięcy sztuk jednego produktu.
Z ciekawości też poszukałem informacji na tego w jaki sposób rozwiązywane jest to w programach typowo magazynowych (np.: Subiekt) i okazało się, że w bazie przechowywana jest jednynie cena podstawowa, na której na bierząco wykonywane są obliczenia o dużej precyzji liczb :)

August 20th, 2008 at 10:32
i dokładnie tak to sie powinno robić ze przchowujesz cene jednostkowa i na tej podstawie wyliczać podatki, przy twoim założeniu vat jednostkowy na produkcie może być inny przy zamówieniu 100 sztuk niż przy zamawianiu 10000 sztuk a tak być nie może.
August 20th, 2008 at 01:21
Więc właśnie - nieważne czy w moim przypadku ceną wejściową jest netto czy brutto, ja mam zawsze zapisaną cenę netto o określonej precyzji, na podstawie której wykonuje pozostałe obliczenia ;)