powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Функция возвращает сумму госпошлины в суды общ.юрисдикции
5 сообщений из 5, страница 1 из 1
Функция возвращает сумму госпошлины в суды общ.юрисдикции
    #39280770
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдруг кому пригодится
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
        /// <summary>
        /// Возвращает сумму гос.пошлины (рублей) в суды общей 
        /// юрисдикции РФ по искам имущественного характера, подлежащих оценке 
        /// </summary>
        /// <param name="iskPrice">цена иска (рублей)</param>
        /// <returns>Возвращает сумму гос.пошлины (рублей) в суды общей 
        /// юрисдикции РФ по искам имущественного характера, подлежащих оценке</returns>
        public static decimal GetPosh(decimal iskPrice)
        {
            //актуально для законодательства РФ на 27.07.2016

            /*
             диапазоны  20 000.01 -  20 000.99
             диапазоны 100 000.01 - 100 000.99
             диапазоны 200 000.01 - 200 000.99
             
             не учтены НК РФ, применяется формула для меньшего
             , как в онлайн калькуляторе garant.ru/tools/calculator/gosposhlina             
             * 
             */
            decimal tmp = 0;
            if (iskPrice <= 20e3m)//до 20 т.р.
            {
                tmp = iskPrice * 0.04m;
                if (tmp < 400m)
                    tmp = 400m;
            }
            if (iskPrice < 20e3m + 1m)//неучтенный  20 000.01 -  20 000.99
            {
                tmp = iskPrice * 0.04m;
                if (tmp < 400m)
                    tmp = 400m;
            }
            else if (iskPrice <= 100e3m)//от 20 т.р до 100 т.р
            {
                tmp = 800m + (iskPrice - 20e3m) * 0.03m;
            }
            else if (iskPrice < 100e3m + 1m)//неучтенный 100 000.01 - 100 000.99
            {
                tmp = 800m + (iskPrice - 20e3m) * 0.03m;
            }
            else if (iskPrice <= 200e3m)//от 100 т.р до 200 т.р
            {
                tmp = 3200m + (iskPrice - 100e3m) * 0.02m;
            }
            else if (iskPrice < 200e3m + 1m)////неучтенный 200 000.01 - 200 000.99
            {
                tmp = 3200m + (iskPrice - 100e3m) * 0.02m;
            }
            else if (iskPrice <= 1e6m)//от 200 т.р до 1 млн.р 
            {
                tmp = 5200m + (iskPrice - 200e3m) * 0.01m;
            }
            else //от 1 млн.р
            {
                tmp = 13200m + (iskPrice - 1e6m) * 0.005m;
                if (tmp > 60e3m)
                    tmp = 60e3m;
            }            
            
            return Math.Round(tmp, 2, MidpointRounding.AwayFromZero);
            
        }


Ну и как правильно подсказали в теме Где разместить пост? хочу поделится подпрограммой , буду рад если кто поправит мой быдлокод, как бы его писали гуру?
...
Рейтинг: 0 / 0
Функция возвращает сумму госпошлины в суды общ.юрисдикции
    #39280811
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breee3
Код: c#
1.
GetPosh

https://translate.google.com/#en/ru/posh
...
Рейтинг: 0 / 0
Функция возвращает сумму госпошлины в суды общ.юрисдикции
    #39282349
breee3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, :D
Увы, совершенно не обладаю знанием английского юридического языка..
...
Рейтинг: 0 / 0
Функция возвращает сумму госпошлины в суды общ.юрисдикции
    #39282502
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
breee3,

Хранить параметры в тексте программы - дурной тон. Что бы не возится с базами я сейчас использовал XML.
Зато пришлось повозится с разделителем целой и дробной части.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?xml version="1.0" encoding="utf-8" ?>
<gosposh>
  <param>
    <lowmargin>-1</lowmargin>
    <p>0</p>
    <n>1</n>
    <k>0.04</k>
  </param>
  <param>
    <lowmargin>20000</lowmargin>
    <p>800</p>
    <n>1</n>
    <k>0.03</k>
  </param>
  <param>
    <lowmargin>100000</lowmargin>
    <p>3200</p>
    <n>1</n>
    <k>0.02</k>
  </param>
  <param>
    <lowmargin>200000</lowmargin>
    <p>5200</p>
    <n>0.01</n>
    <k>0.01</k>
  </param>
  <param>
    <lowmargin>1000000</lowmargin>
    <p>13200</p>
    <n>0</n>
    <k>0.005</k>
  </param>
  <margin>
    <min>400</min>
    <max>60000</max>
  </margin>
</gosposh>



Примерно так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
    class Program
    {
        static void Main(string[] args)
        {
            decimal iskPrice = 1;
            GovernmentFee(iskPrice);

            Console.WriteLine(GovernmentFee(iskPrice));
            Console.WriteLine(GetPosh(iskPrice));
            Console.ReadLine();
        }

        public static decimal GovernmentFee(decimal iskPrice)
        {
            DataSet dsGosPosh = new DataSet();
            dsGosPosh.ReadXml("GosPosh.xml");

            string sep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
            DataRow drm  = dsGosPosh.Tables["margin"].Rows[0];
            decimal min = Convert.ToDecimal(drm["min"]);
            decimal max = Convert.ToDecimal(drm["max"]);

            DataRow dr = dsGosPosh.Tables["param"].AsEnumerable()
                .Last(f => Convert.ToDecimal(f.Field<string>("lowmargin"))
                + Convert.ToDecimal(f.Field<string>("n").Replace(".", sep))
                < iskPrice);
            decimal p = Convert.ToDecimal(dr["p"]);
            decimal lowmargin = Convert.ToDecimal(dr["lowmargin"]);
            decimal k = Convert.ToDecimal(dr["k"].ToString().Replace(".", sep));
            decimal tmp =  p + (iskPrice - lowmargin) * k;
            if (tmp > max)
                tmp = max;
            else
                if (tmp < min)
                tmp = min;
            Math.Round(tmp, 2, MidpointRounding.AwayFromZero);
        }
    }
}
...
Рейтинг: 0 / 0
Функция возвращает сумму госпошлины в суды общ.юрисдикции
    #39283107
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Cat2
Код: c#
1.
Math.Round(tmp, 2, MidpointRounding.AwayFromZero);



Cat2
Код: c#
1.
return Math.Round(tmp, 2, MidpointRounding.AwayFromZero);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Функция возвращает сумму госпошлины в суды общ.юрисдикции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]