Расчет стоимости звонка: 1. Берется маска телефона пользователя, для аккаунта которого совершается звонок(либо Украина, Россия, Армения, либо интернациональный). 2. Из тарифа пользователя берутся параметры first_minute, second_minute, third_minute, discount. Из звонка берутся продолжительность менеджерской и клиентской стороны. 1. Если не интернациональный, то из тарифа пользователя берутся параметры first_minute, second_minute, third_minute, discount, rate. Из звонка берутся продолжительность менеджерской и клиентской стороны. Для менеджерской стороны, если продолжительность звонка меньше 1 минуты, то для каждой секунды производится расчет rate + (rate * first_minute/100) Если больше минуты и меньше двух минут, то rate + (rate * second_minute/100) Если больше трех минут, то rate + (rate * third_minute/100) cost - стоимость менеджерской стороны звонка Конечная стоимость звонка вычисляется (cost - cost * discount / 100) * 2 с округлением до 2 знаков после запятой 2. Если интернациональный, то для менеджерского и клиентского телефона берутся ставки (rate) из таблицы core_internationalrates Для продолжительности звонка со стороны менеджера(manager_cost) для каждой минуты производится расчет: rate + (rate * first_minute / 100) То есть, на примере приведенных таблиц для номера менеджера, который начинается на 9374, аккаунта пользователя с тарифом Lite и продолжительностью менеджерской стороны звонка 28 секунд, стоимость менеджерской стороны звонка будет равна 0.24382 + (0.24382 * 10 / 100) = 0.268202 Далее для клиентской стороны происходит аналогичный расчет стоимости звонка (client_cost) Общая стоимость звонка(cost) это client_cost + manager_cost Конечная стоимость звонка рассчитывается, как cost - cost * discount/100 c округлением до 5 знаков после точки Вычисление стоимости минуты звонка на странице Тарифы Из меню выбираются Страна и Оператор, по коду оператора из таблицы core_internationalrates получаем rate. Из тарифа пользователя получаем стоимость первой минуты звонка. Далее price_overhead вычисляется, как: first_minute/100 * rate с округлением до 5 знаков после запятой Стоимость(cost) вычисляется, как: rate + price_overhead с округлением до 5 знаков после запятой Если в тарифе присутствует скидка, то применяется для получения суммы скидки (discount_value): discount / 100 * cost с округлением до 5 знаков после запятой Конечная цена = cost - discount_value с округлением до 5 знаков после запятой |