|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Definem o metodo utilizado na exporta<EFBFBD><EFBFBD>o
|
|
|
|
|
*/
|
|
|
|
|
define("INTEGRA_SOCKET", 1);
|
|
|
|
|
define("INTEGRA_FILE", 2);
|
|
|
|
|
define("INTEGRA_FTP", 3);
|
|
|
|
|
define("INTEGRA_SERIAL", 4);
|
|
|
|
|
|
|
|
|
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.14', '5432', 'sefaz', 'contacte', 'ctepgSQL'); //Homologacao simples
|
|
|
|
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.13', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples
|
|
|
|
|
$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples
|
|
|
|
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.13', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples
|
|
|
|
|
|
|
|
|
|
$conn = pg_connect($conStr);
|
|
|
|
|
|
|
|
|
|
function GetRecurso($metodo, $data = "") {
|
|
|
|
|
if ($metodo == INTEGRA_SOCKET)
|
|
|
|
|
return ConectSck();
|
|
|
|
|
else if ($metodo == INTEGRA_FILE) {
|
|
|
|
|
$path = GetPathFile($data);
|
|
|
|
|
return fopen($path, 'a');
|
|
|
|
|
} else if ($metodo == INTEGRA_SERIAL) {
|
|
|
|
|
$device = GetPathFile('', INTEGRA_SERIAL);
|
|
|
|
|
$serial = new phpSerial ();
|
|
|
|
|
$serial->deviceSet($device);
|
|
|
|
|
return $serial;
|
|
|
|
|
} else
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPathFile($data, $type = INTEGRA_FILE, $path = '') {
|
|
|
|
|
if ($type == INTEGRA_SERIAL) {
|
|
|
|
|
$port = empty($path) ? '/dev/ttyS0' : $path;
|
|
|
|
|
return $port;
|
|
|
|
|
}
|
|
|
|
|
return '/var/lib/asterisk/scripts/tarifador/bilhetes/bilhetes01';
|
|
|
|
|
return sprintf('/var/lib/asterisk/scripts/tarifador/bilhetes/_%s_bilhetes.txt', $data);
|
|
|
|
|
return '/troca/bilhetes01';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConectSck() {
|
|
|
|
|
$conn = $GLOBALS["conn"];
|
|
|
|
|
$query = "select prm_tarifador_host, prm_tarifador_port from pbx_parametros where id = 1";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
$host = $row["prm_tarifador_host"];
|
|
|
|
|
$port = $row["prm_tarifador_port"];
|
|
|
|
|
return fsockopen($host, $port);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaLogBil($log) {
|
|
|
|
|
$path = "/var/log/tarifador.log";
|
|
|
|
|
$arq = fopen($path, 'a');
|
|
|
|
|
fwrite($arq, $log);
|
|
|
|
|
fclose($arq);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LogTrf($metodo, $descricao, $msg, $adc = '') {
|
|
|
|
|
|
|
|
|
|
$data = date("Y-m-d H:i:s");
|
|
|
|
|
$adc = trim($adc) == '' ? '' : sprintf("\nInformacao adicional: %s\n", $adc);
|
|
|
|
|
/*
|
|
|
|
|
* Captura informacoes sobre erros no sistema
|
|
|
|
|
*/
|
|
|
|
|
$str = sprintf("Funcao: [%s] Data: [%s] \nDescricao: %s\n%sMsg: %s\n\n", $metodo, $data, $descricao, $adc, $msg);
|
|
|
|
|
|
|
|
|
|
GravaLogBil($str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Integrar($conn, $data) {
|
|
|
|
|
$query = "select trf_data, trf_num_reg, trf_file, trf_exportado from pbx_tarifador_log where trf_data = '$data'";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
return $row["trf_exportado"] == 0;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDatasExportar() {
|
|
|
|
|
$conn = $GLOBALS["conn"];
|
|
|
|
|
$query = "select trf_data from pbx_tarifador_log where trf_exportado = 0";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
$datas = array();
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$datas[] = $row["trf_data"];
|
|
|
|
|
}
|
|
|
|
|
return $datas;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AtulizaInfo($conn, $numReg, $arquivo, $data, $type = INTEGRA_SOCKET) {
|
|
|
|
|
|
|
|
|
|
if ($type == INTEGRA_SERIAL) {
|
|
|
|
|
foreach ($arquivo as $key => $value) {
|
|
|
|
|
$query = "insert into pbx_bilhetes_online(id_bilhetes, data)values('$key', '$value');";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$tentativa = 0;
|
|
|
|
|
while (true) {
|
|
|
|
|
$arquivo = QuotedStr($arquivo);
|
|
|
|
|
$query = "update pbx_tarifador_log set trf_num_reg = '$numReg', trf_file = $arquivo, trf_exportado = '1' where trf_data = '$data'";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if ($result || ($tentativa > 10)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
sleep(1);
|
|
|
|
|
$conStr = $GLOBALS["conStr"];
|
|
|
|
|
@cdpg_close();
|
|
|
|
|
$conn = pg_connect($conStr);
|
|
|
|
|
$tentativa++;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsereInfo($conn, $data) {
|
|
|
|
|
$query = "insert into pbx_tarifador_log(trf_data)values('$data')";
|
|
|
|
|
return pg_query($conn, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDataIntegra($conn) {
|
|
|
|
|
$query = "select now()::date -1 as data";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
return $row["data"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaDiasImportar($conn, $type = 0) {
|
|
|
|
|
/*
|
|
|
|
|
* Caso o servidor tenha ficado inativo por um periodo
|
|
|
|
|
* esta funcao inclui os dias que devem ser importados
|
|
|
|
|
* na tabela pbx_tarifador_log
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if ($type == INTEGRA_SERIAL)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
$data = GetDataIntegra($conn);
|
|
|
|
|
$query = "select '$data' - max(trf_data) as dias_importar, max(trf_data) as ult_importacao from pbx_tarifador_log";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
$diasImportar = $row["dias_importar"];
|
|
|
|
|
$ultImportacao = $row["ult_importacao"];
|
|
|
|
|
|
|
|
|
|
if ($diasImportar > 0) {
|
|
|
|
|
$query = "begin";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$cont = 0;
|
|
|
|
|
while ($cont < $diasImportar) {
|
|
|
|
|
$cont++;
|
|
|
|
|
$query = "select cast('$ultImportacao' as date) + $cont as data";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
$result = InsereInfo($conn, $row['data']);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
$query = "commit";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
return $result;
|
|
|
|
|
} else {
|
|
|
|
|
$query = "rollback";
|
|
|
|
|
@pg_query($conn, $query);
|
|
|
|
|
LogTrf("GravaDiasImportar", "Inclui periodo de importacao", "Erro: " . pg_last_error($conn));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SecondToStrTime($sec) {
|
|
|
|
|
$seconds = $sec;
|
|
|
|
|
$hours = floor($seconds / 3600);
|
|
|
|
|
$seconds -= $hours * 3600;
|
|
|
|
|
$minutes = floor($seconds / 60);
|
|
|
|
|
$seconds -= $minutes * 60;
|
|
|
|
|
|
|
|
|
|
$hours = strlen($hours) == 1 ? "0" . $hours : $hours;
|
|
|
|
|
$minutes = strlen($minutes) == 1 ? "0" . $minutes : $minutes;
|
|
|
|
|
$seconds = strlen($seconds) == 1 ? "0" . $seconds : $seconds;
|
|
|
|
|
|
|
|
|
|
return "$hours:$minutes:$seconds";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EmExecucao() {
|
|
|
|
|
$path = trim(GetPathFileExec());
|
|
|
|
|
if (file_exists($path)) {
|
|
|
|
|
@LogTrf("EmExecucao", "Verifica se o arquivo esta executando", "O script ja esta em execucao! Path: " . $path);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = fopen(GetPathFileExec(), 'a');
|
|
|
|
|
if (!$result) {
|
|
|
|
|
@LogTrf("EmExecucao", "Verifica se foi possivel criar aquivo de controle de execucao", "Erro ao Criar Arquivo!");
|
|
|
|
|
}
|
|
|
|
|
return !$result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LimpaExecucao() {
|
|
|
|
|
if (file_exists(GetPathFileExec())) {
|
|
|
|
|
unlink(GetPathFileExec());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPathFileExec() {
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo de controle de execucao simultanea
|
|
|
|
|
*/
|
|
|
|
|
return sprintf('/tmp/tarifador_%s.txt', date('Y-m-d'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AjustaTronco($tronco) {
|
|
|
|
|
/*
|
|
|
|
|
* Remove copia ate encontrar um -(hifem) se existir
|
|
|
|
|
*/
|
|
|
|
|
return strpos($tronco, '-') !== false ? substr($tronco, 0, strpos($tronco, '-')) : $tronco;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|