PABX criado para pesquisas
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

177 lines
7.0 KiB

#!/usr/bin/php -q
<?php
include('bd.php');
include('util/util.php');
include('funcoes/shared.php');
$uniqueId = trim($argv[1]);
$final = isset($argv[2]) ? trim($argv[2]) : '';
$uniqueIdOrig = isset($argv[3]) ? trim($argv[3]) : '';
//$arg4 = trim($argv[4]);
$data = date('Y-m-d H:i:s');
$gravaLog = 1;
$log = array();
$log[] = 'Tarifa Finaliza';
$result = 0;
//$final = '';
if ($final == 'FINALTRANSFER') {
$query = "select trr_destino from pbx_tarif_registra where uniqueid = '$uniqueIdOrig'\n";
$result = pg_query($query);
$row = pg_fetch_row($result);
$destino = $row[0];
if ($result) {
$query = "update pbx_tarif_registra set trr_fim = now(), trr_origem = trr_destino, trr_destino = '$destino', trr_duracao = (extract(epoch from (now() - trr_inicio))::int ) where uniqueid = '$uniqueId' and coalesce(trr_duracao, 0) = 0\n";
$result = pg_query($query);
}
} else {
$query = "update pbx_tarif_registra set trr_fim = now(), trr_duracao = (extract(epoch from (now() - trr_inicio))::int ) where uniqueid = '$uniqueId' and coalesce(trr_duracao, 0) = 0\n";
$result = pg_query($query);
}
$log[] = $query;
__Prepago($uniqueId);
/*
* Seleciona o tipo do dispositivo destino(fixo/móvel) e a
* franquia cadastrada:
* 0 - Desabilitada: Não há fraquia para o contrato.
* 1 - Compartilhada: Computa com franquia qualquer ligação fixo/móvel.
* 2 - Fixo: Considera apenas as ligações para fixo como franqueadas até o limite cadastrado no contrato.
* 3 - Móvel: Considera apenas as ligações para móvel como franqueadas até o limite cadastrado no contrato.
* 4 - Fixo/Móvel: Considera as chamadas para fixo/movel porém tem valores cadastrados para cada tipo no
* contrato.
*/
$query = "select a.trr_tipo_dispositivo, b.contr_tipo_franquia
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id
and uniqueid = '$uniqueId'\n";
$log[] = $query;
$result = pg_query($query);
$row = pg_fetch_array($result);
$tipoDispo = $row['trr_tipo_dispositivo'];
$tipoFranquia = $row['contr_tipo_franquia'];
/*
* Verifica se exite configuração para franquia registra os valores.
* A tabela pbx_tarif_franquia_movimento tem uma trigger associada que
* faz o restante do trabalho.
*/
if ($result && __InsereFranquia($tipoDispo, $tipoFranquia)) {
$query = "insert
into pbx_tarif_franquia_movimento
( prc_id, contr_id, tfm_mes, uniqueid, tfm_data, tfm_lanc, tfm_tipo_lanc, tfm_motivo, tfm_user, tfm_tipo_franquia, tmf_tipo_saldo, tfm_preco_tipo)
select a.prc_id, a.contr_id, date_part('month', a.trr_data) as tfm_mes, a.uniqueid, now(), case when((a.trr_duracao = 0) or (b.contr_tipo_franquia = 0) or (a.trr_tarifa_zero = 1) )then 0 else -a.trr_duracao end as tfm_lanc,
'D' as tfm_tipo_lanc,
case when(b.contr_tipo_franquia = 0)then 'Franquia Zero' else case when(a.trr_tarifa_zero = 1)then 'Tarifa Zero' else 'Chamada de saida' end end as tfm_motivo, case when(a.trr_conta_senha = 1)then trr_conta else a.trr_origem end as tfm_user, b.contr_tipo_franquia as tfm_tipo_franquia,
case when(a.trr_vc in('vc3', 'vc4')) then 'M' else 'F' end as tmf_tipo_saldo, a.trr_preco_tipo
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id
and a.uniqueid = '$uniqueId'\n";
pg_query($query);
}
$log[] = $query;
//Final: Finaliza: 1383258798.101 Final: FINALTRANSFER Arg3: 1383258762.93 Arg4: 1004 Data: 2013-10-31 19:33:28
$err = error_get_last();
if (count($err)) {
$log[] = sprintf('Erro: %s', $err["message"]);
}
if ($gravaLog) {
GravaLogApl($log, "tarifacao_finaliza");
}
//exten => h,1,DeadAgi(tarifaFinaliza.php,${UNIQUEID})
function __Prepago($uniqueId) {
include('util/funcoesApl.php');
global $log;
$queryPrepago = "select case when(a.trr_conta_senha = 0)then a.trr_origem else a.trr_conta end as prm_ramal_conta,
a.trr_conta_senha, a.trr_tarifa_zero, a.trr_franquia, b.contr_tipo_franquia, a.trr_preco_tipo,
a.trr_vc_cad, a.trr_vc_ext, 0.0 as prm_valor,
a.trr_id,
a.trr_preco,
a.trr_duracao,
a.trr_destino,
now()::date as prm_data,
now() as prm_data_lanc,
'D' as prm_tipo_lancamento,
'Chamada Efetuada' as prm_historico
from pbx_tarif_registra a, pbx_tarif_contrato b
where b.contr_id = a.contr_id and a.uniqueid = '%s'";
$queryPrepagoIns = "insert
into pbx_prepago_movimento
(prm_ramal_conta, prm_conta_senha, trr_id, prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data, prm_data_lanc, prm_tipo_lancamento, prm_historico)
values({prm_ramal_conta}, {trr_conta_senha}, {trr_id}, {trr_preco}, {trr_duracao}, {trr_destino}, {prm_valor}, {prm_data}, {prm_data_lanc}, {prm_tipo_lancamento}, {prm_historico})";
$prepagoIncluso = 0;
/*
* Verifica se o ramal/conta esta incluso no pre-pago
*/
$query = "select count(*)
from pbx_prepago a, pbx_tarif_registra b
where a.tipo = b.trr_conta_senha
and a.id = case when(b.trr_conta_senha = 0)then b.trr_origem else b.trr_conta end
and a.habilita_prepago = '1'
and b.uniqueid = '%s'";
$query = sprintf($query, $uniqueId);
$result = pg_query($query);
if (!$result)
$log[] = sprintf('Ver. Pre-pago: %s', $query);
$row = pg_fetch_row($result);
$prepagoIncluso = $row[0];
if ($prepagoIncluso) {
$queryPrepago = sprintf($queryPrepago, $uniqueId);
$result = @pg_query($queryPrepago);
$row = pg_fetch_array($result);
$tipoFranquia = $row["contr_tipo_franquia"];
$tarifaZero = $row["trr_tarifa_zero"] > 0;
$franquia = ($row["trr_franquia"] > 0) && ($tipoFranquia > 0);
$franquiaParcial = $franquia && ($row["trr_franquia"] != $row["trr_duracao"]);
$tipoTarifa = $row["trr_preco_tipo"];
$precoMinuto = $row["trr_preco"];
$fator = $row["trr_vc_cad"];
$cadencia = $row["trr_vc_ext"];
$dura = $franquiaParcial ? $row["trr_franquia"] : (int) $row["trr_duracao"];
$row['prm_valor'] = $tarifaZero ? 0 : -(TarifaChamada($tipoTarifa, $dura, $precoMinuto, $fator, $cadencia));
foreach ($row as $key => $value) {
$queryPrepagoIns = str_replace('{' . $key . '}', QuotedStr($value), $queryPrepagoIns);
}
$result = @pg_query($queryPrepagoIns);
if (!$result)
$log[] = sprintf('Ins. Pre-pago: %s', $queryPrepagoIns);
}
}
function __InsereFranquia($disp, $franquia) {
/*
* Tipos de franquia: Fixo/Móvel -> 4, Móvel -> 3, Fixo -> 2, Compartilhada -> 1, Desbilidadta -> 0
*/
if (!$franquia) {
return false;
} else if ($franquia == 4) {
return true;
} else if (($franquia == 3) and ( $disp == 'movel')) {
return true;
} else if (($franquia == 2) and ( $disp == 'fixo')) {
return true;
}
return false;
}
?>