PHPackages                             i-tee/calc395 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. i-tee/calc395

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

i-tee/calc395
=============

Расчёт процентов по статье 395 ГК РФ

00JavaScript

Since Dec 11Pushed 1y ago1 watchersCompare

[ Source](https://github.com/i-tee/calc395)[ Packagist](https://packagist.org/packages/i-tee/calc395)[ RSS](/packages/i-tee-calc395/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Калькулятор процентов по 395 ГК РФ
==================================

[](#калькулятор-процентов-по-395-гк-рф)

PHP-Библиотека для расчета процентов по правилам статьи 395 ГК РФ
-----------------------------------------------------------------

[](#php-библиотека-для-расчета-процентов-по-правилам-статьи-395-гк-рф)

Эта библиотека разработана для автоматического расчета процентов за пользование чужими денежными средствами, в соответствии с нормами ст. 395 ГК РФ. Она особенно полезна для юристов, бухгалтеров и разработчиков, которым необходимо реализовать такой функционал в своих проектах.

---

### Основные преимущества

[](#основные-преимущества)

- **Простота использования:** минимум настроек для интеграции.
- **Готовые инструменты:** HTML-шаблон, стили и JavaScript для быстрого запуска.
- **Гибкость:** возможность настройки данных (например, ставок и изменений сумм).
- **Соответствие законодательству РФ:** расчет по ключевым ставкам с учетом актуальных данных.

---

### Демо-версия

[](#демо-версия)

Ознакомьтесь с работой калькулятора: [Демо калькулятора](https://tee.su/calc395).
Демонстрация позволяет проверить расчеты в реальном времени.

---

### Установка

[](#установка)

Для установки библиотеки используйте Composer:

```
composer require i-tee/calc395
```

---

### Состав пакета

[](#состав-пакета)

После установки вы получите следующие файлы:

- **`Calc395.php`** — основной файл библиотеки, необходимый для расчетов.
- **`calccontainer.html`** — HTML-шаблон, используемый для визуального интерфейса (поддерживает Bootstrap 5).
- **`lang_ru.ini`** — файл локализации (русский язык).
- **`rates.json`** — данные о ключевых ставках Центробанка РФ с 2016 по 2025 гг.
- **`script.js`** — JavaScript для взаимодействия интерфейса с библиотекой.
- **`style.css`** — стили для оформления HTML-шаблона.

---

### Минимальные требования

[](#минимальные-требования)

- PHP 7.4 или выше.
- Composer для управления зависимостями.
- jQuery - если использовать готовый интерфейс

---

### Как использовать библиотеку

[](#как-использовать-библиотеку)

1. **Подключение библиотеки**

    Импортируйте класс в вашем PHP-коде:

    ```
    use Calc395\Calc395;

    $calc = new Calc395();
    ```
2. **Передача данных для расчета**

    Формат данных:

    ```
    $data = [
        "amount" => "100000", // Сумма долга (строка для точности больших значений)
        "startDate" => "2023-11-03", // Дата начала периода (ГГГГ-ММ-ДД)
        "endDate" => "2024-02-15",   // Дата окончания периода
        "changes" => [ // Необязательные данные
            "plus" => [ // Изменения, увеличивающие долг, комментарий
                ["date" => "2024-12-03", "summ" => "1000", "comment" => "comment text"]
            ],
            "minus" => [ // Изменения, уменьшающие долг, комментарий
                ["date" => "2024-11-27", "summ" => "1500", "comment" => "comment text"]
            ],
            "ignoring" => [  //Интервал времени, когда начисления процентов не происходит, комментарий
                ["date1" => "2023-11-05", "date2" => "2023-11-16", "comment" => "comment text"]
            ]
         ]
    ];

    $calc->add($data);
    ```
3. **Получение результата**

    После выполнения расчета метод `getResult()` вернет данные в виде массива:

    ```
    $result = $calc->getResult();
    echo json_encode($result);
    ```

    Пример результата:

    ```
    {
         "intervals": [  // array — Массив интервалов времени, на которые разбивается расчёт
             {
                 "comment": false,   // Комментарий, может быть взят из периода не начислений
                 "from": "2023-11-03",  // string (формат даты) — Начало интервала
                 "to": "2023-12-17",  // string (формат даты) — Конец интервала
                 "accrual": "true",  // boolean — Начисляется неустойка или нет (true/false)
                 "days": 45,  // integer — Количество дней в интервале
                 "debt": 100000,  // float — Основная сумма долга на начало интервала
                 "dy": 365,  // integer — Количество дней в году, для расчёта дневной ставки
                 "rate": "15",  // string — Процентная ставка в процентах
                 "penalty": 1849.32  // float — Сумма неустойки, рассчитанная для этого интервала
             }
         ],
         "changes": [ // array — Массив уменьшений или величений основной суммы долга
             {
                 "date": "2023-11-13",   // string (формат даты) — Дата изменения
                 "summ": -12500, // float — Сумма изменения
                 "comment": "СберБанк"   // string — Комментарий изменения
             }
         ],
         "amount": 100000,  // integer — Основная сумма долга
         "final_amount": 100000,  // integer — Итоговая сумма долга (если не было изменений)
         "penalty_days": 100,  // integer — Количество дней, на которые начислены проценты
         "all_days": 105,  // integer — Общее количество дней
         "penalty_summ": 4473.95,  // float — Общая сумма неустойки за все периоды
         "mean_rate": 15.57,  // float — Средняя ставка процента по всем периодам
         "debt": 104473.95,  // float — Итоговая сумма долга с учётом неустойки
         "startDate": "2023-11-03",  // string (формат даты) — Дата начала расчёта
         "endtDate": "2024-02-15",  // string (формат даты) — Дата окончания расчёта
         "ignoring": [   // array — Массив интервалов времени, когда начисления процентов не производятся
             {
                 "date1": "2023-11-10",  // string (формат даты) — Начало интервала
                 "date2": "2023-12-10",  // string (формат даты) — Конец интервала
                 "comment": "Каникулы"   // Описание интервала
             }
         ]
     }
    ```

---

### Использование готового интерфейса

[](#использование-готового-интерфейса)

В комплекте есть готовый интерфейс калькулятора:

1. Подключите `jQuery`:

    ```

    ```
2. Выведите HTML-шаблон и скрипты через библиотеку:

    ```
    $calc->getCalcStyle();    // Подключает CSS
    $calc->getCalcTmplHtml(); // Выводит HTML-шаблон
    $calc->getLangJSON();     // Создает языковую переменную
    $calc->getScriptTag();    // Подключает JavaScript
    ```
3. Настройте обработку AJAX-запросов:

    ```
    if (isset($_GET['ajax']) && $_GET['ajax'] === 'true') {
        $calc->add($_GET['data']);
        echo json_encode($calc->getResult());
    }
    ```

---

### Пример гипотетического `index.php`:

[](#пример-гипотетического-indexphp)

```
use Calc395\Calc395;    # Подкоючаем библиотеку
$calc = new Calc395();  # Создаем экземпляр класса

if(isset($_GET['ajax']) and $_GET['ajax'] == true){     # Если запрос от калькулятора с данными для расчёте

    $calc->add($_GET['data']);  # Передаем данные калькулятору
    $data = $calc->getResult(); # Получаем результат расчета

    header('Content-Type: application/json');   # Указываем что ответ будет в вормате JSON
    echo json_encode($data);    # Выводим объект с расчётами

}else{  # Если запрос не от калькулятора, открываем страницу калькулятора

    # Не забываем подлючить jQuery, она нужна для скрипта калькулятора
    //

    $calc::getCalcStyle();    # Выведет содержимое style.css
    $calc::getCalcTmplHtml(); # Выведет содержимое calccontainer.html
    $calc::getLangJSON();     # Создаст глобальную переменную в js calcLangData с языковыми переменными
    $calc::getScriptTag();    # Выведет содержимое script.js

}
```

1. Калькулятор из шаблона будет обращаться при помощи Ajax к текущему url и с помощью JavaScript показывать результаты расчета.
2. По этому, добавьте обработку http-запросов: если в запросе есть get-переменная `ajax` и она равна `true` - то это запрос с данными из формы калькулятора.
3. Данные из запроса нужно передать классу `$calc = new Calc395()` методом `$calc->add($_GET['data'])`.
4. Получить результат расчета `$data = $calc->getResult()`.
5. Вывести результат в виде JSON-объекта `echo json_encode($data)`

---

### Контакты

[](#контакты)

Если у вас есть вопросы или предложения, создайте issue на GitHub или свяжитесь с [автором библиотеки](https://tee.su).

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity18

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/a015db4a7685f4085911c978ec6c4b13fc9d71317e1ef1e18ee65d317923a69b?d=identicon)[i-tee](/maintainers/i-tee)

---

Top Contributors

[![i-tee](https://avatars.githubusercontent.com/u/131390090?v=4)](https://github.com/i-tee "i-tee (16 commits)")

### Embed Badge

![Health badge](/badges/i-tee-calc395/health.svg)

```
[![Health](https://phpackages.com/badges/i-tee-calc395/health.svg)](https://phpackages.com/packages/i-tee-calc395)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
