Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loss-preventation #616

Draft
wants to merge 2 commits into
base: source
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions resources/asterisk/CalcAgi.php
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,10 @@ public function sendCall($agi, $destination, &$MAGNUS, $typecall = 0)
$sql = "SELECT * FROM pkg_trunk_group_trunk WHERE id_trunk_group = " . $this->tariffObj[0]['id_trunk_group'] . " ORDER BY RAND() ";

} else if ($this->tariffObj[0]['trunk_group_type'] == 3) {
$sql = "SELECT *, (SELECT buyrate FROM pkg_rate_provider WHERE id_provider = tr.id_provider AND id_prefix = " . $this->tariffObj[0]['id_prefix'] . " LIMIT 1) AS buyrate FROM pkg_trunk_group_trunk t JOIN pkg_trunk tr ON t.id_trunk = tr.id WHERE id_trunk_group = " . $this->tariffObj[0]['id_trunk_group'] . " ORDER BY buyrate IS NULL , buyrate ";
// $sql = "SELECT *, (SELECT buyrate FROM pkg_rate_provider WHERE id_provider = tr.id_provider AND id_prefix = " . $this->tariffObj[0]['id_prefix'] . " LIMIT 1) AS buyrate FROM pkg_trunk_group_trunk t JOIN pkg_trunk tr ON t.id_trunk = tr.id WHERE id_trunk_group = " . $this->tariffObj[0]['id_trunk_group'] . " ORDER BY buyrate IS NULL , buyrate ";

$sql = "SELECT *, (SELECT buyrate FROM pkg_rate_provider rp LEFT JOIN pkg_prefix pf1 ON pf1.id = rp.id_prefix WHERE id_provider = tr.id_provider AND '$destination' LIKE CONCAT(pf1.prefix, '%') ORDER BY LENGTH(pf1.prefix) DESC LIMIT 1 ) AS buyrate FROM pkg_trunk_group_trunk t JOIN pkg_trunk tr ON t.id_trunk = tr.id WHERE id_trunk_group = '".$this->tariffObj[0]['id_trunk_group']."' ORDER BY buyrate IS NULL , buyrate";
$agi->verbose("AMIN-FIX DEST $destination, SQL : $sql", 3);
}
$modelTrunks = $agi->query($sql)->fetchAll(PDO::FETCH_OBJ);

Expand Down Expand Up @@ -625,14 +628,28 @@ public function sendCall($agi, $destination, &$MAGNUS, $typecall = 0)
}

if ($modelTrunk->credit_control == 1 && $provider_credit <= 0) {
$agi->verbose("Provider not have credit", 3);
$agi->verbose("AMIN-FIX: Provider [iD: ".$this->id_provider."] $trunkcode not have credit", 3);
continue;
}

if ($status == 0) {
$agi->verbose("Trunk is inactive", 3);
$agi->verbose("AMIN-FIX: Provider [iD: ".$this->id_provider."] $trunkcode Trunk is inactive", 3);
continue;
}
else { // AMIN-FIX Start
$agi->verbose("AMIN-FIX LossPrevent, NUM $destination, PREF ".$this->tariffObj[0]['dialprefix'].", ClientCost: ".$this->tariffObj[0]['rateinitial'].", ProviderCost: ".$trunk->buyrate.", Prov-iD ".$this->id_provider."; $trunkcode", 3);
if ( $this->tariffObj[0]['rateinitial'] < $trunk->buyrate ) {
$agi->verbose("AMIN-FIX: Client cost for prefix ".$this->tariffObj[0]['dialprefix'].", = ".$this->tariffObj[0]['rateinitial']." less then ProviderCost: ".$trunk->buyrate.", Prov-iD ".$this->id_provider." $trunkcode; HANGUP!!", 3);
$MAGNUS->hangup($agi, 21); // Hangup and return 403 (see Magnus.php) to caller
}
if ( ! ($trunk->buyrate) or $trunk->buyrate == null or $trunk->buyrate == '') {
$agi->verbose("AMIN-FIX: ProviderCost IS NULL : HANGUP!!", 3);
$MAGNUS->hangup($agi, 21); // Hangup and return 403 (see Magnus.php) to caller
}


// AMIN-FIX End
}

if (strncmp($MAGNUS->CallerID, $modelTrunk->cid_remove, strlen($modelTrunk->cid_remove)) == 0) {
$MAGNUS->CallerID = substr($MAGNUS->CallerID, strlen($modelTrunk->cid_remove));
Expand Down
72 changes: 36 additions & 36 deletions resources/locale/ru.js
Original file line number Diff line number Diff line change
Expand Up @@ -951,15 +951,15 @@ Locale.load({
'Success: The SipTrace file was deleted': 'Успех: файл Siptraca был удален',
'Sum to pay': 'Сумма для оплаты',
'Summary Day Agent': 'Сводный день агента',
'Summary Day Trunk': 'Сводный день ствол',
'Summary Day User': 'Сводный пол пользователя',
'Summary Month DID': 'Сводный месяц сделал месяц',
'Summary Month Trunk': 'Суммарный месяц багажника',
'Summary Month User': 'Сводный месяц пользователя',
'Summary per Day': 'Резюме в день',
'Summary per Month': 'Краткое изложение в месяц',
'Summary per Trunk': 'Сводка на багажник',
'Summary per User': 'Резюме на пользователя',
'Summary Day Trunk': 'Сводный день по шлюзу',
'Summary Day User': 'Сводный день по пользователю',
'Summary Month DID': 'Сводный месяц по DID',
'Summary Month Trunk': 'Сводный месяц по шлюзу',
'Summary Month User': 'Сводный месяц по пользователю',
'Summary per Day': 'Суммарно за день',
'Summary per Month': 'Суммарно за месяц',
'Summary per Trunk': 'Суммарно по шлюзам',
'Summary per User': 'Суммарно по пользователям',
'Sun': 'солнце',
'Sunday': 'Воскресенье',
'Sunday intervals': 'Воскресные интервалы',
Expand Down Expand Up @@ -1009,41 +1009,41 @@ Locale.load({
'Title': 'Заголовок',
'To day': 'Сегодня',
'Today': 'Сегодня',
'Today peak': 'Сегодня пик',
'Today peak': 'Пик на сегодня',
'Toggle max completed calls': 'Toggle Max Завершенные звонки',
'Torture': 'Пытка',
'Total': 'Общее',
'Total': 'Всего',
'Total / Min': 'Всего / мин',
'Total AMD': 'Общий AMD',
'Total Price': 'Итоговая цена',
'Total answered': 'Всего ответа',
'Total answered': 'Всего отвечено',
'Total buy price': 'Общая цена покупки',
'Total calls': 'Общие звонки',
'Total calls': 'Всего звонков',
'Total cost': 'Общая стоимость',
'Total dialed': 'Всего набрана',
'Total dialed': 'Всего набрано',
'Total failed': 'Всего не удалось',
'Total generated': 'Всего генерируется',
'Total numbers': 'Общее количество',
'Total per trunk': 'Всего на ствол',
'Total numbers': 'Всего номеров',
'Total per trunk': 'Всего на шлюз',
'Total profit': 'Общая прибыль',
'Total sale': 'Общая продажа',
'Total sell price': 'Общая цена продажи',
'Total to pay': 'Всего платить',
'Total to pay': 'Всего к оплате',
'Transfer': 'Перевод',
'Transferred': 'Переведен',
'Trunk': 'Сундук',
'Trunk': 'Шлюз (транки)',
'Trunk Errors': '',
'Trunk Groups': 'Группы ствола',
'Trunk chart': 'Губальная диаграмма',
'Trunk erros': 'Ошибка багажника',
'Trunk groups': 'Группы ствола',
'Trunks': 'Сундуки',
'Trunk Groups': 'Группы шлюзов',
'Trunk chart': 'диаграмма шлюзов',
'Trunk erros': 'Ошибки шлюзов',
'Trunk groups': 'Группы шлюзов',
'Trunks': 'Шлюзы',
'Tuesday': 'вторник',
'Type': 'Тип',
'Type number': 'Тип номер',
'Type paid': 'Тип оплачен',
'Type number': 'Тип номера',
'Type paid': 'Тип оплаты',
'URL': 'Урл',
'URL events notify': 'Уведомление URL Сообщения',
'URL events notify': 'URL уведомления о событиях',
'URL to cancel email credit notification': 'URL отменить уведомление по электронной почте',
'Unallocated': 'Нераспределенный',
'Unavailable': 'Недоступен',
Expand All @@ -1054,14 +1054,14 @@ Locale.load({
'Unlimited calls': 'Неограниченные звонки',
'Update': 'Обновлять',
'Uptime': 'Временное время',
'Use': '',
'Use': 'Использовать',
'Use audio': 'Используйте аудио',
'Use date': 'Использовать дату',
'Use filters': 'Используйте фильтры',
'Use holidays': 'Использовать праздники',
'Use on signup': 'Используйте на регистрацию',
'Use that': 'Использовать это',
'Use_Pref_Codec': 'Use_pref_codec.',
'Use_Pref_Codec': 'Использовать приоритетные кодеки',
'User': 'Пользователь',
'User Custom Rates': 'Пользовательская таможенная ставка',
'User History': '',
Expand All @@ -1080,20 +1080,20 @@ Locale.load({
'VAT': 'НДС',
'Value': 'Значение',
'Variables': 'Переменные',
'Verify code': 'Подтвердить код',
'Verify code': 'Код подтверждения',
'Version': 'Версия',
'Videosupport': 'Видеопорт',
'Videosupport': 'поддержка видео',
'Voice': 'Голос',
'Voice Broadcasting': 'Голосовое вещание',
'VoiceMail': 'Голосовая почта',
'Voted': 'Проголосовал',
'Votes': 'Голоса',
'Voucher': 'Ваучер',
'Voucher inexistente or already used': 'Voucher Onlystleente или уже используется',
'Voucher inexistente or already used': 'Ваучер не существует или уже был использован',
'WHMCS': '',
'Wait time': 'Время ожидания',
'Wait, your phone ring in few seconds': 'Подождите, ваше телефонное кольцо за несколько секунд',
'Wait...': 'Ждать...',
'Wait...': 'Ждём...',
'Waiting': 'Ожидающий',
'Wallpaper': 'Обои',
'Want to reload the system to apply the theme?': 'Хотите перезагрузить систему, чтобы применить тему?',
Expand Down Expand Up @@ -1134,8 +1134,8 @@ Locale.load({
'Your session has expired. Log in again.': '',
'Your username is': 'Ваше имя пользователя',
'Zip code': 'Индекс',
'Zone': '',
'and': '',
'Zone': 'Область',
'and': 'и',
'cannot be blank': 'не может быть пустым',
'date': 'Дата',
'days': 'дни',
Expand All @@ -1146,9 +1146,9 @@ Locale.load({
'is optional': 'не является обязательным',
'm/d/Y': 'M / D / Y',
'must belong to the IVR owner': 'должен принадлежать владельцу IVR',
'name': '',
'name': 'имя',
'success': 'успех',
'to refill': 'пополнить',
'week': 'неделя',

});
});