{{-- ══════════════════════════════════════════════════════ --}} {{-- HEADER --}} {{-- ══════════════════════════════════════════════════════ --}} {{-- STATUS --}} @if($resumen['todos_los_dias_completos']) @elseif($resumen['dias_con_datos'] === 0) @else @endif {{-- ══════════════════════════════════════════════════════ --}} {{-- 1+2. RESUMEN DE LA SEMANA + CONSUMO POR SECTOR (50/50) --}} {{-- ══════════════════════════════════════════════════════ --}} {{-- ══════════════════════════════════════════════════════ --}} {{-- 3. DETALLE DE CONSUMO POR DIA --}} {{-- ══════════════════════════════════════════════════════ --}} @if(count($resumen['dias']) > 0) @endif {{-- ══════════════════════════════════════════════════════ --}} {{-- DIAS INCOMPLETOS --}} {{-- ══════════════════════════════════════════════════════ --}} @if(count($resumen['dias_incompletos']) > 0) @endif {{-- ══════════════════════════════════════════════════════ --}} {{-- ALERTAS DE LA SEMANA --}} {{-- ══════════════════════════════════════════════════════ --}} @if(count($resumen['alertas_semana']) > 0) @endif {{-- FOOTER --}}

Sistema de Gestion Ganadera

Rancho La Fortuna

Resumen Semanal de Alimentacion

{{ $resumen['semana_formateada'] }}  ·  Semana {{ $resumen['numero_semana'] }}

✓   {{ $resumen['dias_completos'] }}/{{ $resumen['total_dias'] }} dias con todos los corrales alimentados
Sin registros de alimentacion en esta semana
⚠   {{ $resumen['dias_completos'] }}/{{ $resumen['total_dias'] }} dias completos @if(count($resumen['dias_incompletos']) > 0)  ·  {{ count($resumen['dias_incompletos']) }} dias con corrales faltantes @endif

Resumen de la Semana

{{-- KPIs: Ofrecido + Consumido por unidad --}} @if(count($resumen['total_semana_por_unidad']) > 0) @foreach($resumen['total_semana_por_unidad'] as $ts) {{-- Ofrecido --}} {{-- Consumido: solo mostrar el recuadro si hay valor > 0 --}} @if(($ts['total_consumido'] ?? 0) > 0) @endif @endforeach
{{ number_format($ts['total_ofrecido'], 1) }}
{{ $ts['unidad'] }} ofrecidos
{{ number_format($ts['total_consumido'], 1) }}
{{ $ts['unidad'] }} consumidos *
@endif {{-- Fila 50/50: Alimento ofrecido | Consumo por sector --}} {{-- Izquierda: tabla de alimentos --}} {{-- Derecha: consumo por sector --}} @if(count($resumen['consumo_por_seccion']) > 0) @endif
@if(!empty($resumen['totales_por_producto']))

Alimento ofrecido en la semana

@foreach($resumen['totales_por_producto'] as $i => $prod) @php $bgProd = ($i % 2 === 0) ? '#ffffff' : '#f1f8e9'; @endphp @endforeach
Alimento Cantidad
{{ $prod['nombre'] }} {{ number_format($prod['ofrecido'], 1) }} {{ $prod['unidad'] }}
@endif

Consumo semanal por sector

@foreach($resumen['total_semana_por_unidad'] as $ts) @endforeach @foreach($resumen['consumo_por_seccion'] as $i => $sec) @php $bgSec = ($i % 2 === 0) ? '#ffffff' : '#f5f5f5'; $accentColor = match($sec['key']) { 'R1' => '#1565c0', 'R2' => '#6a1b9a', 'E' => '#bf360c', default => '#37474f', }; @endphp @foreach($resumen['total_semana_por_unidad'] as $ts) @php $consumoSecU = collect($sec['por_unidad'])->firstWhere('unidad', $ts['unidad']); $valorSec = $consumoSecU['total_consumido'] ?? null; @endphp @endforeach @endforeach {{-- Total --}} @foreach($resumen['total_semana_por_unidad'] as $ts) @endforeach
Sector {{ $ts['unidad'] }}
{{ $sec['nombre'] }} @if($valorSec !== null && $valorSec > 0) {{ number_format($valorSec, 1) }} {{ $ts['unidad'] }} @else @endif
TOTAL @if($ts['total_consumido'] > 0) {{ number_format($ts['total_consumido'], 1) }} {{ $ts['unidad'] }} @else @endif

Como se calculan estos valores:

Ofrecido: total de alimento entregado a los corrales durante la semana (suma directa de cada bitácora).

El sobrante (rechazo) se pesa al inicio del dia siguiente. Por eso:

Consumido * = Ofrecido dia N − Sobrante pesado dia N+1

El consumido de cada dia en realidad refleja lo que los animales comieron el dia anterior. Los dias sin bitacora previa muestran (—) ya que no hay referencia anterior para calcularlo.

Dia a dia

Detalle de Consumo por Dia

{{-- Encabezado --}} @foreach($resumen['total_semana_por_unidad'] as $ts) @if($ts['unidad'] !== 'L') @endif @endforeach {{-- Columnas de secciones (kg) --}} @foreach($resumen['consumo_por_seccion'] as $sec) @php $accentSec = match($sec['key']) { 'R1' => '#1565c0', 'R2' => '#6a1b9a', 'E' => '#bf360c', default => '#37474f', }; @endphp @endforeach {{-- Filas por día --}} @foreach($resumen['dias'] as $i => $dia) @php $bg = !$dia['tiene_datos'] ? '#fafafa' : ($dia['todos_alimentados'] ? ($i % 2 === 0 ? '#ffffff' : '#f5f5f5') : '#fff8e1'); @endphp {{-- Día --}} {{-- Animales --}} {{-- Corrales --}} @if(!$dia['tiene_datos']) {{-- Sin datos: colspan total --}} @php $totalCols = count($resumen['consumo_por_seccion']); foreach ($resumen['total_semana_por_unidad'] as $ts) { $totalCols += ($ts['unidad'] === 'L') ? 1 : 3; } @endphp @else {{-- Ofrecido + Consumido + Rechazo por unidad --}} @foreach($resumen['total_semana_por_unidad'] as $ts) @php $consumoU = collect($dia['consumo_por_unidad'])->firstWhere('unidad', $ts['unidad']); $ofrecidoU = $consumoU['ofrecido'] ?? null; $valorU = $consumoU['consumido'] ?? null; $rechazoU = $consumoU['rechazo'] ?? null; @endphp {{-- Ofrecido --}} @if($ts['unidad'] !== 'L') {{-- Consumido --}} {{-- Rechazo --}} @php $residualU = $consumoU['residual'] ?? null; @endphp @endif @endforeach {{-- Consumido por sección (kg principal) --}} @foreach($resumen['consumo_por_seccion'] as $sec) @php $secDia = collect($dia['consumo_por_seccion'])->firstWhere('key', $sec['key']); $primerU = $resumen['total_semana_por_unidad'][0]['unidad'] ?? 'kg'; $consumoSD = $secDia ? collect($secDia['por_unidad'])->firstWhere('unidad', $primerU) : null; $valorSD = $consumoSD['consumido'] ?? null; $residualSD = $consumoSD['residual'] ?? null; $rechazoSD = $secDia['rechazo'] ?? null; $accentSec = match($sec['key']) { 'R1' => '#1565c0', 'R2' => '#6a1b9a', 'E' => '#bf360c', default => '#37474f', }; @endphp @endforeach @endif @endforeach {{-- Fila de totales semanales --}} @foreach($resumen['total_semana_por_unidad'] as $ts) {{-- Total ofrecido --}} @if($ts['unidad'] !== 'L') {{-- Total consumido --}} {{-- Rechazo: vacío en totales --}} @endif @endforeach @foreach($resumen['consumo_por_seccion'] as $sec) @php $primerU = $resumen['total_semana_por_unidad'][0]['unidad'] ?? 'kg'; $totalSec = collect($sec['por_unidad'])->firstWhere('unidad', $primerU); $valSec = $totalSec['total_consumido'] ?? null; $accentSec = match($sec['key']) { 'R1' => '#1565c0', 'R2' => '#6a1b9a', 'E' => '#bf360c', default => '#37474f', }; @endphp @endforeach
Dia Anim. Corrales Ofrecido ({{ $ts['unidad'] }}) Consumido * ({{ $ts['unidad'] }}) Rechazo {{ $sec['key'] }}
{{ $dia['fecha_corta'] }}
{{ $dia['dia_semana'] }} @if(!$dia['tiene_datos'])
Sin datos @elseif(!$dia['todos_alimentados'])
⚠ {{ $dia['total_corrales_faltantes'] }} faltantes @endif
@if($dia['tiene_datos']) {{ $dia['total_animales'] }}/{{ $dia['total_animales_rancho'] }} @else @endif @if($dia['tiene_datos']) {{ $dia['total_corrales_alimentados'] }}/{{ $dia['total_corrales_con_animales'] }} @else @endif Sin registro de alimentacion @if($ofrecidoU !== null && $ofrecidoU > 0) {{ number_format($ofrecidoU, 1) }} {{ $ts['unidad'] }} @else @endif @if($valorU !== null) {{ number_format($valorU, 1) }} {{ $ts['unidad'] }} @else @endif @if($rechazoU === null) @else @php $colorRec = ($rechazoU == 0 || $rechazoU > $resumen['rechazo_maximo']) ? '#c62828' : ($rechazoU > $resumen['rechazo_minimo'] ? '#2e7d32' : '#a07800'); @endphp @if($residualU !== null){{ number_format($residualU, 1) }}{{ $ts['unidad'] }} / @endif{{ $rechazoU }}% @endif @if($valorSD !== null) {{ number_format($valorSD, 1) }} {{ $primerU }} @if($rechazoSD !== null) @php $colorSD = $rechazoSD > $resumen['rechazo_maximo'] ? '#c62828' : ($rechazoSD > $resumen['rechazo_minimo'] ? '#2e7d32' : '#a07800'); @endphp
@if($residualSD !== null){{ number_format($residualSD, 1) }}{{ $primerU }} / @endif{{ $rechazoSD }}% rec. @endif @else @endif
TOTAL SEMANA @if($ts['total_ofrecido'] > 0) {{ number_format($ts['total_ofrecido'], 1) }} {{ $ts['unidad'] }} @else @endif @if($ts['total_consumido'] > 0) {{ number_format($ts['total_consumido'], 1) }} {{ $ts['unidad'] }} @else @endif @if($valSec !== null && $valSec > 0) {{ number_format($valSec, 1) }} {{ $primerU }} @else @endif

Requieren atencion

Dias con Corrales Faltantes

@foreach($resumen['dias_incompletos'] as $incompleto)
{{ $incompleto['fecha_corta'] }}  —  {{ $incompleto['alimentados'] }} corrales alimentados, {{ $incompleto['faltantes'] }} sin registro
@endforeach

Notificaciones

Alertas de Rechazo Alto

@foreach($resumen['alertas_semana'] as $alerta)
⚠ [{{ $alerta['fecha_corta'] }}] {{ $alerta['mensaje'] }}
@endforeach
Rancho La Fortuna  ·  Sistema de Gestion Ganadera  ·  Generado el {{ now()->format('d/m/Y H:i') }}