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:
@@ -41,6 +41,19 @@
|
||||
value="{{ old('year', now()->year) }}" min="2020" max="2100" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="isr_table_id" class="form-label">Tabla ISR</label>
|
||||
<select class="form-select" id="isr_table_id" name="isr_table_id">
|
||||
<option value="">-- Sin ISR --</option>
|
||||
@foreach($isrTables as $table)
|
||||
<option value="{{ $table->id }}">
|
||||
{{ $table->year }} ({{ $table->brackets->count() }} rangos)
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<small class="text-muted">Selecciona la tabla ISR a aplicar en este mes</small>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-success">Crear Mes</button>
|
||||
<a href="{{ route('months.index') }}" class="btn btn-secondary">Cancelar</a>
|
||||
|
||||
@@ -41,6 +41,19 @@
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="isr_table_id" class="form-label">Tabla ISR</label>
|
||||
<select class="form-select" id="isr_table_id" name="isr_table_id">
|
||||
<option value="">-- Sin ISR --</option>
|
||||
@foreach($isrTables as $table)
|
||||
<option value="{{ $table->id }}" {{ $month->isr_table_id == $table->id ? 'selected' : '' }}>
|
||||
{{ $table->year }} ({{ $table->brackets->count() }} rangos)
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<small class="text-muted">Selecciona la tabla ISR a aplicar en este mes</small>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-primary">Actualizar</button>
|
||||
<a href="{{ route('months.show', $month->id) }}" class="btn btn-secondary">Cancelar</a>
|
||||
|
||||
@@ -36,11 +36,20 @@
|
||||
<span class="badge bg-info">Pagado</span>
|
||||
@endif
|
||||
</p>
|
||||
<p class="mb-1">
|
||||
<small class="text-muted">ISR: </small>
|
||||
@if($month->isrTable)
|
||||
<span class="badge bg-primary">{{ $month->isrTable->year }}</span>
|
||||
@else
|
||||
<span class="badge bg-secondary">Sin ISR</span>
|
||||
@endif
|
||||
</p>
|
||||
<p class="mb-1"><small class="text-muted">Ventas: ${{ number_format($month->dailySales()->sum('user_sales'), 2) }}</small></p>
|
||||
<p class="mb-0"><small class="text-muted">Gastos: ${{ number_format($month->expenses()->sum('amount'), 2) }}</small></p>
|
||||
</div>
|
||||
<div class="card-footer bg-transparent">
|
||||
<a href="{{ route('months.show', $month->id) }}" class="btn btn-sm btn-primary">Ver Detalles</a>
|
||||
<a href="{{ route('months.edit', $month->id) }}" class="btn btn-sm btn-secondary">Editar</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -48,31 +48,53 @@
|
||||
<div class="card-body">
|
||||
<div class="row text-center">
|
||||
@if($report['type'] === 'anticipo')
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Mitad Sueldo</h6>
|
||||
<h3>${{ number_format($report['biweekly_salary'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Comisiones del Mes</h6>
|
||||
<h3 class="text-success">+${{ number_format($report['commission_amount'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
@if(isset($report['isr_amount']) && $report['isr_amount'] > 0)
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">ISR Quincenal</h6>
|
||||
<h3 class="text-danger">-${{ number_format($report['isr_amount'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Total ANTICIPO</h6>
|
||||
<h2 class="text-success">${{ number_format($report['total_earning'], 2) }}</h2>
|
||||
</div>
|
||||
@else
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Total ANTICIPO</h6>
|
||||
<h2 class="text-success">${{ number_format($report['total_earning'], 2) }}</h2>
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Mitad Sueldo</h6>
|
||||
<h3>${{ number_format($report['biweekly_salary'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Gastos Q{{ $biweekly }}</h6>
|
||||
<h3 class="text-danger">-${{ number_format($report['expenses_q2'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
@if(isset($report['isr_amount']) && $report['isr_amount'] > 0)
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">ISR Quincenal</h6>
|
||||
<h3 class="text-danger">-${{ number_format($report['isr_amount'], 2) }}</h3>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Total LIQUIDACIÓN</h6>
|
||||
<h2 class="{{ $report['total_earning'] >= 0 ? 'text-success' : 'text-danger' }}">${{ number_format($report['total_earning'], 2) }}</h2>
|
||||
</div>
|
||||
@else
|
||||
<div class="col-md-3">
|
||||
<h6 class="text-muted">Total LIQUIDACIÓN</h6>
|
||||
<h2 class="{{ $report['total_earning'] >= 0 ? 'text-success' : 'text-danger' }}">${{ number_format($report['total_earning'], 2) }}</h2>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -78,6 +78,12 @@
|
||||
<td>Gastos del Mes</td>
|
||||
<td class="text-end text-danger">-${{ number_format($report['total_expenses'], 2) }}</td>
|
||||
</tr>
|
||||
@if(isset($report['isr_amount']) && $report['isr_amount'] > 0)
|
||||
<tr>
|
||||
<td>ISR ({{ $report['isr_details']['effective_rate'] ?? 0 }}%)</td>
|
||||
<td class="text-end text-danger">-${{ number_format($report['isr_amount'], 2) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
<tr class="table-light">
|
||||
<td><strong>Total a Recibir</strong></td>
|
||||
<td class="text-end"><strong>${{ number_format($report['total_earning'], 2) }}</strong></td>
|
||||
|
||||
Reference in New Issue
Block a user