W jaki sposób od strony kodu powinno przeliczać się (zaokrąglać) kwoty towarów/usług na fakturach VAT w Polsce? Znalazłem coś takiego:
Podsumowując należy stwierdzić, iż przy wystawianiu faktur VAT, kwoty wykazywane w fakturze należy zaokrąglać do pełnych groszy, przy czym końcówki poniżej 0,5 grosza pomija się, a końcówki 0,5 grosza i wyższe zaokrągla się do 1 grosza.
Wymyśliłem sobie, że będę to przeliczał w UI na żywo w obydwie strony (brutto na netto i netto na brutto) i potem sprawdzał w kontrolerze w taki sposób:
GrossValueAdded = Math.Round(NetValue * Quantity * (1 + VATRate), 2, MidpointRounding.AwayFromZero)
Ale problem zaczyna się gdy chcę obsłużyć kwoty brutto (np. klient ma mieć kwotę brutto 55,00 zł). Jak wtedy wyliczyć kwotę netto do przechowania w systemie, żeby to powyższe sprawdzenie działało poprawnie (przy powyższym nie da się wyliczyć takiej kwoty netto, żeby po zaokragleniu zgadzało się równe brutto co do grosza)?