178 lines
6.0 KiB
PHP
178 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Empresa;
|
|
use App\Models\ConfiguracaoSuper;
|
|
use App\Models\FinanceiroBoleto;
|
|
use App\Models\LogBoleto;
|
|
|
|
class FinanceiroBoletoController extends Controller
|
|
{
|
|
public function store(Request $request){
|
|
$empresa = Empresa::findOrFail($request->empresa_id);
|
|
$valor = __convert_value_bd($request->valor);
|
|
$vencimento = $request->vencimento;
|
|
|
|
$config = ConfiguracaoSuper::first();
|
|
try{
|
|
if($empresa->asaas_id == null){
|
|
$dataCliente = [
|
|
'name' => $empresa->nome,
|
|
'cpfCnpj' => $empresa->cpf_cnpj,
|
|
'email' => $empresa->email,
|
|
'mobilePhone' => preg_replace('/[^0-9]/', '', $empresa->telefone),
|
|
'address' => $empresa->rua,
|
|
'addressNumber' => $empresa->numero,
|
|
'province' => $empresa->bairro,
|
|
'postalCode' => preg_replace('/[^0-9]/', '', $empresa->cep),
|
|
];
|
|
|
|
$endPoint = 'https://api-sandbox.asaas.com/v3/customers';
|
|
if($config->sandbox_boleto == 0){
|
|
$endPoint = 'https://api.asaas.com/v3/customers';
|
|
}
|
|
$client = new \GuzzleHttp\Client();
|
|
|
|
$response = $client->request('POST', $endPoint, [
|
|
'body' => json_encode($dataCliente),
|
|
'headers' => [
|
|
'accept' => 'application/json',
|
|
'access_token' => $config->asaas_token_boleto,
|
|
],
|
|
]);
|
|
|
|
$data = json_decode($response->getBody(),true);
|
|
|
|
$empresa->asaas_id = $data['id'];
|
|
$empresa->save();
|
|
}
|
|
|
|
$dataBoleto = [
|
|
'customer' => $empresa->asaas_id,
|
|
'billingType' => 'BOLETO',
|
|
'value' => __convert_value_bd($request->valor),
|
|
'dueDate' => $request->vencimento
|
|
];
|
|
|
|
if($config->percentual_juros_padrao_boleto){
|
|
$dataBoleto['interest'] = [
|
|
'value' => $config->percentual_juros_padrao_boleto
|
|
];
|
|
}
|
|
|
|
if($config->percentual_multa_padrao_boleto){
|
|
$dataBoleto['fine'] = [
|
|
'value' => $config->percentual_multa_padrao_boleto
|
|
];
|
|
}
|
|
|
|
$endPoint = 'https://api-sandbox.asaas.com/v3/payments';
|
|
if($config->sandbox_boleto == 0){
|
|
$endPoint = 'https://api.asaas.com/v3/payments';
|
|
}
|
|
$client = new \GuzzleHttp\Client();
|
|
$response = $client->request('POST', $endPoint, [
|
|
'body' => json_encode($dataBoleto),
|
|
'headers' => [
|
|
'accept' => 'application/json',
|
|
'access_token' => $config->asaas_token_boleto,
|
|
],
|
|
]);
|
|
|
|
$data = json_decode($response->getBody(),true);
|
|
|
|
if($data){
|
|
$boleto = [
|
|
'empresa_id' => $empresa->id,
|
|
'valor' => __convert_value_bd($request->valor),
|
|
'vencimento' => $vencimento,
|
|
'pdf_boleto' => $data['bankSlipUrl'],
|
|
'valor_recebido' => 0,
|
|
'juros' => $config->percentual_juros_padrao_boleto,
|
|
'multa' => $config->percentual_multa_padrao_boleto,
|
|
'status' => 0,
|
|
'plano_id' => $empresa->plano->plano_id,
|
|
'_id' => $data['id']
|
|
];
|
|
FinanceiroBoleto::create($boleto);
|
|
|
|
LogBoleto::create([
|
|
'tipo' => 'geracao',
|
|
'empresa_id' => $empresa->id,
|
|
'status' => 1,
|
|
'descricao' => 'Gerador'
|
|
]);
|
|
}
|
|
|
|
return response()->json($dataBoleto, 200);
|
|
}catch(\Exception $e){
|
|
return response()->json($e->getMessage(), 404);
|
|
}
|
|
|
|
}
|
|
|
|
public function confirmacao(Request $request){
|
|
try{
|
|
|
|
$id = $request->payment['id'];
|
|
|
|
$financeiro = FinanceiroBoleto::where('_id', $id)->first();
|
|
if($financeiro){
|
|
$financeiro->status = 1;
|
|
$financeiro->data_recebimento = date('Y-m-d');
|
|
$financeiro->valor_recebido = $financeiro->valor;
|
|
$financeiro->save();
|
|
|
|
LogBoleto::create([
|
|
'tipo' => 'confirmacao',
|
|
'empresa_id' => $financeiro->empresa_id,
|
|
'status' => 1,
|
|
'descricao' => 'Confirmação webhook'
|
|
]);
|
|
}else{
|
|
LogBoleto::create([
|
|
'tipo' => 'confirmacao',
|
|
'empresa_id' => null,
|
|
'status' => 0,
|
|
'descricao' => 'ID não encontrado'
|
|
]);
|
|
}
|
|
}catch(\Exception $e){
|
|
LogBoleto::create([
|
|
'tipo' => 'confirmacao',
|
|
'empresa_id' => null,
|
|
'status' => 0,
|
|
'descricao' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function modal(Request $request){
|
|
|
|
// $item = FinanceiroBoleto::where('empresa_id', $request->empresa_id)
|
|
// ->whereMonth('created_at', date('m'))
|
|
// ->where('status', 0)
|
|
// ->first();
|
|
|
|
$item = $this->validaFaturasAnteriores($request->empresa_id);
|
|
return view('financeiro_boletos.partials.modal', compact('item'));
|
|
}
|
|
|
|
private function validaFaturasAnteriores($empresa_id){
|
|
$mes = 1;
|
|
$fim = (int)date('m');
|
|
for($i=1; $i<=$fim; $i++){
|
|
$fatura = FinanceiroBoleto::where('empresa_id', $empresa_id)
|
|
->whereMonth('vencimento', $mes)
|
|
->where('status', 0)
|
|
->first();
|
|
|
|
if($fatura != null) return $fatura;
|
|
$mes++;
|
|
}
|
|
}
|
|
}
|