Skip to content

Instantly share code, notes, and snippets.

@FredAzevedo
Created July 19, 2021 14:48
Show Gist options
  • Save FredAzevedo/ac80561db82827e00cb32420ed6e5347 to your computer and use it in GitHub Desktop.
Save FredAzevedo/ac80561db82827e00cb32420ed6e5347 to your computer and use it in GitHub Desktop.
onBoleto
public function onBoleto($param)
{
TTransaction::open('sample');
$pedido = new Pedido($param['id']);
$cliente_id = $pedido->cliente_faturamento_id;
$cliente = new Cliente($cliente_id);
$clienteEmail = EmailCliente::where('cliente_id','=',$cliente_id)->first();
$clienteTelefone = TelefonesCliente::where('cliente_id','=',$cliente_id)->first();
$email = ($clienteEmail->email != null) ? $clienteEmail : "";
$telefone = ($clienteTelefone->telefone != null) ? $clienteTelefone : "";
if($cliente->cep)
{
$data = $this->form->getData();
try
{
if($pedido->boleto_emitido == "N")
{
$boleto = new BoletoApi();
$datavencimentoDB = $pedido->data_vencimento;
$date = explode("-",$pedido->data_vencimento);
$dataVencimento = $date[1] . "/" . $date[2] . "/" . $date[0];
$boleto->vencimento = $dataVencimento;
$boleto->valor = $pedido->total_pedido;
$boleto->juros = 1.0;
$boleto->multa = 2.0;
$boleto->desconto = 0;
$boleto->cliente_id = $cliente_id;
$boleto->nome_cliente = $cliente->razao_social;
$boleto->cpf_cliente = Utilidades::removerCaracteresEspeciais($cliente->cpf_cnpj);
$boleto->endereco_cliente = $cliente->logradouro;
$boleto->numero_cliente = $cliente->numero;
$boleto->complemento_cliente = $cliente->complemento;
$boleto->bairro_cliente = $cliente->bairro;
$boleto->cidade_cliente = $cliente->cidade;
$boleto->estado_cliente = $cliente->uf;
$boleto->cep_cliente = Utilidades::removerCaracteresEspeciais($cliente->cep);
$boleto->email_cliente = $clienteEmail->email;
$boleto->telefone_cliente = Utilidades::removerCaracteresEspeciais($clienteTelefone->telefone);
$boleto->logo_url = LOGO_URL;
$boleto->texto = "BOLETO REFERENTE A SERVIÇOS DE CERTIFICAÇÃO DIGITAL. PEDIDO Nº: ".$pedido->id;
$boleto->grupo = 'Boleto'; //Quando um valor é informado neste campo, é retornado um link adicional para impressão de todos os boletos do mesmo grupo.
$boleto->juros_fixo = 0;
$boleto->multa_fixo = 0;
$boleto->diasdesconto1 = 0;
$boleto->desconto2 = 0;
$boleto->diasdesconto2 = 0;
$boleto->desconto3 = 0;
$boleto->diasdesconto3 = 0;
$boleto->nunca_atualizar_boleto = 0; //0 - 1
$boleto->instrucao_adicional = ''; //nclusão do texto adicional abaixo da instrução referente a juros e descontos. length (0-255).
$boleto->webhook = WEBHOOK_URL; //informe uma URL de Webhook. Iremos chamá-la com as novas informações sempre que a cobrança for atualizada.
$boleto->especie_documento = "DS";
$boleto->unit_id = $pedido->unit_id;
$boleto->user_id = $pedido->user_id;
$boleto->formato = "BOLETO";
$boleto->contas_receber_id = 0;
$boleto->pedido_numero = $param['id'];
$unit = new SystemUnit($boleto->unit_id);
$dados_api_integracao = ApiIntegracao::where('unit_id','=',$boleto->unit_id)
->where('tipo','=', 1)
->where('producao','=', $unit->producao)
->first();
$boleto->credencial = $dados_api_integracao->credencial;
$boleto->ambiente = $dados_api_integracao->url;
$boleto->chave = $dados_api_integracao->chave;
//$boleto->split = $dados_api_integracao->split;
$boleto_emitido = PJBankApi::emitirBoleto($boleto);
if($boleto_emitido->status == '201' || $boleto_emitido->status == '200'){
$boleto->vencimento = $datavencimentoDB;
$boleto->status = $boleto_emitido->status;
$boleto->msg = $boleto_emitido->msg;
$boleto->nossonumero = $boleto_emitido->nossonumero;
$boleto->id_unico = $boleto_emitido->id_unico;
$boleto->banco_numero = $boleto_emitido->banco_numero;
$boleto->token_facilitador = $boleto_emitido->token_facilitador;
$boleto->credencial = $boleto_emitido->credencial;
$boleto->linkBoleto = $boleto_emitido->linkBoleto;
$boleto->linkGrupo = $boleto_emitido->linkGrupo;
$boleto->linhaDigitavel = $boleto_emitido->linhaDigitavel;
$boleto->pedido_numero = $param['id'];
$boleto->store();
$pedido->boleto_pdf = $boleto->linkBoleto;
$pedido->boleto_emitido = "S";
$pedido->store();
// $action = new TAction([__CLASS__, 'onReload']);
// new TMessage('info', $boleto_emitido->msg, $action);
TScript::create("var win = window.open('{$boleto->linkBoleto}', '_blank'); win.focus();");
$action = new TAction([__CLASS__, 'onReload']);
new TMessage('info', 'Boleto processado com sucesso!.',$action,'ATENÇÃO!');
}
}
else
{
new TMessage('warning', 'Boleto já processado! Favor verificar opção "Gestão de Boletos" com o nº de referência: '.$pedido->id,null,'ATENÇÃO!');
}
} catch (Exception $e) {
TTransaction::rollback();
new TMessage('error', 'Houve um problema: <br>' . $e->getMessage());
$this->form->setData($data);
return;
}
}else{
new TMessage('error', 'Cliente sem endereço cadastrado! Favor cadastrar o endereço desse cliente.');
}
TTransaction::close();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment