Сфера застосування кредитного калькулятора досить широка - від інтернет-магазинів до сайтів з продажу автомобілів і нерухомості. Розглянемо процес написання зручного, швидкого і масштабується калькулятора за допомогою php і jquery. Я розгляну тут тільки розрахунок аннуитетного платежу, тому що він зараз найбільш поширений в банках, однак використовуючи вихідні, не важко буде доопрацювати його, додавши інші варіанти розрахунку.
Скрипт складається з 6 файлів:
- index.php - фронтальна частина калькулятора;
- functions.php - функції розрахунку кредиту і формування html-коду таблиці виплат;
- options.php - допоміжний файл з параметрами;
- ajax.php - обробка асинхронного запиту з параметрами кредиту і повернення результатів розрахунку;
- script.js - jquery-код для відправки ajax-запиту на сервер;
- style.css - стилі оформлення форми і таблиці.
Повний код файлів можна подивитися, скачавши вихідний код, я зупиню увагу на ключових моментах, які потребують пояснення.
На самому початку файлу підключаємо options.php. Поки що в цьому файлі міститься масив $ month_array. де ми перераховуємо місяці року російською мовою. Дані масиву необхідні для форми, щоб користувачі могли вказувати місяць початку виплат (для зручного відображення даних в таблиці).
Далі підключаємо jquery. script.js і файл стилів style.css.
У тілі документа описуємо форму введення вихідних даних - текстові поля для введення суми, терміну кредиту, а також процентної ставки.
Потім йде два випадають списку, де можна вибрати місяць і рік початку виплат.
В кінці файлу описуємо елементи з ідентифікаторами payment. overpay і schedule - вони будуть заповнені результатами, який поверне ajax-запит.
functions.php
У цьому файлі містяться дві функції, які відповідають за розрахунок результатів кредиту (credit) і формування таблиці виплат (render_table). Також в самому верху ми викликаємо файл options.php
Параметр функціонально $ array - це масив який містить в собі кількість елементів, рівних кількості місяців, зазначених в поле термін кредиту. Тобто якщо кредит береться на три роки, масив буде містити 36 елементів. Кожен з цих елементів, в свою чергу, являє подмассів з наступними ключами:
Алгоритм функції простий: оголошуємо змінну $ return. яку заповнюємо html-кодом таблиці, яка містить дані виплат для кожного місяця. Спершу формуємо шапку таблиці, а потім за допомогою foreach заповнюємо tbody.
Сам масив, який передається функції render_table ми отримаємо в функції credit.
Функція credit ($ term, $ rate, $ amount, $ month, $ year, $ round = 2)
- $ Term - термін кредиту в місяцях
- $ Rate - процентна ставка
- $ Amount - сума кредиту
- $ Month - місяць початку виплат
- $ Year - рік початку виплат
- $ Round - кількість цифр після коми для обчислюваних сум
Оголошуємо глобальну змінну $ month_array з файлу options.php
Оголошуємо масив, який потім поверне функція, в нього ми будемо розміщувати всі дані розрахунку.
Проводимо невелику затвердження даних. Термін кредиту - ціле число, сума кредиту і процентна ставка може мати дробову частину. Крім того, в цих значення ми замінюємо кому на крапку (якщо є), тому що користувач може в поле вводу ввести кому замість точки - тоді вона округлятиметься в меншу сторону і ми отримаємо невірні результати.
Розраховуємо місячну процентну ставку по кредиту (річна ставка, поділена на 12):
Обчислюємо коефіцієнт ануїтету:
Дізнаємося розмір щомісячних виплат та округляємо його до заданої точності:
У змінну $ dept (залишок заборгованості за кредитом) заносимо суму всього кредиту.
Це цифра на момент оформлення кредиту - далі ми будемо віднімати з неї щомісячні суми, спрямовані на погашення заборгованості.
Код вище якраз і формує ті самі подмассіви, які потім будуть використовуватися для створення таблиці виплат функцією render_table. Цикл for повторюємо відповідно до кількості місяців кредиту.
Всередині циклу обчислюємо суму платежу за відсотками і на погашення основної заборгованості:
В кінці кожного проходу циклу зменшуємо суму основної заборгованості на суму:
Всі розрахунки готові, залишилося тільки повернути результат
В результаті масив $ result містить суму переплати, суму щомісячного платежу і вже готовий html-код, оброблений попередньо функцією render_table.
Цей файл отримує POST-дані, отримані з форми введення вихідних даних і повертає результат назад в index.php
Підключаємо файл з функціями розрахунку:
Забираємо дані з масиву $ _POST
Викликаємо функцію credit з файлу functions.php
Відправляємо результат розрахунку в форматі json:
Тут все досить просто - ми використовуємо єдиний обробник, що перехоплює відправку форму із заповненими вихідними даними.
Коли це трапляється, збираємо необхідні значення з форми і асинхронним запитом відправляємо їх в файл ajax.php. який, в свою чергу, повертає json-масив. Його ми розпаковуємо в об'єкт за допомогою JSON.parse і заповнюємо заготовлені елементи файлу index.php результатами розрахунку.
Це лише базовий варіант калькулятора, який тепер можна масштабувати, доповнюючи необхідні елементи, наприклад, додаткову візуалізацію, змінні або інші формули розрахунку кредиту, валідацію.