Yagoda писал(а):
ОК, если такое поведение заложено в модуль IPN, то как скриптом получить наработку в МБ и занести нужную наработку в рублях?
Пусть стоимость фиксированная.
Да такое поведение заложено в модуль IPN. Наверное надо на границе месяца считать оба часа - и предыдущий и текущий . Добавил в TODO
Yagoda писал(а):
ОК, так и буду делать наверное. Трафик считается исправно, можно взять прямо из базы.
Пример:
SELECT sum(`amount`) AS `bates` FROM `ipn_contract_data_1_201009` WHERE `cid` =3106 AND `sid` =1
Не могу понять, как зачислить наработку по определенной услуге...
Упс... Разобрался.
BalanceUtils.setContractAccount(int cid, java.util.Date time, int sid, float summa) - мне вполне подойдет.
Идея такая:
1. В первый час месяца наработку стандартной задачей "Обсчет логов IPN" не делать. Т.е. задать часы выполнения 1-23.
2. Добавить задачу "Обсчет логов IPN" каждый месяц, 1 число, 0 час, 58 минута.
3. Добавить скрипт на договоры. Выполнение по расписанию: 1 число, 0 часов, 2-4-6-8-....56 минуты.
Логика работы скрипта:
Если тариф с фиксированной оплатой (эти данные есть в общей библиотеке у меня), то - на выход.
Берем наработку в байтах из нужной таблицы ipn_contract_data_***.
Считаем наработку в рублях. Цена зависит от тарифа - опять в общей библиотеке.
Устанавливаем наработку по нужной услуге.
Хм... А если "ушел в минус"? Еще и лимит учитывать...
Просто обновление баланса закроет шлюз если надо?
Или этим занимается задача "Проверка шлюзов IPN"?
Уход в минус проверяет задача "Проверка шлюзов IPN" по балансу и лимиту.