parseDataTableQuery($request); $periodId = $request->integer('period_id') ?: null; $period = $this->payrollService->resolvePeriod($periodId); return Inertia::render('admin/finance/payroll/Index', [ 'periods' => $this->payrollService->listPeriods(), 'currentPeriod' => $period, 'payrolls' => $period ? $this->payrollService->paginateForPeriod($period, $tableQuery, auth()->user()) : null, 'summary' => $period ? $this->payrollService->periodSummary($period, auth()->user()) : null, 'adjustmentTypes' => PayrollAdjustmentType::selectOptions(), 'filters' => $this->dataTableFilters($tableQuery, [ 'period_id' => $period?->id, ]), ]); } public function storeAdjustment(PayrollAdjustmentRequest $request, Payroll $payroll): RedirectResponse { $this->payrollService->addAdjustment( $payroll, $request->validated(), auth()->user(), ); $this->flashSuccess('Penyesuaian gaji berhasil ditambahkan.'); return redirect()->route('admin.finance.payroll.index', [ 'period_id' => $payroll->payroll_period_id, ]); } public function updateAdjustment(PayrollAdjustmentRequest $request, PayrollAdjustment $payrollAdjustment): RedirectResponse { $this->payrollService->updateAdjustment( $payrollAdjustment, $request->validated(), auth()->user(), ); $this->flashSuccess('Penyesuaian gaji berhasil diperbarui.'); return redirect()->route('admin.finance.payroll.index', [ 'period_id' => $payrollAdjustment->payroll->payroll_period_id, ]); } public function destroyAdjustment(PayrollAdjustment $payrollAdjustment): RedirectResponse { $payroll = $payrollAdjustment->payroll; $this->payrollService->deleteAdjustment($payrollAdjustment); $this->flashSuccess('Penyesuaian gaji berhasil dihapus.'); return redirect()->route('admin.finance.payroll.index', [ 'period_id' => $payroll->payroll_period_id, ]); } }