i-tee / calc395
Расчёт процентов по статье 395 ГК РФ
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:JavaScript
This package is auto-updated.
Last update: 2025-06-14 12:05:52 UTC
README
PHP-Библиотека для расчета процентов по правилам статьи 395 ГК РФ
Эта библиотека разработана для автоматического расчета процентов за пользование чужими денежными средствами, в соответствии с нормами ст. 395 ГК РФ. Она особенно полезна для юристов, бухгалтеров и разработчиков, которым необходимо реализовать такой функционал в своих проектах.
Основные преимущества
- Простота использования: минимум настроек для интеграции.
- Готовые инструменты: HTML-шаблон, стили и JavaScript для быстрого запуска.
- Гибкость: возможность настройки данных (например, ставок и изменений сумм).
- Соответствие законодательству РФ: расчет по ключевым ставкам с учетом актуальных данных.
Демо-версия
Ознакомьтесь с работой калькулятора: Демо калькулятора.
Демонстрация позволяет проверить расчеты в реальном времени.
Установка
Для установки библиотеки используйте 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 - если использовать готовый интерфейс
Как использовать библиотеку
-
Подключение библиотеки
Импортируйте класс в вашем PHP-коде:
use Calc395\Calc395; $calc = new Calc395();
-
Передача данных для расчета
Формат данных:
$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);
-
Получение результата
После выполнения расчета метод
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": "Каникулы" // Описание интервала } ] }
Использование готового интерфейса
В комплекте есть готовый интерфейс калькулятора:
-
Подключите
jQuery
:<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
-
Выведите HTML-шаблон и скрипты через библиотеку:
$calc->getCalcStyle(); // Подключает CSS $calc->getCalcTmplHtml(); // Выводит HTML-шаблон $calc->getLangJSON(); // Создает языковую переменную $calc->getScriptTag(); // Подключает JavaScript
-
Настройте обработку AJAX-запросов:
if (isset($_GET['ajax']) && $_GET['ajax'] === 'true') { $calc->add($_GET['data']); echo json_encode($calc->getResult()); }
Пример гипотетического index.php
:
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, она нужна для скрипта калькулятора // <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> $calc::getCalcStyle(); # Выведет содержимое style.css $calc::getCalcTmplHtml(); # Выведет содержимое calccontainer.html $calc::getLangJSON(); # Создаст глобальную переменную в js calcLangData с языковыми переменными $calc::getScriptTag(); # Выведет содержимое script.js }
- Калькулятор из шаблона будет обращаться при помощи Ajax к текущему url и с помощью JavaScript показывать результаты расчета.
- По этому, добавьте обработку http-запросов: если в запросе есть get-переменная
ajax
и она равнаtrue
- то это запрос с данными из формы калькулятора. - Данные из запроса нужно передать классу
$calc = new Calc395()
методом$calc->add($_GET['data'])
. - Получить результат расчета
$data = $calc->getResult()
. - Вывести результат в виде JSON-объекта
echo json_encode($data)
Контакты
Если у вас есть вопросы или предложения, создайте issue на GitHub или свяжитесь с автором библиотеки.