A2Billing v1.8+ BUGS

Всё о биллингах.

Модераторы: Admins, Модераторы

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

A2Billing v1.8+ BUGS

Сообщение anest » 08 июл 2010, 07:21

У кого не работает Dashboard а именно не рисуются графики - достаточно в корень www положить файл .htaccess добавив туда строчку "php_value display_errors Off"
или можно в глобальном конфиге php.ini эту опцию выключить (что не так элегантно по сравнению с первым примером)
ps: если кто знает как это поправить патчем просьба сообщить.

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 13 фев 2011, 21:51

Не ожидал такого:

в процедуре cid_sanitize (это которая выбирает номер CID или DID для подстановки в CallerID) есть запрос
lib/Class.A2Billing.php
строка 2219

Код: Выделить всё

$QUERY .=  "SELECT cc_did.did ".
                                  " FROM cc_did ".
                                  " JOIN cc_did_destination ON cc_did_destination.id_cc_did=cc_did.id ".
                                  " JOIN cc_card ON cc_did_destination.id_cc_card=cc_card.id ".
                                  " WHERE &#40;cc_callerid.activated=1 OR cc_callerid.activated='t'&#41; AND cc_did_destination.activated=1 AND cc_did.startingdate => NOW&#40;&#41; AND cc_did.expirationdate <= NOW&#40;&#41;".
                                  " AND cc_card.username='".$this->cardnumber."' ";
                        $QUERY .= "ORDER BY 1";
он никогда не отработает потому что там 3 ошибки, контроль по датам как-то странно написан (дата начала больше текущей даты... и истекает срок до текущей даты), оператор ">=" написан "=>", в запросе не делается выборка из cc_callerid а проверка полей из нее делается.
Одним словом CallerID из DID-ов никогда не будет выбран
Там наверное индусы код писать начали )))) чтоб в одном запросе, да 3 ошибки.... явно даже не проверяли.

Рекомендую заменить на

Код: Выделить всё

$QUERY .=  "SELECT cc_did.did ".
                                  " FROM cc_did ".
                                  " JOIN cc_did_destination ON cc_did_destination.id_cc_did=cc_did.id ".
                                  " JOIN cc_card ON cc_did_destination.id_cc_card=cc_card.id ".
                                  " WHERE cc_did_destination.activated=1 AND cc_did.startingdate <= NOW&#40;&#41; AND cc_did.expirationdate >= NOW&#40;&#41;".
                                  " AND cc_card.username='".$this->cardnumber."' ";
                        $QUERY .= "ORDER BY 1";
.
..:

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 22 фев 2011, 23:11

Спасибо! Добавил в форк.

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 25 фев 2011, 11:21

checkout_confirmation.php
Строка 94

Код: Выделить всё

$amount_string=sprintf&#40;"%.3f",$total_amount&#41;;
Делаем оплату через epayment к примеру 5 евро. После подтверждения платежа для пользователей с русским интерфейсом указанная строка возвращает
значение '5,000' (!с запятой!) и в таком же виде ложит его в базу.
Когда с сервера приходит подтверждение транзакции то срока '5,000' из базы конвертируется из валюты в которой пришел платеж в базовую валюту.
Это делает функция convert_currency, которая находится в Misc.php, так вот она выдает для таких чисел результат 0!!!!!
И получается, что платеж прошел, на счет сумма пришла, а баланс абонента вырос на 0 у.е.
А все из-за того что формат '%.3f' локалезависимый и надо использовать '%.3F' который не зависит от настроек локали.

Надо поменять на

Код: Выделить всё

$amount_string=sprintf&#40;"%.3F",$total_amount&#41;;
.
..:

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 03 мар 2011, 02:14

Этот глюк давно уже исправлен.
Busc, какой версией а2б Вы пользуетесь?

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 03 мар 2011, 10:58

Я писал конкретно о A2Billing 1.8.1 (Corylus).
Ветка о багах 1.8.х, и далеко не все могут себе менять биллинг каждый месяц как Вы.
.
..:

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 03 мар 2011, 11:34

Прошу прощения... в заголовок не глянул.

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 03 мар 2011, 16:16

busc писал(а):... менять биллинг каждый месяц как Вы.
Менять - не менять, но апгрейдить - святая обязанность каждого ;)

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 03 мар 2011, 16:25

Если б у Вас было столько кастомизировано сколько у меня...
Мне плохо от одной мысли сделать merge с новой версией
.
..:

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 05 мар 2011, 22:58

Давайте доступ к Вашему git или svn, чтоб слить. Попробую скрестить вдумчиво.

zlat
Сообщения: 665
Зарегистрирован: 31 июл 2009, 18:23

Сообщение zlat » 16 апр 2011, 09:36

столкнулся сейчас с очень неприятным моментом: заведено порядка 5000 аккаунтов препейд с идентичными настройками и все бы вроде хорошо, но заметил что бывают ситуации, когда с аккаунта производятся звонки, а деньги не списываются. К примеру есть аккаунт у него начальный баланс 3$, смотрю его историю звонков он назвонил уже на 25$, и при мне звонит в данный момент, заканчивает разговор, а у него все равно 3 бакса :evil:
и таких случаев отскал уже 5 за посление три дня, из последних таких на балансе 10$ - звонит, поговорил с минуту, остаток такой же, в итоге вручную снял сумму, только после этого звонки этого абонента стали тарифицироваться
даже не знаю, где искать косяк :cry:

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 16 апр 2011, 11:46

Читать форум нужно регулярно стараться, тогда будете в теме. Эта проблема уже обсуждалась.
Но если "по быстрому", то советую обновить астериск - патч уже добавили на днях во все ветки в транк. или дождаться следующего релиза.

zlat
Сообщения: 665
Зарегистрирован: 31 июл 2009, 18:23

Сообщение zlat » 16 апр 2011, 12:07

так это баг астериска? у меня версия 1.6.2.15

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 16 апр 2011, 17:39


Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 04 май 2011, 00:44

так как в логе постоянно валится ошибка:
You are *required* to use the date.timezone setting or the date_default_timezone_set() function
а также перестает отображаться дашборд после апгрейда php до 5.3 - решением было (как описано тут) вставить
в файлы
/var/lib/asterisk/agi-bin/a2billing.php и /var/www/localhost/htdocs/common/lib/Misc.php
строчки

Код: Выделить всё

date_default_timezone_set&#40;'Europe/Moscow'&#41;;
второй строкой, в начале файла, сразу за <?php

после этого ошибки перестали сыпаться в лог апача а также дашбоард заработал. Gentoo.

если кому не лень - просьба добавить в глобальные настройки a2b данную опцию (через базу), если будет патч - постараюсь протолкнуть в транк к арески.

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 29 июн 2011, 14:17

а если в php.ini
[Date]
; Defines the default timezone used by the date functions
date.timezone = Europe/Moscow
Мне помогло
.
..:

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 29 июн 2011, 17:07

извращение ибо костыль. там где много сайтов или несколько биллингов под разных клиентов будет уже проблема.
добавление опции в настройки само собой напрашивается (я кстати nixon'а уже давно прошу сделать это)

Аватара пользователя
busc
Модератор
Сообщения: 150
Зарегистрирован: 12 фев 2008, 10:28
Откуда: Kiev
Контактная информация:

Сообщение busc » 29 июн 2011, 20:52

:? Даже если несколько биллингов стоит... мне кажется серверное приложение (a2billing.php) должно работать во временной зоне сервера. Asterisk работает же в зоне которая в системе стоит и CDR конечно делает в той же зоне.
Могу ошибаться конечно, доказательств из кода не имею, пока 8).
Временная зона клиента должна быть учтена только при отображении данных у него в кабинете. Хранение данных должно быть в у всех в зоне сервера.
И по времени делится тарифный план на стороне сервера, потому что тарифы по времени дает аплинк, который про часовой пояс звонящего ничего не знает и авторизует звонок по своему часовому поясу.
.
..:

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 30 июн 2011, 05:38

Григорий, ты мыслишь слишком узко (извини если звучит грубо). а ведь ситуации могут быть разные.
именно поэтому я стараюсь, если есть возможность, не менять глобальные настройки сервера. под конкретную апликуху одно надо а под другую может завтра другое понадобится - получится конфликт. поэтому лучше предусматривать такие моменты заранее, тем более что конкретно в этой вот ситуации делов ровно на 15 минут - добавить в биллинг новую опцию и ключик в базе. я думаю я даже сам бы мог такое сделать, (правда у меня это займет уже все 3 часа а не 15 минут но думаю я бы справился).
вот пример для чего может понадобится такое - сервер стоит у более дешевого хостера в германии а клиент в мск и соответственно нужно чтобы биллилось все под клиента в Мск времени. могу еще с пяток причин выдумать.

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 01 июл 2011, 16:26

Баг в расчётах статистики

В дашбоарде в REFILLS INFO, не учитывает отрицательные суммы.

Как повторить: Например у клиента на счету $100, добавляем ему еще 70, но потом например передумали (какоето событие не случилось когда должно было бы. или по ошибке положили ему не 70 а 170, ну всякое бывает) и хотим минусовать на эти 70 назад. делаем ему платеж с суммой -70, тотал у клиента меняется назад на $100, как и должно было бы быть. НО. в статистиске дашбоарда REFILLS INFO в нашем случае покажет не 100 а 170 что не соответсвует истине. по логике выходит что этот кусок кода не считает минусовые суммы в статистике откуда он берет данные для расчета. явно баг...

almor
Сообщения: 11
Зарегистрирован: 25 окт 2010, 20:02

Сообщение almor » 28 авг 2011, 21:39

Не знаю, обсуждалось уже или нет, но в a2b версии 1.8.1 имеется следущий баг:
возьмем, к примеру два направления: Бельгия стац. код 32 по цене 0,01 и Бельгия моб код 3248 по цене 0,1
Набираем номер Бельгия моб. в следущем формте: 32__485123456 и наш биллинг определяет его как Бельфия стац. , так как он нашел соответстие в тарифах по коду 32

Добавил строку $phonenumber = preg_replace('(\D+)', '', $phonenumber); в файл lib/Class.RateEngine.php после 88 строки

function rate_engine_findrates (&$A2B, $phonenumber, $tariffgroupid)
{

Строка удалет все нецифровые символы из набранного номера

ps. возможно есть лучшие варианты, но у меня только базовые знания программирования

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 29 авг 2011, 00:08

рекомендую проапдейтиться. уже 1.9.4 с мая доступна. если не ставили какието свои собственные патчи то будет крайне легко - выполните все .sql апдейты "сверху" своей базы (это безопастно, но сделайте бэкап на всякий случай) а затем просто разверните новые .php файлы вместо старых. все должно заработать со старыми данными из базы без проблем. рекомендую ветку от nixon, это своего рода "расширенная" версия от арески и полностью совместима. к слову сказать он намного активнее работает над a2b чем сам арески в последнее время, за что честь и хвала ему. :)

almor
Сообщения: 11
Зарегистрирован: 25 окт 2010, 20:02

Сообщение almor » 29 авг 2011, 22:20

Upgrade, конечно, делать нужно.
но пока других багов не видно, а в новой версии они, возможно, еще не обнаружены. :)
К тому же уже сделанная частичная переделка интерфейса под свои нужды останавливает, так как некоторые изменения никак не задокументировал...

Аватара пользователя
anest
Модератор
Сообщения: 5708
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 31 авг 2011, 06:47

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

nixon
Сообщения: 146
Зарегистрирован: 11 ноя 2008, 20:56
Откуда: Pattaya
Контактная информация:

Сообщение nixon » 10 окт 2011, 22:06

almor писал(а):К тому же уже сделанная частичная переделка интерфейса под свои нужды останавливает, так как некоторые изменения никак не задокументировал...
Более чем... Продолжая традиции areski, не писать талмуды, а писать подстрочные хелпы, всё должно быть интуитивно понятно. Кроме того, с удовольствием отвечу на вопросы.
Удачи!

Ответить