@php $cut = $cut ?? null; $movimientos = $movimientos ?? collect(); $mvType = function ($tx) { if (($tx->type ?? '') === 'expense') return 'Salida'; return str_contains(mb_strtolower((string) ($tx->category ?? '')), 'apartado') ? 'Apartado' : 'Aportación'; }; $mvMethod = function ($tx) { $m = mb_strtolower(trim((string) ($tx->method ?? ''))); if ($m === '') return 'Otro'; if (str_contains($m, 'efectiv')) return 'Efectivo'; if (str_contains($m, 'spei')) return 'SPEI'; if (str_contains($m, 'transfer') || str_contains($m, 'dep')) return 'Transferencia'; if (str_contains($m, 'tarjeta') || str_contains($m, 'tpv')) return 'Tarjeta'; return 'Otro'; }; $companyName = $companyName ?? ''; $companyAddress = $companyAddress ?? ''; $companyPhone = $companyPhone ?? ''; $autoPrint = $autoPrint ?? false; $byMethod = $cut && is_array($cut->totals_by_method) ? $cut->totals_by_method : []; $ti = $cut ? (float) $cut->total_ingresos : 0; $diff = $cut ? (float) $cut->diferencia : 0; $cuadra = abs($diff) < 0.005; $estado = $cuadra ? 'Todo cuadra' : ($diff < 0 ? 'Falta dinero' : 'Sobra dinero'); @endphp Cierre de corte | {{ $companyName }}
Volver al historial
{{ $companyName }} @if($companyAddress || $companyPhone)
{{ $companyAddress }}@if($companyAddress && $companyPhone) · @endif@if($companyPhone)Tel. {{ $companyPhone }}@endif
@endif
Cierre de Corte
Fecha del corte: {{ $cut ? optional($cut->cut_date)->format('d/m/Y') : '' }}
Proyecto: {{ $cut?->project?->name ?? 'Todos' }}
Usuario: {{ $cut?->user?->name ?? '—' }}
Cerrado: {{ $cut ? optional($cut->closed_at)->format('d/m/Y H:i') : '' }}
Total Apartados${{ number_format($cut?->total_apartados ?? 0,2) }}
Total Aportaciones${{ number_format(($cut?->total_aportaciones ?? 0) + ($cut?->total_abonos ?? 0),2) }}
Total Ingresos${{ number_format($cut?->total_ingresos ?? 0,2) }}
Salidas de Caja−${{ number_format($cut?->total_salidas ?? 0,2) }}
Saldo Esperado en Caja${{ number_format(($cut?->total_ingresos ?? 0) - ($cut?->total_salidas ?? 0),2) }}
Efectivo esperado
${{ number_format($cut?->efectivo_esperado ?? 0,2) }}
Efectivo capturado
${{ number_format($cut?->efectivo_capturado ?? 0,2) }}
Diferencia · {{ $estado }}
${{ number_format($diff,2) }}
Concentrado por método de pago
@forelse($byMethod as $bucket => $row) @empty @endforelse
Método de pagoMovimientosTotal%
{{ $bucket }}{{ $row['count'] ?? 0 }}${{ number_format($row['total'] ?? 0,2) }}{{ $ti > 0 ? number_format(($row['total'] ?? 0) / $ti * 100, 1) : '0.0' }}%
Sin ingresos.
Detalle de movimientos
@forelse($movimientos as $i => $tx) @php $isIn = $tx->type === 'income'; @endphp @empty @endforelse
#Fecha / HoraTipoClienteLoteMétodoImporte
{{ $i + 1 }} {{ optional($tx->date)->format('d/m/Y') }}
{{ optional($tx->created_at)->format('h:i A') }}
{{ $mvType($tx) }}@if($tx->description)
{{ \Illuminate\Support\Str::limit(\Illuminate\Support\Str::beforeLast($tx->description, ' - '), 38) }}
@endif
{{ $tx->client?->name ?? '—' }} {{ $tx->lote?->label ?? '—' }} {{ $mvMethod($tx) }} {{ $isIn ? '' : '−' }}${{ number_format($tx->amount,2) }}
Sin movimientos registrados en la fecha del corte.
Observaciones
{{ $cut?->observaciones }}
Elaboró
{{ $cut?->user?->name ?? '' }}
Revisó / Autorizó
Cierre generado el {{ $cut ? optional($cut->closed_at)->format('d/m/Y H:i') : '' }}. Documento de conciliación de caja.
@if($autoPrint) @endif