Feat: Implementado cálculo de ISR en nóminas
- Agregado campo isr_table_id en tabla months para seleccionar tabla ISR por mes - Creado servicio IsrCalculator para calcular ISR mensual y quincenal - Modificado CommissionCalculator para descontar ISR del total a pagar - Agregado selector de tabla ISR en formulario de crear/editar mes - Actualizada vista de meses para mostrar tabla ISR asignada - Actualizados reportes mensual y quincenal para mostrar ISR descontado
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\IsrTable;
|
||||
use App\Models\Month;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
@@ -16,6 +17,7 @@ class MonthController extends Controller
|
||||
$user = Auth::user();
|
||||
|
||||
$months = $user->months()
|
||||
->with('isrTable')
|
||||
->orderBy('year', 'desc')
|
||||
->orderByRaw("FIELD(name, 'Diciembre', 'Noviembre', 'Octubre', 'Septiembre', 'Agosto', 'Julio', 'Junio', 'Mayo', 'Abril', 'Marzo', 'Febrero', 'Enero')")
|
||||
->paginate(12);
|
||||
@@ -28,7 +30,8 @@ class MonthController extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('months.create');
|
||||
$isrTables = IsrTable::with('brackets')->orderBy('year', 'desc')->get();
|
||||
return view('months.create', compact('isrTables'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,6 +44,7 @@ class MonthController extends Controller
|
||||
$validated = $request->validate([
|
||||
'name' => ['required', 'string', 'max:50'],
|
||||
'year' => ['required', 'integer', 'min:2020', 'max:2100'],
|
||||
'isr_table_id' => ['nullable', 'exists:isr_tables,id'],
|
||||
]);
|
||||
|
||||
// Verificar que no exista ya el mes para el usuario
|
||||
@@ -59,6 +63,7 @@ class MonthController extends Controller
|
||||
'name' => $validated['name'],
|
||||
'year' => $validated['year'],
|
||||
'status' => 'open',
|
||||
'isr_table_id' => $validated['isr_table_id'] ?? null,
|
||||
]);
|
||||
|
||||
return redirect()->route('months.index')
|
||||
@@ -92,7 +97,8 @@ class MonthController extends Controller
|
||||
abort(403);
|
||||
}
|
||||
|
||||
return view('months.edit', compact('month'));
|
||||
$isrTables = IsrTable::with('brackets')->orderBy('year', 'desc')->get();
|
||||
return view('months.edit', compact('month', 'isrTables'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,6 +116,7 @@ class MonthController extends Controller
|
||||
'name' => ['required', 'string', 'max:50'],
|
||||
'year' => ['required', 'integer', 'min:2020', 'max:2100'],
|
||||
'status' => ['required', 'in:open,closed,paid'],
|
||||
'isr_table_id' => ['nullable', 'exists:isr_tables,id'],
|
||||
]);
|
||||
|
||||
$month->update($validated);
|
||||
|
||||
Reference in New Issue
Block a user