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.

305 lines
12 KiB

<?php
$template = "contribuinte.tpl";
$tpLayout = 1;
$offSet = 0;
$refresh = isset($_GET['refresh']) ? true : false;
define('CONF_PATH_INTEGRACAO', '/var/lib/asterisk/scripts/integracao/custom/GoogleCalendar/');
define('CONF_PATH_CLASS', 'GoogleCalendar.php');
define('CONF_PATH_CREDENTIALS', 'credentials.json');
define('CONF_PATH_TOKEN', 'token.json');
define('CONF_STATUS_EXPORTADO', 21);
include CONF_PATH_INTEGRACAO . CONF_PATH_CLASS;
if (GetFormAcao() == FORM_UPDATE) {
$acaoForm = FORM_SAVE;
$id = $_GET["id"] ? $_GET["id"] : $_POST['client_id'];
$query = "SELECT client_id,
CASE WHEN(COALESCE(client_tipo_documento, '') = '')THEN 'CNPJ' ELSE client_tipo_documento END AS client_tipo_documento,
client_documento, client_razao_social,client_municipio, client_uf, client_nome_contato, client_status, client_email,
client_telefone, client_obs, client_tipo_contato, client_agendamento, client_class, client_update, (SELECT apelido FROM pbx_usuarios WHERE id = user_reg) as modificado
FROM pbx_cliente
WHERE client_id = {$id}";
$result = pg_query($dbcon, $query);
$row = @pg_fetch_array($result, null, PGSQL_ASSOC);
list($nomeDisp) = explode(" ", $row["client_razao_social"]);
if ($row['client_agendamento']) {
$discar = RemoveDddPadrao($row['client_telefone']);
$acao = "<img src=\"imgSite/ramalOn16.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Ligar para o cliente: $nomeDisp\" title=\"Ligar para o cliente: $nomeDisp\">";
$linkRamal = "<a href=\"javaScript:RetornaAbd('$discar',{$row["client_id"]});\">$acao</a>";
}
/** ENVIAR EMAIL * */
if ($row["client_email"]) {
$mailsend = "<a href='#' onclick=\"sendContribuiente('{$row["client_email"]}','sendmail')\"><img src=\"imgSite/mail16.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Enviar E-mail: $nomeDisp\" title=\"Enviar E-mail: $nomeDisp\"></a>";
} else {
$mailsend = "<img src=\"imgSite/email-no.png\" border=\"0\" width=\"16\" height=\"16\" title=\"O contato N<EFBFBD>o possui email cadastrado: $nomeDisp\">";
}
/** CONTATOS */
$contatos = "<a href=\"javaScript:NovaJanela('index.php?idProg=346&client_id={$row["client_id"]}', 'contatosCliente', '900', '250', 'jhTela')\"><img src=\"imgSite/User group.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Contatos do cliente ID: $nomeDisp\" title=\"Contatos do cliente ID: $nomeDisp\"></a>";
$row["client_agenda"] = $row["client_agendamento"] ? date('d/m/Y H:i', strtotime($row["client_agendamento"])) : '';
$row["client_status"] = GetStatusProspect($row["client_status"], false, ($refresh || $row["client_status"] == CONF_STATUS_EXPORTADO ? TRUE : FALSE));
$row["client_tipo_contato"] = GetClientTipoContato($row["client_tipo_contato"]);
$row["client_update"] = $row["client_update"] ? date('d/m/Y H:i:s', strtotime($row["client_update"])) : '-';
/**
* TABELA ANOTA<EFBFBD><EFBFBD>O
*/
$query1 = "SELECT cla_id, cla_anotacao, apelido, data_reg FROM pbx_cliente_anotacoes a "
. "INNER JOIN pbx_usuarios b ON b.matricula::int = a.user_reg "
. "WHERE client_id = '{$id}' ORDER BY data_reg DESC\n";
$sql = GetTotalRegistro($dbcon, $query1);
$params = sprintf("&client_id=%s&client_razao=%s", $id, $row['client_razao_social']);
$links = PaginaDados($idProg, $sql, $params, $regPagina, $offSet, $pagMostra, true);
$query1 .= " LIMIT $regPagina OFFSET $offSet";
$res = pg_query($dbcon, $query1);
$data = pg_fetch_all($res);
$tblAnota = '';
foreach ($data as $anota) {
$tblAnota .= "<tr>";
$tblAnota .= sprintf("<td>%s</td>", date('d/m/Y H:i:s', strtotime($anota['data_reg'])));
$tblAnota .= sprintf("<td>%s</td>", $anota['apelido']);
$tblAnota .= sprintf("<td>%s</td>", $anota['cla_anotacao']);
$tblAnota .= "</tr>";
}
$smarty->assign("links", $links);
$smarty->assign("pagMostra", $pagMostra);
$smarty->assign("totalReg", $totalReg);
$smarty->assign('anotacao', $tblAnota);
$smarty->assign('mailsend', $mailsend);
$smarty->assign('contatos', $contatos);
$smarty->assign('linkRamal', $linkRamal);
$smarty->assign('sound', $sound);
if ($result) {
//valores no form
foreach ($row as $key => $value) {
$smarty->assign($key, $value);
}
} else {
$acaoForm = FORM_INSERT;
$msgRet = "A opera<EFBFBD><EFBFBD>o n<EFBFBD>o pode ser realizada!";
$jsStartup[] = "alert('$msgRet');";
$msgRet .= pg_last_error() ? " Erro: " . pg_last_error() : "";
$smarty->assign("msg", $msgRet);
}
} else {
$msgForm = array();
if (!validaForm($fields, $fieldsObrig, $fieldsType, $fieldsDiplay, $msgForm)) {
$acaoForm = FORM_SAVE;
//formata mensagem de erro para script
$msgRet = "";
foreach ($msgForm as $value) {
$msgRet .= "\\n" . $value;
}
$jsStartup[] = "alert('$msgRet');";
//formata mensagem de erro para o form
$msgRet = "";
foreach ($msgForm as $value) {
$msgRet .= $value . " ";
}
//erros no form
$smarty->assign("msgErro", $msgRet);
$_POST["client_status"] = GetStatusProspect($_POST["client_status"], false, $refresh);
$_POST["client_tipo_contato"] = GetClientTipoContato($_POST["client_tipo_contato"]);
//valores no form
foreach ($fields as $value) {
$smarty->assign($value, $_POST[$value]);
}
} else {
$acaoForm = FORM_SAVE;
$id = $_POST["client_id"];
$nome = QuotedStr(strtoupper($_POST["client_nome_contato"]));
$status = isset($_POST["client_status"]) ? QuotedStr($_POST["client_status"]) : null;
$tpContato = QuotedStr($_POST["client_tipo_contato"]);
$tpDoc = QuotedStr($_POST["client_tipo_documento"]);
$doc = sonumero($_POST["client_documento"]);
$doc = !$doc ? "null" : QuotedStr($doc);
$email = trim($_POST["client_email"]);
$email = !$email ? "null" : QuotedStr($email);
$fone = sonumero($_POST["client_telefone"]);
$fone = !$fone ? "null" : QuotedStr($fone);
if (!$_POST["client_agenda"]) {
$agendamento = 'null';
} else {
$agendamento = strlen($_POST["client_agenda"]) == 10 ? QuotedStr(FormatDtMssql($_POST["client_agenda"]) . " 00:00") : QuotedStr(FormatDtMssql(substr($_POST["client_agenda"], 0, 10)) . substr($_POST["client_agenda"], 10, 16));
}
$user_contato = QuotedStr(GetMatricula());
$obs = trim($_POST["client_obs"]);
$obs = !$obs ? null : QuotedStr($obs);
$user_reg = GetIdUser();
/*
* Atribui uma nova etapa de acordo com o status.
*/
$client_etapa = GetClienteEtapa($_POST["client_status"]);
$query = "update pbx_cliente
set client_tipo_documento = {$tpDoc},
client_documento = {$doc},
client_nome_contato = {$nome},$client_etapa";
if (isset($_POST["client_status"])) {
$query .= "client_status = {$status},";
}
if ($status != CONF_STATUS_EXPORTADO && $status) {
$query .= "user_reg = {$user_reg}, client_update = now(),";
}
$query .= "client_email = {$email},
client_telefone = {$fone},
client_tipo_contato = {$tpContato},
client_agendamento = {$agendamento}
where client_id = {$id} ";
$result = pg_query($dbcon, $query);
if ($obs) {
$sql = "INSERT INTO pbx_cliente_anotacoes (client_id, cla_anotacao, user_reg) VALUES(%s, %s, %s);";
$sql = sprintf($sql, $id, $obs, $user_contato);
pg_query($dbcon, $sql);
}
atualizaContato($dbcon, $_POST["client_id"], $nome, $fone, $email);
//valores no form
foreach ($fields as $value) {
if (array_search($value, $_POST) !== false) {
$smarty->assign($value, $value == "client_id" ? $id : $_POST[$value]);
}
}
if ($result) {
if ($_POST['intg_agenda'] && $_POST["client_agenda"] && $_POST['client_razao_social']) {
integCalendar($_POST["client_agenda"], $_POST['client_razao_social'], trim('desenv02@simplesip.com.br'));
}
$msgRet = "Registro alterado com sucesso!";
$jsStartup[] = "alert('$msgRet');";
$smarty->assign("msg", $msgRet);
if (!$_GET['refresh']) {
$jsStartup[] = "window.opener.ResetForm();";
}
$jsStartup[] = "window.close();";
} else {
$msgRet = "A opera<EFBFBD><EFBFBD>o n<EFBFBD>o pode ser realizada!";
$jsStartup[] = "alert('$msgRet');";
$msgRet .= pg_last_error() ? (IsAdmin() ? " Erro: " . pg_last_error() : "") : "";
$smarty->assign("msg", $msgRet);
}
}
}
function atualizaContato($dbcon, $cliente, $nome, $fone, $email = 'null') {
$query = "SELECT clc_id FROM pbx_cliente_contato WHERE client_id = {$cliente} AND clc_contato_principal = 1;";
$result = pg_query($dbcon, $query);
$data = pg_fetch_assoc($result);
if ($data) {
$query = "UPDATE pbx_cliente_contato SET clc_nome = {$nome}, clc_email = {$email}, clc_fone = {$fone} WHERE clc_id = {$data['clc_id']};";
pg_query($dbcon, $query);
}
}
function integCalendar($agenda, $empresa, $email) {
if ((file_exists(CONF_PATH_INTEGRACAO . CONF_PATH_CLASS) && (file_exists(CONF_PATH_INTEGRACAO . CONF_PATH_TOKEN)) && (file_exists(CONF_PATH_INTEGRACAO . CONF_PATH_CREDENTIALS)))) {
$formtData = strlen($agenda) == 10 ? FormatDtMssql($agenda) . " 00:00" : FormatDtMssql(substr($agenda, 0, 10)) . substr($agenda, 10, 16);
$emails = GetAllMailAdmin();
$emails[]['email'] = $email;
$gg = new GoogleCalendar();
$gg->getClient();
$dataIni = date('Y-m-d\TH:i:s-04:00', strtotime($formtData));
$dataFim = date('Y-m-d\TH:i:s-04:00', strtotime($formtData . ' +1 hours'));
$link = $gg->createEventCalendar(
'APRESENTACAO COM ' . RemoveAcentos($empresa),
'AGENDAMENTO DA APRESENTACAO DOS PRODUTOS SIMPLES IP',
$dataIni,
$dataFim,
$emails
);
return $link;
}
}
function GetClienteEtapa($status) {
$query = " select ctst_nome from pbx_campanha_contato_status where ctst_id = '$status';\n";
$result = pg_query($query);
$data = pg_fetch_row($result);
$statusAtual = $data[0];
$novaEtapa = '';
switch ($statusAtual) {
case "NOVO": $novaEtapa = 'VALIDACAO';
break;
case "ATENDIDA":
case "N<EFBFBD>O ATENDIDA":
case "ELETR<EFBFBD>NICA":
case "MUDA":
case "OCUPADA":
case "DESLIGOU":
case "CLIENTE":
case "PROSPECT":
case "LEAD":
case "ENVIADO":
case "AGENDADO":
case "INTERESSE":
case "CONTABILIDADE": $novaEtapa = 'PROSPECCAO';
break;
case "N<EFBFBD>O ENVIAR":
case "RESPONDIDO" :
case "REPROCESSAR":
case "INVALIDO":
case "SEM INTERESSE":
case "EXCLUIR":
case "EXPORTADO":
case "REMOVER": $novaEtapa = 'FINALIZACAO';
break;
}
$query = "select cletp_id from pbx_cliente_etapa where cletp_descricao = '$novaEtapa';\n";
$result = pg_query($query);
if (!$result || !pg_num_rows($result)) {
return '';
}
$data = pg_fetch_row($result);
return sprintf("\ncletp_id = '%s',", $data[0]);
}
?>