Так как в билингвой системе ABillS на тарифах с дневным начислением, когда у пользователя нет денег на счету, автоматически не изменяется статус услуги на Слишком маленький депозит, а клиентов загоняет в отрицательный баланс и тогда только отключает, то мне пришлось сделать скрипт из SQL запроса и добавить его в Cron, так как часто бывали случаи когда пользователи жаловались что их загнало в минус.
Для начала посмотрим результат выполнения запроса SELECT, например в меню «Настройки» — «SQL Терминал» или создадим файл скрипта и выполним его:
#!/bin/bash
mysql -u root -D abills -e "SELECT im.uid, b.deposit FROM internet_main im
LEFT JOIN users u ON (im.uid = u.uid)
LEFT JOIN bills b ON (u.bill_id= b.id)
LEFT JOIN tarif_plans tp ON (tp.tp_id = im.tp_id)
WHERE tp.day_fee>0 AND b.deposit+u.credit<tp.day_fee
AND im.disable=0 AND u.reduction=0 AND u.company_id=0;"
Если все ок и отобразился список пользователей которых должно отключить, то создадим файл скрипта с SQL запросом который будет изменять им статус на «Слишком маленький депозит»:
#!/bin/bash
mysql -u root -D abills -e "UPDATE internet_main im
LEFT JOIN users u ON (im.uid = u.uid)
LEFT JOIN bills b ON (u.bill_id = b.id)
LEFT JOIN tarif_plans tp ON (tp.tp_id = im.tp_id)
SET im.disable=5
WHERE tp.day_fee>0 AND b.deposit+u.credit<tp.day_fee
AND im.disable=0 AND u.reduction=0 AND u.company_id=0;"
Выполнять его нужно в полночь перед скриптами «periodic» например в 23:57, так как пользователя сразу отключит, а если выполнить позже, то выполнится списание:
57 23 * * * root /ixnfo.com/scripts/internet_main_change_status.sh
Смотрите другие мои статьи про ABillS