Feat: Agregada gestión de tablas ISR en settings

- Nueva tabla isr_tables y isr_brackets en BD
- Controlador IsrController para CRUD de tablas ISR
- Integración con pestaña ISR en settings
- Soporte para importación via CSV
- Captura manual de brackets
This commit is contained in:
2026-04-21 13:22:01 -06:00
parent 66df616eee
commit 4abf89c57f
11 changed files with 778 additions and 24 deletions

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('isr_tables', function (Blueprint $table) {
$table->id();
$table->year('year')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('isr_tables');
}
};

View File

@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('isr_brackets', function (Blueprint $table) {
$table->id();
$table->foreignId('isr_table_id')->constrained()->onDelete('cascade');
$table->decimal('lower_limit', 15, 2);
$table->decimal('upper_limit', 15, 2)->nullable()->comment('null significa "En adelante"');
$table->decimal('fixed_fee', 12, 2)->default(0);
$table->decimal('rate', 5, 2)->comment('porcentaje');
$table->unsignedInteger('order')->default(0);
$table->index('isr_table_id');
$table->index('order');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('isr_brackets');
}
};

View File

@@ -0,0 +1,22 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('isr_brackets', function (Blueprint $table) {
$table->timestamps();
});
}
public function down(): void
{
Schema::table('isr_brackets', function (Blueprint $table) {
$table->dropTimestamps();
});
}
};