File manager - Edit - /var/www/html/gop/api/app/Http/Services/NotaFiscalService.php
Back
<?php namespace App\Http\Services; use App\Http\Requests\Store\StoreNotaFiscalRequest; use App\Models\NotaFiscal; use App\Models\Obra; use Symfony\Component\HttpFoundation\Response; class NotaFiscalService { public function store(StoreNotaFiscalRequest $request) { $obra = Obra::findOrFail($request->obra_id); $valorNota = (float) $request->valor; $valorEmpenhado = 0; if ($obra->valor_empenhado_disponivel < $valorNota) { return response()->json([ 'message' => 'Atualmente a obra possui apenas R$'.number_format($obra->valor_empenhado_disponivel, 2, ',', '').' disponíveis para uso em Notas Fiscais.', 'errors' => [ 'valor' => 'O valor informado ultrapassa o valor disponível.', ], ], Response::HTTP_UNPROCESSABLE_ENTITY); } foreach ($request->empenhos as $empenhoNota) { $empenho = $obra->empenhos()->findOrFail($empenhoNota['id']); $valorEmpenhadoNota = (float) $empenhoNota['valor_empenhado']; if ($empenho->valor_disponivel < $valorEmpenhadoNota) { return response()->json([ 'message' => 'Atualmente o empenho de id '.$empenhoNota['id'].' possui apenas R$'.number_format($empenho->valor_disponivel, 2, ',', '').' disponível para uso em Notas Fiscais.', 'errors' => [ 'valor_empenhado' => 'O valor informado ultrapassa o valor disponivel no empenho de id.'.$empenhoNota['id'], ], ], Response::HTTP_UNPROCESSABLE_ENTITY); } $valorEmpenhado += $valorEmpenhadoNota; } if (round($valorNota, 2) !== round($valorEmpenhado, 2)) { return response()->json([ 'message' => 'O valor informado difere do empenhado.', 'errors' => [ 'valor' => 'O valor informado não corresponde à soma do valor nas notas de empenho.', ], ], Response::HTTP_UNPROCESSABLE_ENTITY); } $notaFiscal = NotaFiscal::create( [ 'obra_id' => $request->obra_id, 'numero' => $request->numero, 'data' => $request->data, 'valor' => $request->valor, 'descricao' => $request->descricao, ] ); foreach ($request->empenhos as $empenhoNota) { $notaFiscal->empenhos()->attach($empenhoNota['id'], ['valor_empenhado' => $empenhoNota['valor_empenhado']]); } return response()->json($notaFiscal->load(['empenhos']), Response::HTTP_CREATED); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings