forked from SimplesIP/pabx-app
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
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; |
|
} |
|
?>
|
|
|