debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("view.execute");
$doc = $this->mask_cpf_cnpj($documento);
if ($doc) {
$this->params['_consulta'] = "011G0NP05B";
$this->params['formato_padrao'] = "X";
$this->params[(strlen($documento) == 11 ? 'cpf' : 'cnpj')] = $doc;
return $this->setParamsXML();
}
$this->log->error("Mask CPF/CNPJ: {$doc} Nao foi encontrado!", $this->debug);
return false;
} else {
return false;
}
}
public function identificarTelefone($telefone) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("view.execute");
$telefone = $this->mask_phone_tel($telefone);
if ($telefone) {
$this->params['_consulta'] = "011G0NP05B";
$this->params['formato_padrao'] = "X";
$this->params[$telefone['type']] = $telefone['telefone'];
return $this->setParamsXML();
}
$this->log->error("Mask Phone/Tel: " . print_r($telefone, true) . " Nao foi encontrado!", $this->debug);
return false;
} else {
return false;
}
}
public function listaDetalhesServico($codcli) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("services.details");
$this->params['codcli'] = $codcli;
return $this->setParamsJSON();
} else {
return false;
}
}
public function faturasCliente($codcli, $from = '01-01-2000', $to = '') {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("faturas.cliente");
$this->params['codcli'] = $codcli;
$this->params['from'] = $from;
$this->params['to'] = date('Y-m-d', strtotime('+20 days', time()));
return $this->setParamsXML();
} else {
return false;
}
}
public function verBoleto($codFat) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("datasource.verBoleto");
$this->params['codfat'] = $codFat;
return $this->setParamsJSON();
} else {
return false;
}
}
public function linhaDigitavel($codFat) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("datasource.linhaDigitavel");
$this->params['codfat'] = $codFat;
return $this->setParamsJSON();
} else {
return false;
}
}
public function listaServico($codcli) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("services.details");
$this->params['codcli'] = $codcli;
return $this->setParamsJSON();
} else {
return false;
}
}
public function planInfo2($codcli) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("plan.getInfo2");
$this->params['codcli'] = $codcli;
return $this->setParamsJSON();
} else {
return false;
}
}
public function habilitacaoProvisoria($codsercli) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("list");
$this->setSubMetodo("habilitacaoProvisoria.execute");
$this->params['codsercli'] = $codsercli;
return $this->setParamsJSON();
} else {
return false;
}
}
public function verificaIncidente($codcli) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo("view.execute");
$this->params['_consulta'] = "02A50HOX3E";
$this->params['formato_padrao'] = "X";
$this->params['codcli'] = $codcli;
return $this->setParamsXML();
} else {
return false;
}
}
/**
* Envia email das faturas solicitadas.
*
* $faturaMes => Coleta todas as faturas do mês para ser enviadas.
*
* @param string|int $documento
* @param boolean $faturasMes
* @return boolean
*/
public function enviarBoletoFatura($cliente) {
$this->debug = debug_backtrace();
$pathFileMail = __DIR__ . "/email.html";
if (!$this->mail) {
$this->log->error('Antes de enviar o email e necessario configurar o SimpleMail e SMTP!');
return false;
}
$dados = $cliente->params->param[1]->value->DOMElement->result->row;
$fatura = $this->faturasCliente($dados->codcli);
$invoices = $fatura->params->param[1]->value->DOMElement->result->row;
if (!$invoices) {
$this->log->info("Nao foi possivel encontrar nenhuma fatura em aberto do solicitante!");
return false;
}
foreach ($invoices as $value) {
$invoice = $this->verBoleto($value->codfat);
$line = $this->linhaDigitavel($value->codfat)['data']['results']['codigo_barras'];
$linkInvoice = $invoice['data']['results'][0]['linkPublico'];
$link .= "Codigo do boleto:[ $line ] Visualizar Boleto
";
sleep(1);
}
$data = array('$titulo' => "Envio de Fatura", '$data_ven' => $invoices->data_ven, '$nome' => $dados->nome_cli, '$link' => $link);
$this->log->info("Faturas inseridas do E-mail!");
if (file_exists($pathFileMail)) {
$this->mail->pathBodyMail($pathFileMail, $data);
} else {
$this->mail->bodyMessage("
Conforme solicitado estamos lhe enviando a segunda via de sua fatura.
{$link}
"); } $this->log->info("Encaminhando boleto por E-mail!"); if ($this->mail->mailing($dados->e_mail)) { $this->log->success("O Boleto foi enviado com sucesso!"); return true; } else { $this->log->error("Nao foi possivel enviar o boleto para o email do solicitante!"); $this->log->error("Error SimpleMail: " . $this->mail->getErrorSend()); return false; } } function listaServicoHabilitado($codcli, $infoAll = false) { $retorno = $this->listaDetalhesServico($codcli); $groupService = array(); if ($retorno['data']['results'][0]['planos']) { $descri_est = explode(' ', $retorno['descri_est'])[1]; if ($descri_est == 'Habilitado') { if (!in_array($retorno['codgser'], $groupService)) { $groupService[] = $infoAll ? $retorno : $retorno['codgser']; } } } else { foreach ($retorno['data']['results']['planos'] as $plano) { $descri_est = explode(' ', $plano['descri_est'])[1]; if ($descri_est == 'Habilitado') { if (!in_array($plano['codgser'], $groupService)) { $groupService[] = $infoAll ? $plano : $plano['codgser']; } } } } return $groupService; } ######################################################################## ## FUNCOES DEFAULT DA CLASSE ## ######################################################################## /** * Coleta as informacoes iniciais para o inicio da integracao com a API. * * @param string $user * @param string $password * @param boolean $url */ public function __construct($user, $password, $url) { $this->user = $user; $this->password = $password; $this->url = "http://{$url}/"; $this->setLog(CONF_LOGGER_ATIVO); $this->log->info("Iniciando integracao", debug_backtrace()); } /** * Parametriza o metodo utilizado para a consulta. * * @param type $metodo */ private function setMetodo($metodo) { $this->metodo = $metodo; } /** * Parametriza do submetodo utilizado para a consulta. * * @param type $submetodo */ private function setSubMetodo($submetodo) { $this->subMetodo = $submetodo; } /** * Escreve a query para ser passada para o curl * * @param string $query */ private function setQuery($query) { return $this->query .= $query; } /** * retorna a string pronta da query do curl e limpa a variavel. * * @return string $query */ private function getQuery() { $query = $this->query; unset($this->query); return $query; } /** * Constroi de forma dinamica a string para ser passada para a execucao do Curl * * @void */ private function curl($type) { $this->log->debug($this->query); $this->curl = curl_init(); curl_setopt($this->curl, CURLOPT_URL, $this->url . (strtoupper($type) == 'XML' ? 'server.php' : 'integrator.server.php')); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->curl, CURLOPT_POST, 1); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->getQuery()); curl_setopt($this->curl, CURLOPT_ENCODING, "deflate,gzip,br"); if (strtoupper($type) == 'XML') { curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8; ApplicationV: Integrator/6')); } else { curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Cache-Control: no-cache', 'Content-Type: application/json', 'ApplicationV: Integrator/6')); } /* * Final da linha para pegar os dados da variavel */ $this->log->debug("Curl: {$this->curl}", debug_backtrace()); } /** * Recebe array de forma de indice e valor * * @example array("qtype" => 'test_api', "query" => '123', "oper" => '=') * * @obs sempre chamar a função debug_backtrace() para ser disponível em log * * @param type $params * @debug_track function debug_backtrace() */ private function setParamsXML() { $this->params['_user'] = $this->user; $this->params['_passwd'] = $this->password; $this->setQuery("