В модуле кредита учитываются замороженные услуги модулем ядра services. Напоминаю, что там есть параметр wait_pos_balance - если он установлен, то когда завершается услуга абонента, проверяется баланс "хватит ли подключить новую услугу?". Если денег не хватает - услуга не подключается (замораживается) пока на балансе не станет хватать денег для подключения ее и всех услуг, которые были заморожены вместе с ней. Теперь кредит выдается так, чтобы хватило на разморозку, даже если баланс в данный момент положительный, а с разморозкой стенет отрицательным
Все равно при положительном балансе и "услуга заморожена" не дает кредит и пишет - "Кредитом можно воспользоваться только при отрицательном балансе
"
с этим патчем (не помню кто то с форума делал) работает:
#<ACTION> file=>'web/user/credit.pl',replace=>'',after=>'credit'
$balance >= 0 && Error L('need_pos_balance');
my $credit_amt = $balance * -1;
$credit_amt > $amt_max && Error L('over_max_amt');
#<REPLACE>
#$balance >= 0 && Error L('need_pos_balance');
my $credit_amt = $balance * -1;
my $need_credit = 0;
my $db = Db->sql("SELECT us.pay_id, us.service_id,s.price,us.tm_end FROM users_services as us ".
"LEFT JOIN services as s ON us.service_id = s.service_id WHERE uid=?", $uid);
Db->ok or Error $lang::user::soft_error;
while( my %p = $db->line )
{
my $time_res = $p{tm_end} - $ses::t;
if (($time_res > 0 and $time_res < 24*3600*$days) or $p{pay_id} == 0) {
$need_credit = 1;
$credit_amt = $credit_amt + $p{price};
}
}
$credit_amt > $amt_max && Error L('over_max_amt');
if (($need_credit and $credit_amt <= 0) or $credit_amt <= 0) {
Error L('no_need_credit');
}
#<ACTION> file=>'web/lang/RU_user.pl',replace=>'',after=>'credit'
submit_msg => 'Получить кредит',
#<REPLACE>
submit_msg => 'Получить кредит ',
no_need_credit => 'Вам не требуется кредит в данный момент!',
#<ACTION> file=>'web/lang/UA_user.pl',replace=>'',after=>'credit'
submit_msg => 'Отримати кредит',
#<REPLACE>
submit_msg => 'Отримати кредит ',
no_need_credit => 'Вам не потрібен кредит в даний момент!',