Jump to content
Local
ant0xa

ванпанч скрипт снятие аб платы

Recommended Posts

помогите, пожалуйста, не могу найти :

видел скрипт, снимающий абонентскую плату со всех. очень надо, сервер в дауне простоял в полночь, надо снять деньги теперь массово.

Share this post


Link to post
Share on other sites

время на сервере перевидите назад, потом обратно.

 

Share this post


Link to post
Share on other sites
1 час назад, ant0xa сказав:

помогите, пожалуйста, не могу найти :

видел скрипт, снимающий абонентскую плату со всех. очень надо, сервер в дауне простоял в полночь, надо снять деньги теперь массово.

 

 

Думаю это должно быть что-то типа такого.

Не тестил, накидал от фонаря.

set_time_limit(0);
$tariffPrices = zb_TariffGetPricesAll();
$users = new nya_users();
$users->where('Passive', '=', 0);
$all = $users->getAll();
$i = 0;
if (!empty($all)) {
    foreach ($all as $io => $each) {
        $userTariff = $each['Tariff'];
        if (isset($tariffPrices[$userTariff])) {
            $userFee = $tariffPrices[$userTariff];
            if ($userFee > 0) {
                $feeCharge = '-' . $userFee;
                $billing->addcash($each['login'], $feeCharge);
                log_register('CHANGE FixStargazerFee (' . $each['login'] . ') ON ' . $feeCharge);
            }
        } else {
            show_warning(__('Skipping') . ' ' . $each['login']);
        }
        $i++;
    }
    show_info(__('users processed') . ': ' . $i);
} else {
    show_error(__('No') . ' ' . __('Users'));
}

Это естественно для помесячной и посуточной.

Для размазанной - естественно нужно сделать что-то типа

 $userFee=($tariffPrices[$userTariff]/31);

 

Edited by nightfly

Share this post


Link to post
Share on other sites
Цитата

 

$billing->addcash($each['login'], $feeCharge);

log_register('CHANGE FixStargazerFee (' . $each['login'] . ') ON ' . $feeCharge);

 

Есть ли процедура записи в лог движения денег а не вот эта вот?

 

op_TransactionAdd не хотелось бы дёргать, ибо она изменит LastCashAddTime скорее всего. А мне хотелось бы, чтобы снятие денег выглядело как простое снятие абонентки старгейзером. Видимо, для этого надо прикинуться старгейзером и напрямую срать в  stargazer.log

чего, опять же, не хочется. 

Share this post


Link to post
Share on other sites
1 час назад, ant0xa сказав:

op_TransactionAdd не хотелось бы дёргать

он тут вообще каким боком?

 

1 час назад, ant0xa сказав:

ибо она изменит LastCashAddTime скорее всего

Это поле вас вообще еб...ть не должно.

 

1 час назад, ant0xa сказав:

А мне хотелось бы, чтобы снятие денег выглядело как простое снятие абонентки старгейзером. Видимо, для этого надо прикинуться старгейзером и напрямую срать в  stargazer.log

1. можно.

2. не объязательно

 

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

Share this post


Link to post
Share on other sites
1 час назад, nightfly сказал:

op_TransactionAdd не хотелось бы дёргать

он тут вообще каким боком?

Он тоже кладёт деньги, и эту проводку видно во всех местах, где её должно быть видно. Положить минус 20  с $paysys="OP:CORERECTOR" и пусть абонент видит, что деньги не просто утекли со счёта.

 

Цитата

Это поле вас вообще еб...ть не должно.

Я его использую в своих целях, мне вот надо знать в своих скриптах, что юзер давно бабки не платил. Стимулировать как-то юзеров. СМСочки слать и всякие такие дела.

 

Цитата

1. можно.

2. не объязательно

 

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

 

Когда я в модуле "деньги" вручную корректирую баланс, запись об этом попадает в лог. Хочется этого же самого, но в скрипте. 

zb_CashAdd($login, $cash, $operation, $cashtype, $note);

я так думаю, надо эту функцию использовать, я угадал?

Share this post


Link to post
Share on other sites
16 минут назад, ant0xa сказав:

Он тоже кладёт деньги, и эту проводку видно во всех местах, где её должно быть видно

Ну вообще и с табуреткой поeбаться можно, не отрицаю.

 

16 минут назад, ant0xa сказав:

Я его использую в своих целях, мне вот надо знать в своих скриптах, что юзер давно бабки не платил. Стимулировать как-то юзеров. СМСочки слать и всякие такие дела.

Настолько xyевое решение, насколько это возможно.

 

Для этого придумать можно что угодно, начиная от

SELECT `login`,`date` from `payments` group by `login` order by `date` DESC

и заканчивая вообще чем угодно типа

 WHERE `date` < DATE_SUB(NOW(), INTERVAL 3 MONTH);

Почему, спонтанные изменения LastCashAddTime имеют мало общего с "юзер бабки давно не платил" - это уже вам повод подумать на досуге.

 

41 минуту назад, ant0xa сказав:

zb_CashAdd($login, $cash, $operation, $cashtype, $note);

я так думаю, надо эту функцию использовать, я угадал?

Угадали. Это уже ближе к денежным операциям как таковым.

 

http://ubilling.net.ua/api_doc/namespaces/default.html#method_zb_CashAdd

Share this post


Link to post
Share on other sites

супер. Исправил скрипт на использование таблички пэйментс. Спасибо за подсказки, сейчас всё работает так, как я хотел

Edited by ant0xa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×