@extends('layouts.admin') @section('title', 'Inicio') @section('content') @php $pendingBillingHome = \App\Models\ElectronicInvoice::pendingSri()->count(); @endphp @if($pendingBillingHome > 0 && auth()->user()->hasPermission('billing.view'))
Hay {{ $pendingBillingHome }} factura(s) pendientes de envío/autorización al SRI. No se puede cerrar sesión ni caja hasta resolverlas (emisión en tiempo real).
Resolver ahora
@endif

¡Bienvenido!

Panel de gestión de tu distribuidora

@if(auth()->user()->hasPermission('cash.view')) @if($openCash) Cerrar caja @else @endif @endif @if(auth()->user()->hasPermission('inventory.view') || auth()->user()->hasPermission('products.view')) @endif
{{-- Operación del día --}}

Caja diaria

Datos del día seleccionado
Ventas
${{ number_format($day_metrics['sales'], 2) }}
Egreso
${{ number_format($day_metrics['expenses'], 2) }}
Pedidos
{{ $day_metrics['orders'] }}
Entregas
{{ $day_metrics['deliveries_pending'] }}/{{ $day_metrics['deliveries_total'] }} pendientes
@for($i=0;$i<4;$i++)
@endfor
{{-- Financiero --}}

Financiero

Resumen de cartera e inventario
Por cobrar
${{ number_format($finance['receivables'], 2) }}
Cartera vencida
${{ number_format($finance['overdue'], 2) }}
Inventario valorizado
${{ number_format($finance['inventory_value'], 2) }}
Utilidad
${{ number_format($finance['profit'], 2) }}
@for($i=0;$i<4;$i++)
@endfor
{{-- Resúmenes --}}
Stock Ordenado de menor a mayor
@forelse($stock_products as $p) @php $avail = (float) $p['available']; $min = (float) $p['minimum_stock']; $rowClass = 'stock-row'; $rowStyle = ''; if ($avail <= 0) { $rowClass .= ' stock-row--zero'; } elseif ($min > 0 && $avail < $min) { // 0 cerca del mínimo → amarillo; 1 cerca de cero → rojo $t = max(0, min(1, 1 - ($avail / $min))); $rowClass .= ' stock-row--below'; $g = (int) round(165 - ($t * 97)); // 165 → 68 $b = (int) round(64 + ($t * 4)); // 64 → 68 $a = number_format(0.14 + ($t * 0.22), 3, '.', ''); $rowStyle = "--stock-t: {$t}; --stock-g: {$g}; --stock-b: {$b}; --stock-a: {$a};"; } elseif ($min > 0 && $avail <= $min * 1.25) { $rowClass .= ' stock-row--near'; } @endphp @empty @endforelse
Categoría Marca Producto Presentación Stock
{{ $p['category'] }} {{ $p['brand'] }}
{{ $p['name'] }}
Mín. {{ number_format($min, 2) }}
{{ $p['presentation'] }}
{{ number_format($avail, 2) }} {{ $p['unit_label'] ?? 'und' }}
@if(!empty($p['pack_equiv']))
{{ $p['pack_equiv'] }}
@endif
@if(count($p['batches'])) @foreach($p['batches'] as $b) @endforeach
LoteRecibidoFísicoReservadoDisponibleCosto
{{ $b['code'] }} {{ $b['received_date'] }} {{ number_format($b['physical'], 2) }} {{ number_format($b['reserved'], 2) }} {{ number_format($b['available'], 2) }} ${{ number_format($b['unit_cost'], 2) }}
@else
Sin lotes activos
@endif
Sin productos
Resumen de ventas
Pedidos pendientes
@forelse($pending_orders as $o) @empty @endforelse
{{ $o->number }} {{ $o->client->business_name }} {{ $o->status->value }} ${{ $o->total }}
Sin pedidos pendientes
Clientes con crédito
@forelse($credit_clients as $c) @empty @endforelse
Cliente Límite Debe
{{ $c['business_name'] }}
{{ $c['code'] }}
${{ number_format($c['credit_limit'], 2) }} ${{ number_format($c['balance'], 2) }}
Sin clientes con crédito
@endsection @push('modals') @include('dashboard.partials.modals') @if(auth()->user()->hasPermission('purchases.create') || auth()->user()->hasPermission('purchases.view')) @include('purchases.partials.modal-nueva-compra') @endif @endpush @push('scripts') @endpush