Initial commit: Sistema de comisiones y gastos personales
This commit is contained in:
53
resources/views/months/create.blade.php
Executable file
53
resources/views/months/create.blade.php
Executable file
@@ -0,0 +1,53 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Crear Mes')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2 class="mb-4">Crear Nuevo Mes</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('months.store') }}">
|
||||
@csrf
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="name" class="form-label">Nombre del Mes</label>
|
||||
<select class="form-select" id="name" name="name" required>
|
||||
<option value="">Selecciona un mes</option>
|
||||
<option value="Enero">Enero</option>
|
||||
<option value="Febrero">Febrero</option>
|
||||
<option value="Marzo">Marzo</option>
|
||||
<option value="Abril">Abril</option>
|
||||
<option value="Mayo">Mayo</option>
|
||||
<option value="Junio">Junio</option>
|
||||
<option value="Julio">Julio</option>
|
||||
<option value="Agosto">Agosto</option>
|
||||
<option value="Septiembre">Septiembre</option>
|
||||
<option value="Octubre">Octubre</option>
|
||||
<option value="Noviembre">Noviembre</option>
|
||||
<option value="Diciembre">Diciembre</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="year" class="form-label">Año</label>
|
||||
<input type="number" class="form-control" id="year" name="year"
|
||||
value="{{ old('year', now()->year) }}" min="2020" max="2100" required>
|
||||
</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>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
53
resources/views/months/edit.blade.php
Executable file
53
resources/views/months/edit.blade.php
Executable file
@@ -0,0 +1,53 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Editar Mes')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2 class="mb-4">Editar Mes</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('months.update', $month->id) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="name" class="form-label">Nombre del Mes</label>
|
||||
<select class="form-select" id="name" name="name" required>
|
||||
@foreach(['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'] as $m)
|
||||
<option value="{{ $m }}" {{ $month->name == $m ? 'selected' : '' }}>{{ $m }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="year" class="form-label">Año</label>
|
||||
<input type="number" class="form-control" id="year" name="year"
|
||||
value="{{ old('year', $month->year) }}" min="2020" max="2100" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="status" class="form-label">Estado</label>
|
||||
<select class="form-select" id="status" name="status" required>
|
||||
<option value="open" {{ $month->status == 'open' ? 'selected' : '' }}>Abierto</option>
|
||||
<option value="closed" {{ $month->status == 'closed' ? 'selected' : '' }}>Cerrado</option>
|
||||
<option value="paid" {{ $month->status == 'paid' ? 'selected' : '' }}>Pagado</option>
|
||||
</select>
|
||||
</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>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
58
resources/views/months/index.blade.php
Executable file
58
resources/views/months/index.blade.php
Executable file
@@ -0,0 +1,58 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Meses')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2 class="mb-4">Meses de Trabajo</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<a href="{{ route('months.create') }}" class="btn btn-primary">
|
||||
<i class="bi bi-plus-circle"></i> Crear Nuevo Mes
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Lista de meses -->
|
||||
<div class="row">
|
||||
@forelse($months as $month)
|
||||
<div class="col-md-4 col-lg-3 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">{{ $month->name }} {{ $month->year }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="mb-1">
|
||||
<strong>Estado:</strong>
|
||||
@if($month->status === 'open')
|
||||
<span class="badge bg-success">Abierto</span>
|
||||
@elseif($month->status === 'closed')
|
||||
<span class="badge bg-warning">Cerrado</span>
|
||||
@else
|
||||
<span class="badge bg-info">Pagado</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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="col-12">
|
||||
<div class="alert alert-info">
|
||||
No hay meses registrados.
|
||||
<a href="{{ route('months.create') }}">Crea tu primer mes</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
{{ $months->links() }}
|
||||
@endsection
|
||||
142
resources/views/months/show.blade.php
Executable file
142
resources/views/months/show.blade.php
Executable file
@@ -0,0 +1,142 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Detalles del Mes')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2 class="mb-4">
|
||||
{{ $month->name }} {{ $month->year }}
|
||||
@if($month->status === 'open')
|
||||
<span class="badge bg-success">Abierto</span>
|
||||
@elseif($month->status === 'closed')
|
||||
<span class="badge bg-warning">Cerrado</span>
|
||||
@else
|
||||
<span class="badge bg-info">Pagado</span>
|
||||
@endif
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Resumen -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-3">
|
||||
<div class="card stat-card primary">
|
||||
<div class="card-body">
|
||||
<h6>Ventas Usuario</h6>
|
||||
<h4>${{ number_format($month->dailySales()->sum('user_sales'), 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card stat-card success">
|
||||
<div class="card-body">
|
||||
<h6>Ventas Sistema</h6>
|
||||
<h4>${{ number_format($month->dailySales()->sum('system_sales'), 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card stat-card warning">
|
||||
<div class="card-body">
|
||||
<h6>Total Gastos</h6>
|
||||
<h4>${{ number_format($month->expenses()->sum('amount'), 2) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card stat-card danger">
|
||||
<div class="card-body">
|
||||
<h6>Días Registrados</h6>
|
||||
<h4>{{ $month->dailySales()->count() }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Acciones -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-12">
|
||||
<a href="{{ route('sales.create', ['month_id' => $month->id]) }}" class="btn btn-success">
|
||||
<i class="bi bi-plus-circle"></i> Agregar Venta
|
||||
</a>
|
||||
<a href="{{ route('expenses.create', ['month_id' => $month->id]) }}" class="btn btn-warning">
|
||||
<i class="bi bi-plus-circle"></i> Agregar Gasto
|
||||
</a>
|
||||
<a href="{{ route('reports.monthly', ['month_id' => $month->id]) }}" class="btn btn-info">
|
||||
<i class="bi bi-graph-up"></i> Ver Reporte
|
||||
</a>
|
||||
|
||||
@if($month->status === 'open')
|
||||
<form method="POST" action="{{ route('months.close', $month->id) }}" class="d-inline">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-outline-danger" onclick="return confirm('¿Cerrar este mes?')">
|
||||
<i class="bi bi-lock"></i> Cerrar Mes
|
||||
</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Últimas ventas -->
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Últimas Ventas</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Fecha</th>
|
||||
<th>Venta Usuario</th>
|
||||
<th>Venta Sistema</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($month->dailySales()->latest()->limit(10)->get() as $sale)
|
||||
<tr>
|
||||
<td>{{ $sale->date->format('d/m/Y') }}</td>
|
||||
<td>${{ number_format($sale->user_sales, 2) }}</td>
|
||||
<td>${{ number_format($sale->system_sales, 2) }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="3" class="text-center">No hay ventas</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Últimos gastos -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Últimos Gastos</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Fecha</th>
|
||||
<th>Descripción</th>
|
||||
<th>Monto</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($month->expenses()->latest()->limit(10)->get() as $expense)
|
||||
<tr>
|
||||
<td>{{ $expense->date->format('d/m/Y') }}</td>
|
||||
<td>{{ $expense->description }}</td>
|
||||
<td class="text-danger">${{ number_format($expense->amount, 2) }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="3" class="text-center">No hay gastos</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<a href="{{ route('months.index') }}" class="btn btn-secondary">Volver a Meses</a>
|
||||
</div>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user