Files
nomina_ventas/resources/views/reports/monthly.blade.php
nickpons666 e8aac6eaa5 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
2026-04-21 13:45:39 -06:00

205 lines
8.8 KiB
PHP
Executable File

@extends('layouts.app')
@section('title', 'Reporte Mensual')
@section('content')
<div class="row">
<div class="col-12">
<h2 class="mb-4">Reporte Mensual</h2>
</div>
</div>
<!-- Selector -->
<div class="row mb-4">
<div class="col-md-6">
<form method="GET" class="d-flex gap-2">
<select name="month_id" class="form-select" onchange="this.form.submit()">
@foreach($months as $m)
<option value="{{ $m->id }}" {{ $month->id == $m->id ? 'selected' : '' }}>
{{ $m->name }} {{ $m->year }}
</option>
@endforeach
</select>
<a href="{{ route('reports.biweekly', ['month_id' => $month->id, 'biweekly' => 1]) }}" class="btn btn-outline-primary">Quincenal</a>
</form>
</div>
</div>
@if($report)
<!-- Resumen General -->
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-header bg-primary text-white">
<h5 class="mb-0">{{ $report['month_name'] }}</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3">
<h6 class="text-muted">Ventas del Usuario</h6>
<h4>${{ number_format($report['total_user_sales'], 2) }}</h4>
</div>
<div class="col-md-3">
<h6 class="text-muted">Ventas del Sistema</h6>
<h4>${{ number_format($report['total_system_sales'], 2) }}</h4>
</div>
<div class="col-md-3">
<h6 class="text-muted">Comisión ({{ $report['commission_percentage'] }}%)</h6>
<h4 class="text-success">${{ number_format($report['commission_amount'], 2) }}</h4>
</div>
<div class="col-md-3">
<h6 class="text-muted">Total a Recibir</h6>
<h4 class="text-primary">${{ number_format($report['total_earning'], 2) }}</h4>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Detalles -->
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">Desglose</h5>
</div>
<div class="card-body">
<table class="table">
<tr>
<td>Salario Mensual</td>
<td class="text-end">${{ number_format($report['monthly_salary'], 2) }}</td>
</tr>
<tr>
<td>Comisión ({{ $report['commission_percentage'] }}%)</td>
<td class="text-end text-success">+${{ number_format($report['commission_amount'], 2) }}</td>
</tr>
<tr>
<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>
</tr>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">Diferencia de Ventas</h5>
</div>
<div class="card-body">
@if($report['has_difference'])
<div class="alert alert-{{ $report['sales_difference'] > 0 ? 'warning' : 'danger' }}">
<strong>Diferencia:</strong> ${{ number_format($report['sales_difference'], 2) }}
<br>
<small>
{{ $report['sales_difference'] > 0 ? 'Ventas del usuario mayores que sistema' : 'Ventas del sistema mayores que usuario' }}
</small>
</div>
@else
<div class="alert alert-success">
<i class="bi bi-check-circle"></i> Ventas conciliadas (sin diferencia)
</div>
@endif
</div>
</div>
</div>
</div>
<!-- Ventas Diarias -->
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">Ventas Diarias</h5>
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Fecha</th>
<th class="text-end">Venta Usuario</th>
<th class="text-end">Venta Sistema</th>
<th class="text-end">Diferencia</th>
</tr>
</thead>
<tbody>
@forelse($dailySales as $sale)
<tr>
<td>{{ $sale->date->format('d/m/Y') }}</td>
<td class="text-end">${{ number_format($sale->user_sales, 2) }}</td>
<td class="text-end">${{ number_format($sale->system_sales, 2) }}</td>
<td class="text-end">
@php $diff = $sale->user_sales - $sale->system_sales; @endphp
@if($diff != 0)
<span class="text-{{ $diff > 0 ? 'warning' : 'danger' }}">
${{ number_format($diff, 2) }}
</span>
@else
<span class="text-success">-</span>
@endif
</td>
</tr>
@empty
<tr><td colspan="4" class="text-center">No hay ventas</td></tr>
@endforelse
</tbody>
<tfoot>
<tr class="table-light">
<th>Total</th>
<th class="text-end">${{ number_format($dailySales->sum('user_sales'), 2) }}</th>
<th class="text-end">${{ number_format($dailySales->sum('system_sales'), 2) }}</th>
<th class="text-end">${{ number_format($dailySales->sum('user_sales') - $dailySales->sum('system_sales'), 2) }}</th>
</tr>
</tfoot>
</table>
</div>
</div>
<!-- Gastos -->
<div class="card">
<div class="card-header">
<h5 class="mb-0">Gastos del Mes</h5>
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Fecha</th>
<th>Descripción</th>
<th class="text-end">Monto</th>
</tr>
</thead>
<tbody>
@forelse($expenses as $expense)
<tr>
<td>{{ $expense->date->format('d/m/Y') }}</td>
<td>{{ $expense->description }}</td>
<td class="text-end text-danger">${{ number_format($expense->amount, 2) }}</td>
</tr>
@empty
<tr><td colspan="3" class="text-center">No hay gastos</td></tr>
@endforelse
</tbody>
<tfoot>
<tr class="table-light">
<th colspan="2">Total Gastos</th>
<th class="text-end">${{ number_format($expenses->sum('amount'), 2) }}</th>
</tr>
</tfoot>
</table>
</div>
</div>
@else
<div class="alert alert-warning">No hay datos disponibles para este mes.</div>
@endif
@endsection