COOPENOMICS  v1
Кооперативная Экономика
ndfl.hpp
См. документацию.
1#pragma once
2
3#include <eosio/asset.hpp>
4#include <eosio/eosio.hpp>
5
28namespace BranchNdfl {
29
31inline constexpr int64_t RATE_PERCENT = 13;
32
47inline eosio::asset calc_tax(const eosio::asset& gross) {
48 eosio::check(gross.is_valid(), "Некорректная сумма для расчёта налога");
49 eosio::check(gross.amount >= 0, "Сумма для расчёта налога не может быть отрицательной");
50
51 // Единица «один рубль» в минорных единицах символа: 10^precision.
52 int64_t rouble = 1;
53 for (uint8_t i = 0; i < gross.symbol.precision(); ++i) rouble *= 10;
54
55 const int64_t numerator = gross.amount * RATE_PERCENT;
56 const int64_t denominator = 100 * rouble;
57 const int64_t roubles = (numerator + denominator / 2) / denominator;
58
59 return eosio::asset(roubles * rouble, gross.symbol);
60}
61
68inline eosio::asset calc_net(const eosio::asset& gross) {
69 const eosio::asset tax = calc_tax(gross);
70 eosio::check(tax.amount < gross.amount,
71 "Сумма материальной помощи слишком мала: после удержания налога выплачивать нечего");
72 return gross - tax;
73}
74
75} // namespace BranchNdfl
Удержание НДФЛ с материальной помощи доверенному кооперативного участка (requirement b6 «Экономика КУ...
Definition: ndfl.hpp:28
constexpr int64_t RATE_PERCENT
Ставка налога на доходы физических лиц, процентов.
Definition: ndfl.hpp:31
eosio::asset calc_net(const eosio::asset &gross)
Сумма к перечислению получателю — заявление за вычетом налога.
Definition: ndfl.hpp:68
eosio::asset calc_tax(const eosio::asset &gross)
Сумма налога, удерживаемая из материальной помощи.
Definition: ndfl.hpp:47