Browse Source

Alteracao da flag para integer e acrescentado uma funcao que vai verificar se exite a chamada importada para a pbx_bilhetes sem a correcao do numero de destino

master
douglas.strappasson 12 months ago
parent
commit
6b8d06adf8
  1. 63
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaBilhetes.php
  2. 2
      projeto/base/sql/versao-1.8.1.sql

63
asterisk/var_lib_asterisk/scripts/manutencaoDB/importaBilhetes.php

@ -27,7 +27,7 @@ $pathLog = "/var/log/asterisk/importa_bilhetes.log";
/*
* Garante apenas uma instancia do script.
*/
$pid = new Pid(false);
$pid = new Pid();
try {
/*
@ -40,6 +40,7 @@ try {
@ApagaBilheteDuplTransfer($dbcon);
@CorrigeAbandonTransbordo($dbcon);
@CorrigeNumeroDestino($dbcon);
@CorrigeNumeroDestinoImportados($dbcon);
/*
* Inicia uma transacao com o banco de dados
@ -197,7 +198,6 @@ function ImportaAstBilhetes($dbcon) {
end as tipo_chamada
from ast_bilhetes a
where not exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes)
and a.corrige_numero_destino = TRUE
) as prf
) as ast;
@ -273,7 +273,7 @@ function CorrigeNumeroDestino($dbcon) {
) AS bilhetes_bilhetes GROUP BY uniqueid;
UPDATE ast_bilhetes
SET dst = ast_corrige_destino.dst, amaflags = 99, corrige_numero_destino = TRUE
SET dst = ast_corrige_destino.dst, amaflags = 99, corrige_num_destino = 1
FROM ast_corrige_destino
WHERE ast_bilhetes.uniqueid = ast_corrige_destino.uid
AND coalesce(ast_corrige_destino.dst, '') <> '';";
@ -283,6 +283,63 @@ function CorrigeNumeroDestino($dbcon) {
}
}
function CorrigeNumeroDestinoImportados($dbcon)
{
$precisaCorrecao = "WITH importado_sem_corrigir AS (
SELECT uniqueid FROM ast_bilhetes ab
WHERE corrige_num_destino = 0
AND EXISTS (SELECT '' FROM pbx_bilhetes WHERE id_bilhetes = ab.id_bilhetes)
),
precisa_corrigir AS (
SELECT DISTINCT a.uniqueid, a.id_bilhetes, MIN(
CASE
WHEN POSITION('/' IN b.agente) > 0 THEN SUBSTRING(b.agente, POSITION('/' IN b.agente) + 1)
ELSE soNumero(b.agente)
END
) AS dst
FROM ast_bilhetes a
INNER JOIN ast_eventos_dacs b ON b.uid2 = a.uniqueid
INNER JOIN importado_sem_corrigir c ON c.uniqueid = a.uniqueid
WHERE b.evento IN ('COMPLETEAGENT', 'COMPLETECALLER', 'TRANSFER')
AND POSITION('Agent/' IN b.agente) = 0
AND a.corrige_num_destino = 0
GROUP BY a.id_bilhetes, a.uniqueid
UNION
SELECT DISTINCT a.uniqueid, a.id_bilhetes, MIN(
CASE
WHEN POSITION('Local' IN a.dstchannel) > 0 THEN SUBSTRING(a.dstchannel, 7, POSITION('@' IN a.dstchannel) - 7)
WHEN POSITION('SIP' IN a.dstchannel) > 0 THEN SUBSTRING(a.dstchannel, 5, POSITION('-' IN a.dstchannel) - 5)
ELSE soNumero(a.dstchannel)
END
) AS dst
FROM ast_bilhetes a
INNER JOIN ast_eventos_dacs b ON b.uid2 = a.uniqueid
INNER JOIN importado_sem_corrigir c ON c.uniqueid = a.uniqueid
WHERE b.evento IN ('COMPLETEAGENT', 'COMPLETECALLER', 'TRANSFER')
AND POSITION('Agent/' IN b.agente) > 0
AND a.corrige_num_destino = 0
GROUP BY a.id_bilhetes, a.uniqueid
)";
$updatePbxBilhete = $precisaCorrecao . "UPDATE pbx_bilhetes
SET dst = pc.dst
FROM precisa_corrigir pc
WHERE pbx_bilhetes.uniqueid = pc.uniqueid";
$updateAstBilhete = $precisaCorrecao . "UPDATE ast_bilhetes
SET dst = pc.dst, amaflags = 99, corrige_num_destino = 1
FROM precisa_corrigir pc
WHERE ast_bilhetes.uniqueid = pc.uniqueid";
if (!$result = pg_query($dbcon, $updatePbxBilhete)) {
ibRaiseExcept("Nao possivel corrigir os bilhetes na tabela pbx_bilhetes!");
}
if (!$result = pg_query($dbcon, $updateAstBilhete)) {
ibRaiseExcept("Nao possivel corrigir os bilhetes na tabela ast_bilhetes!");
}
};
function AtualizaPreVenda($dbcon) {
$pathLog = '/var/log/asterisk/atrualiza_prevenda.log';
/*

2
projeto/base/sql/versao-1.8.1.sql

@ -5,4 +5,4 @@ update pbx_tarifa_tipo_preco set ttp_descricao = 'M
-- acrescenta flag que identifica se o numero de destino foi corrigido no script importaBilhetes através da funcao CorrigeNumeroDestino
-- o objetivo é evitar que ligações sejam gravadas na tabela pbx_bilhetes com o numero de destino incorreto.
ALTER TABLE ast_bilhetes
ADD corrige_numero_destino BOOLEAN DEFAULT FALSE;
ADD corrige_num_destino INT DEFAULT 0;
Loading…
Cancel
Save