Cálculo de preço da chamada

O valor a ser cobrado do cliente é calculado em base ao preço da tarifa do prefixo que mais se adequa ao número discado do plano da do usuário.

O valor é calculado usando 4 valores.

  • Duração da chamada;
  • Preço de venda;
  • Bloco inicial;
  • Incremento.

Exemplo.

O cliente liga para o número 5511988443300 e fala por 45 segundos. Existe uma tarifa no menu Tarifas para o prefixo 55119, com os seguint:

  • Preço de compra = 0.05
  • Bloco inicial = 30
  • Incremento = 6

A fórmula do cálculo é:

Caso a Duração da chamada for menor que o Bloco inicial a fórmula será

(Preço de compra / 60 segundos) * Bloco inicial

Caso a Duração da chamada maior que Bloco inicial a fórmula será.

(Preço de compra / 60 segundos) * Duração da chamada

Quando a duração da chamada é superior ao Bloco inicial, também é calculado o Incremento.

No exemplo anterior, a duração foi 45 segundos, e o Incremento é 6, então a fórmula fica

(Duração da chamada / Incremento ) da 7 com resto 3. Então temos que somar 3 ao resto que será 48, portanto neste exemplo será calculado
(0.05 / 60) * 48 = 0.04

O código abaixa é o utilizado para o cálculo.

$cost = 0;
if ($callduration < $initblock) {
    $callduration = $initblock;
}

if (($billingblock > 0) && ($callduration > $initblock)) {
    $mod_sec = $callduration % $billingblock;
    if ($mod_sec > 0) {
        $callduration += ($billingblock - $mod_sec);
    }
}
$cost += ($callduration / 60) * $rateinitial;

A variável $callduration é a duração da chamada; A variável $initblock é Bloco inicial; A variável $billingblock é Incremento.