@extends('layouts.app', ['title' => 'Apartados']) @section('header_actions') @endsection @section('content')
{{ $stats['active'] }}
Activos
{{ $stats['fulfilled'] }}
Cumplidos
{{ $stats['expired'] }}
Vencidos
${{ number_format($stats['paid'],0) }}
Ingresado por apartados
@if(($filters['search'] ?? null) || ($filters['status'] ?? null) || ($filters['project_id'] ?? null)) @endif
@forelse($reservations as $reservation) @php $badge = match($reservation->status) { 'Activo' => 'amber', 'Cumplido' => 'green', 'Vencido', 'Cancelado', 'Reembolsado' => 'red', 'Convertido' => 'blue', default => 'gray', }; $paid = $reservation->paid_total; $pending = $reservation->pending_deposit; $maxPayable = max(0, (float) $reservation->total_price - (float) $paid); $suggestedPayment = min(max((float) $pending, 0.01), $maxPayable); @endphp
{{ $reservation->status }}
Vence {{ optional($reservation->expires_at)->format('d/m/Y') ?? '—' }} @if(in_array($reservation->status, ['Activo','Cumplido'], true))
@csrf @method('patch')
@endif
{{ $reservation->client?->name ?? 'Cliente' }}
{{ $reservation->unit_label }}
{{ $reservation->project?->name ?? 'Proyecto' }} @if($reservation->advisor){{ $reservation->advisor->name }}@endif
Precio lote${{ number_format((float)$reservation->total_price,0) }}
Enganche requerido${{ number_format((float)$reservation->deposit_required,0) }}
Pagado${{ number_format($paid,0) }}
Pendiente enganche${{ number_format($pending,0) }}
Avance del enganche{{ $reservation->progress }}%
@if($reservation->notes)
{{ $reservation->notes }}
@endif
{{ $reservation->payments->count() }} pago(s) registrados
@if($reservation->status === 'Activo') @else @endif @if($reservation->can_convert) @elseif($reservation->status === 'Cumplido') Listo para convertir @endif
@empty
Sin apartados registrados
Crea un apartado para reservar un lote antes de convertirlo a vinculación formal.
@endforelse
{{ $reservations->links() }}
@endsection