D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
idoso
/
adm
/
app
/
gre
/
Models
/
Filename :
GreGerarBoleto.php
back
Copy
<?php namespace App\gre\Models; if (!defined('URL')) { header('Location: /'); exit(); } /** * Description of GreGerarBoleto * * @copyright (c) year, Carlos Marques - CM */ class GreGerarBoleto { private $Resultado; private $DadosUsuario; private $Dados; private $DadosId; private $IdBol; private $IdCat; private $ValorJuros; private $ValorMulta; private $CamposString; private $DadosFat; private $DadosCP; private $DadosFatId; private $Body; function getResultado() { return $this->Resultado; } public function gerBol($DadosId) { $this->DadosId = (int) $DadosId; $verItemBol = new \App\adms\Models\helper\AdmsRead(); $verItemBol->fullRead("SELECT fat.id id, concat(lpad(fat.id, banco.digitos_nosso_numero,0),'-',fat.dv_id) fat_id, lpad(fat.id ,6,0) nome_arq, lpad(banco.numero,3,0) banco_numero, case when dados.dv_agencia is null then dados.agencia else concat(dados.agencia, '-', dados.dv_agencia) END agencia, concat(dados.conta,'-', dados.dv_conta) conta, dados.perc_juros, dados.perc_multa, dados.carteira, case when dados.conta_convenio <> 0 then concat(lpad(dados.conta_convenio,banco.digitos_conta_convenio,0),'-',dados.dv_conta_convenio) else 'NULL' end conta_convenio, empr.nome empr_nome, empr.nome_fantasia nome_fantasia, MASK(lpad(empr.cnpj, 14,0), '##.###.###/####-##') AS empr_cnpj, MASK(lpad(empr.cep, 8,0), '#####-###') empr_cep, muni.nome empr_muni_nome, uf.sigla empr_uf_sigla, empr.bairro empr_bairro, empr.endereco empr_endereco, empr.numero empr_numero, empr.complemento empr_complemento, curdate() emissao, fat.docto documento, DATE_FORMAT(fat.vencimento, '%Y-%m-%d') vencimento, concat(LPAD((fat.docto), banco.digitos_nosso_numero,0), '-P') numero, fat.valor_fatura, round((fat.valor_fatura *(dados.perc_juros/100)/30),2) valor_juros, round((fat.valor_fatura *(dados.perc_multa/100)),2) valor_multa, case when resid.gre_sexo_id = 1 then concat(' da Sra.', resid.apelido) else concat(' do Sr.', resid.apelido) end resid_nome, case when contr.gre_sexo_id = 1 then concat(' Prezada Sra.', contr.nome) else concat('Prezado Sr.', contr.nome) end nome_email, contr.nome contr_nome, MASK(lpad(contr.cpf, 11,0), '###.###.###-##') AS contr_cpf, MASK(lpad(contr.cep, 8,0), '#####-###') contr_cep, muni.nome contr_muni_nome, uf.sigla contr_uf_sigla, contr.bairro contr_bairro, contr.endereco contr_endereco, contr.email contr_email, contr.numero contr_numero, contr.complemento contr_complemento, fat.docto FROM gre_cab_fatura fat inner join gre_dados_boleto dados on dados.gre_empr_princ_id = fat.gre_empr_princ_id inner join gre_empresa empr on empr.id = dados.gre_empresa_boleto inner join gre_residente resid on resid.id = fat.gre_residente_id inner join gre_contratante contr on contr.id = resid.gre_contratante_id inner join gre_bancos banco on banco.id = dados.gre_banco_id inner join gre_municipios muni on muni.id = empr.gre_municipios_id inner join gre_uf uf on uf.id = muni.gre_uf_id inner join gre_municipios muni_contr on muni_contr.id = contr.gre_municipio_id inner join gre_uf uf_contr on uf_contr.id = muni_contr.gre_uf_id WHERE fat.autorizado = 'S' and fat.gre_status_fat_id = 6 and fat.gre_empr_princ_id = ". $_SESSION['id_user']); $this->DadosUsuario = $verItemBol->getResultado(); $this->geraEmail(); } private function geraEmail() { foreach ($this->DadosUsuario as $email) { extract($email); $this->ValorJuros = number_format($valor_juros,2,',','.'); $this->ValorMulta = number_format($valor_multa,2,',','.'); $this->Info['body'] = utf8_encode ($nome_email).'.<br><br>'; $this->Info['body'] .= utf8_encode ('Segue em anexo referido boleto.').'<br><br>'; $this->Info['body'] .= 'Atenciosamente<br><br>'; $this->Info['body'] .= '<b>'.utf8_encode($nome_fantasia).'</b>'; $this->Info['Subject'] = 'Envio do boleto - ' . utf8_encode($resid_nome); $numero = $fat_id; $fields = array( 'boleto.conta.banco'=> $banco_numero, 'boleto.conta.agencia'=> $agencia, 'boleto.conta.numero'=> $conta, 'boleto.conta.carteira'=> utf8_encode($carteira), 'boleto.conta.convenio'=> $conta_convenio, 'boleto.beneficiario.nome'=> utf8_encode($empr_nome), 'boleto.beneficiario.cprf'=> $empr_cnpj, "boleto.beneficiario.endereco.cep"=> $empr_cep, "boleto.beneficiario.endereco.uf"=> $empr_uf_sigla, "boleto.beneficiario.endereco.localidade"=> utf8_encode($empr_muni_nome), "boleto.beneficiario.endereco.bairro"=> utf8_encode($empr_bairro), "boleto.beneficiario.endereco.logradouro"=> utf8_encode($empr_endereco), "boleto.beneficiario.endereco.numero"=> $empr_numero, "boleto.beneficiario.endereco.complemento"=> utf8_encode($empr_complemento), "boleto.emissao"=> $emissao, "boleto.vencimento"=> $vencimento, "boleto.documento"=> $documento, 'boleto.numero'=> $numero , //'11317210943-P', 'boleto.titulo'=> 'DM', 'boleto.valor'=> $valor_fatura, "boleto.pagador.nome"=> utf8_encode($contr_nome), "boleto.pagador.cprf"=> $contr_cpf, "boleto.pagador.endereco.cep"=> $contr_cep, "boleto.pagador.endereco.uf"=> utf8_encode($contr_uf_sigla), "boleto.pagador.endereco.localidade"=> utf8_encode($contr_muni_nome), "boleto.pagador.endereco.bairro"=> utf8_encode($contr_bairro), "boleto.pagador.endereco.logradouro"=> utf8_encode($contr_endereco), "boleto.pagador.endereco.numero"=> $contr_numero, "boleto.pagador.endereco.complemento"=> utf8_encode($contr_complemento), 'boleto.instrucao'=> array( utf8_encode('APOS O VENCIMENTO COBRAR JUROS DE........: R$ ').$this->ValorJuros . ' AO DIA', utf8_encode('APOS O VENCIMENTO COBRAR MULTA DE........: R$ ').$this->ValorMulta , utf8_encode('Boleto referente a fatura: '). $documento, 'Mais info em http://www.boletocloud.com/app/dev/api' ) ); IF($fields['boleto.conta.convenio']=='NULL'){ UNSET($fields['boleto.conta.convenio']); } #Aplicando formato de formul�rio $this->CamposString = ''; foreach($fields as $key=>$value) { if(is_array($value)){ foreach($value as $v){ $this->CamposString .= urlencode($key).'='.urlencode($v).'&'; } }else{ $this->CamposString .= urlencode($key).'='.urlencode($value).'&'; } } $data = rtrim($this->CamposString, '&'); #Definindo conte�do da requisi��o e tipos de respostas aceitas #Pode responder com o boleto ou mensagem de erro $accept_header = 'Accept: application/pdf, application/json'; #Estou enviando esse formato de dados $content_type_header = 'Content-Type: application/x-www-form-urlencoded; charset=utf-8'; $headers = array($accept_header, $content_type_header); #Configura��es do envio $url = 'https://sandbox.boletocloud.com/api/v1/boletos'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_USERPWD, "api-key_cZEvgjnZUV4Jg826FSwLpHJCWwwYjEmjn9Gk6a7SCGE=:token"); #API TOKEN curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);# Basic Authorization curl_setopt($ch, CURLOPT_HEADER, true);#Define que os headers estar�o na resposta curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); #Para uso com https curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); #Para uso com https #Envio $response = curl_exec($ch); #Principais meta-dados da resposta $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); #Fechar processo de comunica��o curl_close($ch); #Processando a resposta $created = 201; #Constante que indica recurso criado (Boleto Criado) #Separando header e body na resposta $header = substr($response, 0, $header_size); $body = substr($response, $header_size); $header_array = explode("\r\n", $header); #Principais headers $boleto_cloud_version = ''; $boleto_cloud_token = ''; $location = ''; foreach($header_array as $h) { if(preg_match('/X-BoletoCloud-Version:/i', $h)) { $boleto_cloud_version = $h; } if(preg_match('/X-BoletoCloud-Token:/i', $h)) { $boleto_cloud_token = $h; } if(preg_match('/Location:/i', $h)) { $location = $h; } } $erro = explode(',', $body); $erro0 = explode(':', $erro[0]); $erro0[0] = str_replace( '{','', $erro0['0']); $erro0[0] = str_replace( '"','', $erro0['0']); if($erro0[0]=='erro') { $this->Resultado = false; $_SESSION['msg'] = "<div class='alert alert-danger' role='alert'> Erro: ". $erro[4]." <button type='button' class='close' data-dismiss='alert' aria-label='Close'> <span aria-hidden='true'>×</span></button> </div>"; $this->Resultado = false; // $UrlDestino = URLADM . 'boleto/listar'; // header("Location: $UrlDestino"); }else{ #Processando sucesso ou falha $arquivoname = "boleto_{$nome_arq}" .".pdf"; if($http_code == $created){ #Vers�o da plataforma: $boleto_cloud_version #Token do boleto disponibilizado: $boleto_cloud_token #Localiza��o do boleto na plataforma: $location #Enviando boleto como resposta: //header('Content-Description: File Transfer'); // header('Content-type: application/pdf'); // header('Content-Disposition: inline; filename=arquivo-api-boleto-post-teste.pdf'); // header("Content-Disposition: attachment; filename={$arquivo}"); // header('Content-Length: '.filesize($body)); // echo $body; #Visualiza��o no navegador //readfile($_SERVER['DOCUMENT_ROOT']."idoso/adm/fatura/".$arquivo); /* header("Content-Length: " . filesize ( $arquivo ) ); header("Content-type: application/octet-stream"); header("Content-disposition: attachment; filename=".basename($arquivo)); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); ob_clean(); flush(); */ $arquivo = fopen($_SERVER['DOCUMENT_ROOT']."idoso/adm/boleto/".$arquivoname,'w'); //verificamos se foi criado if ($arquivo == false) die('Não foi possível criar o arquivo.'); //escrevemos no arquivo fwrite($arquivo, $body); //Fechamos o arquivo após escrever nele fclose($arquivo); $this->Info['anexo'] = $_SERVER['DOCUMENT_ROOT']."idoso/adm/boleto/".$arquivoname; $this->Info['dest_email'] = $contr_email; $this->Info['contr_email'] = $contr_nome; }else{ #Vers�o da plataforma: $boleto_cloud_version #C�dgio de erro HTTP: $http_code #Enviando erro como resposta: //header('Content-Type: application/json; charset=utf-8'); // echo $body; #Visualiza��o no navegador } $emailPHPMailer = new \App\adms\Models\helper\AdmsPhpMailerBoleto(); $emailPHPMailer->emailPhpMailer($this->Info); $upAltfatura = new \App\adms\Models\helper\AdmsUpdate(); $this->DadosFatId['id'] = $id;; $this->DadosFat['boleto_emitido'] = 'S'; $this->DadosFat['nosso_numero'] = $fat_id; $this->DadosFat['gre_banco_id'] = $banco_numero; $this->DadosFat['valor_juros_dia'] = $valor_juros; $this->DadosFat['valor_multa'] = $valor_multa; $this->DadosFat['data_emissao_boleto'] = date("Y-m-d H:i:s"); $this->DadosFat['gre_status_fat_id'] = 7; $upAltfatura->exeUpdate("gre_cab_fatura", $this->DadosFat, "WHERE id =:id", "id=" . $this->DadosFatId['id']); $this->DadosCP['gre_cab_fat_id'] = $fat_id; $this->DadosCP['docto'] = $docto; $this->DadosCP['gre_banco_id'] = $gre_banco_id; $this->DadosCP['nosso_numero'] = $nosso_numero; $this->DadosCP['data_emissao'] = $emissao; $this->DadosCP['data_vencimento'] = $vencimento; $this->DadosCP['valor'] = $valor_fatura; $this->DadosCP['valor_juros_dia'] = $valor_juros_dia; $this->DadosCP['valor_multa'] = $valor_multa; $this->DadosCP['gre_cp_cr_tipo_conta_id'] = 1; $this->DadosCP['gre_cp_cr_conta_id'] = 1; $this->DadosCP['gre_empr_princ_id'] = $gre_empr_princ_id; $this->DadosCP['gre_filial_id'] = $gre_filial_id; $this->DadosCP['gre_contratante_id'] = $gre_contratante_id; $this->DadosCP['gre_residente_id'] = $gre_residente_id; $this->DadosCP['gre_status_fat_id'] = 1; $this->DadosCP['created'] = date("Y-m-d H:i:s"); $cadCP = new \App\adms\Models\helper\AdmsCreate; $cadCP->exeCreate("gre_cp_cr", $this->DadosCP); } } } }