Corrige autorizacao transaccional e valida modulos implementados
This commit is contained in:
@@ -9,6 +9,7 @@ use App\Models\BudgetEntry;
|
||||
use App\Models\BudgetReinforcement;
|
||||
use App\Models\CostCenter;
|
||||
use App\Services\ConflictGuard;
|
||||
use App\Services\CurrentActor;
|
||||
use App\Services\RequisitionWorkflow;
|
||||
use Brick\Math\BigDecimal;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
@@ -37,7 +38,7 @@ class BudgetController extends Controller
|
||||
|
||||
$total = $budget->approvedTotalMinor();
|
||||
|
||||
return [...$budget->toArray(), 'reinforced_minor' => $total - $budget->amount_minor, 'approved_total_minor' => $total, 'reserved_minor' => $reserved, 'committed_minor' => $committed, 'consumed_minor' => $consumed, 'available_minor' => $total - $reserved - $committed - $consumed];
|
||||
return [...$budget->toArray(), 'reinforced_minor' => $total - $budget->amount_minor, 'approved_total_minor' => $budget->approved_by ? $total : 0, 'reserved_minor' => $reserved, 'committed_minor' => $committed, 'consumed_minor' => $consumed, 'available_minor' => $budget->approved_by ? $total - $reserved - $committed - $consumed : 0];
|
||||
}), 'reinforcements' => BudgetReinforcement::query()->latest('id')->paginate(20)]);
|
||||
}
|
||||
|
||||
@@ -48,6 +49,7 @@ class BudgetController extends Controller
|
||||
$kind = $request->validate(['kind' => ['sometimes', Rule::in(['operating', 'investment'])]])['kind'] ?? 'operating';
|
||||
DB::transaction(function () use ($request, $data, $kind) {
|
||||
app(ConflictGuard::class)->lockCompany($request->user());
|
||||
app(CurrentActor::class)->lock($request->user(), [PurchasingRole::Admin, PurchasingRole::Finance]);
|
||||
abort_if(Budget::query()->where('cost_center_id', $data['cost_center_id'])->where('year', $data['year'])->exists(), 409, 'Já existe dotação para este centro e exercício.');
|
||||
$budget = Budget::query()->create(['tenant_id' => $request->user()->tenant_id, 'created_by' => $request->user()->id, 'cost_center_id' => $data['cost_center_id'], 'year' => $data['year'], 'kind' => $kind, 'includes_tax' => $data['includes_tax'], 'amount_minor' => BigDecimal::of($data['amount'])->multipliedBy(100)->toInt(), 'reason' => $data['reason']]);
|
||||
app(RequisitionWorkflow::class)->audit($request->user(), 'budget.created', null, null, $budget->toArray());
|
||||
@@ -61,6 +63,7 @@ class BudgetController extends Controller
|
||||
$this->access($request);
|
||||
DB::transaction(function () use ($request, $budget) {
|
||||
app(ConflictGuard::class)->lockCompany($request->user());
|
||||
app(CurrentActor::class)->lock($request->user(), [PurchasingRole::Admin, PurchasingRole::Finance]);
|
||||
$budget = Budget::query()->lockForUpdate()->findOrFail($budget->id);
|
||||
abort_if($budget->created_by === $request->user()->id, 403);
|
||||
if ($budget->approved_by) {
|
||||
|
||||
Reference in New Issue
Block a user