Страница 1 из 1

Функционал простенького биллинга

Добавлено: 03 сен 2018, 13:57
dracul
Добрый день!

У нас есть база клиентов. Хотим сделать отдельную таблицу платежей. В нее будут заноситься все поступившие платежи от всех клиентов, а также списания.

В связи с этим есть 2 задачи:

1. Выводить в поле "Баланс" у клиента сумму всех операций по данному клиенту. Путем выборки из таблицы всех операций по номеру договора или иному значению, и их сложения.

2. Производить ежемесячно списание платежа с баланса абонента путем автоматического внесения расходной записи в таблицу всех операций.

Есть ли возможность такую функцию реализовать путем имеющегося или запланированного в версии 2.3 функционала? Например, повторяющимися заданиями и MySQL запросами?

Re: Функционал простенького биллинга

Добавлено: 04 сен 2018, 09:54
dracul
Разверну мысль.

Я давно уже сам хочу написать пару внешних скриптов.

Первый будет отвечать за периодическое списание платежа. Путем поиска в таблице клиентов строк, где поле "дата платежа" совпадает с текущей (по числу месяца), при нахождении строки получать значение полей "договор" и "платеж", далее создавать в таблице "Список операций" запись о списании платежа, подставлять в поля "договор" и "платеж" полученные на предыдущем шаге значения.

Второй скрипт запускается раз в сутки. В таблице клиентов по очереди для каждой строки получает значение поля "договор", затем в таблице Список операций находит все записи, где поле "договор" соответствует полученному ранее значению, получает из всех записей значение поля "значение", суммирует и вставляет в поле "Баланс" в записи в таблице клиентов.
Для этого скрипта возможность ручного запуска при необходимости (если, напрмиер, делали коррекцию и нужно обновить баланс).

Так вот, анонсирован же функционал MySQL запрос для более сложных связей между сущностями. даст ли этот новый функционал возможность хотя бы отчасти реализовать описанное выше?

Re: Функционал простенького биллинга

Добавлено: 06 сен 2018, 09:10
support
Бета версия доступна для тестирования, пробуйте, полагаю что с MySQL запросом должно получится.

Re: Функционал простенького биллинга

Добавлено: 06 сен 2018, 10:26
dracul
Судя по всему, подсчет текущего баланса по списку операций получится с помощью MySQL запроса. Но там тоже такой минус получается, что если ставить галку "выполнять динамически", то, как я понимаю, при каждом обращении к таблице будет выполняться запрос для каждой записи, а это может быть заметно долго, если много записей.

А вот ежемесячное списание, в принципе, с помощью повторяющихся действий можно сделать, но придется делать для каждого клиента отдельное повторяющееся задание. Получится очень громоздко все это, так как клиентов много.