@if(count($recibo_num['recibo']['controles']) > 0) @php $comp = $recibo_num['recibo']['composicion_salarial']; $total_sindical = $comp['sindical']['empleador'] + $comp['sindical']['trabajador']; $total_seguridad_social = $comp['seguridad_social']['empleador'] + $comp['seguridad_social']['trabajador']; $total_obra_social = $comp['obra_social']['empleador'] + $comp['obra_social']['trabajador']; $total_inssjp = $comp['inssjp']['empleador'] + $comp['inssjp']['trabajador']; $total_art = $comp['art']['empleador']; $total_scvo = $comp['scvo']['empleador']; $total_neto = (float) $recibo_num['recibo']['total_neto']; $fmt = function ($v) { return '$ ' . number_format((float)$v, 2, ',', '.'); }; // Torta: Costo total empleador = Neto + cada categoría $slices = [ ['label' => 'Sueldo Neto', 'value' => $total_neto, 'color' => '#f6c042'], ['label' => 'Seguridad Social', 'value' => $total_seguridad_social, 'color' => '#e89b3c'], ['label' => 'Costo Sindical', 'value' => $total_sindical, 'color' => '#d97b2b'], ['label' => 'Obra Social', 'value' => $total_obra_social, 'color' => '#7b4fb8'], ['label' => 'PAMI', 'value' => $total_inssjp, 'color' => '#c0392b'], ['label' => 'ART', 'value' => $total_art, 'color' => '#3b6ea5'], ['label' => 'SCVO', 'value' => $total_scvo, 'color' => '#16a085'], ]; $slices = array_values(array_filter($slices, fn($s) => $s['value'] > 0)); $total_torta = array_sum(array_column($slices, 'value')); // Generar paths SVG (donut) $svg_paths = []; if ($total_torta > 0) { $cx = 60; $cy = 60; $r = 55; $angulo = -M_PI / 2; foreach ($slices as $s) { $frac = $s['value'] / $total_torta; $delta = $frac * 2 * M_PI; $a2 = $angulo + $delta; $x1 = $cx + $r * cos($angulo); $y1 = $cy + $r * sin($angulo); $x2 = $cx + $r * cos($a2); $y2 = $cy + $r * sin($a2); $largeArc = $delta > M_PI ? 1 : 0; if ($frac >= 0.999) { // Slice único: dibujar círculo completo $path = "M {$cx},".($cy-$r)." A {$r},{$r} 0 1,1 ".($cx-0.01).",".($cy-$r)." Z"; } else { $path = "M {$cx},{$cy} L {$x1},{$y1} A {$r},{$r} 0 {$largeArc},1 {$x2},{$y2} Z"; } $svg_paths[] = ['d' => $path, 'fill' => $s['color']]; $angulo = $a2; } } @endphp {{-- Barra COMPOSICION SALARIAL --}}
COMPOSICION SALARIAL: Remunerativo: {{ $fmt($recibo_num['recibo']['total_remun']) }} No Remunerativo: {{ $fmt($recibo_num['recibo']['total_no_remun']) }} Descuentos: {{ $fmt($recibo_num['recibo']['total_aportes']) }}
SUELDO NETO {{ $fmt($total_neto) }}
{{-- Detalle de la composición salarial + Torta --}}
{{-- Tabla detalle --}} {{-- Torta + leyenda --}}
Detalle de la composición salarial
Total Costo Sindical {{ $fmt($total_sindical) }} Total costo INSSJP: {{ $fmt($total_inssjp) }}
Empleador {{ $fmt($comp['sindical']['empleador']) }} Trabajador {{ $fmt($comp['inssjp']['trabajador']) }}
Trabajador {{ $fmt($comp['sindical']['trabajador']) }} Empleador {{ $fmt($comp['inssjp']['empleador']) }}
Total Seguridad Social {{ $fmt($total_seguridad_social) }} Total costo ART: {{ $fmt($total_art) }}
Empleador {{ $fmt($comp['seguridad_social']['empleador']) }} Empleador {{ $fmt($comp['art']['empleador']) }}
Trabajador {{ $fmt($comp['seguridad_social']['trabajador']) }}
Total Obra Social: {{ $fmt($total_obra_social) }} Total Costo SCVO: {{ $fmt($total_scvo) }}
Empleador {{ $fmt($comp['obra_social']['empleador']) }} Empleador {{ $fmt($comp['scvo']['empleador']) }}
Trabajador {{ $fmt($comp['obra_social']['trabajador']) }}
Nota: Seguridad social del empleador incluye SIPA, Fondo Nacional de Empleo y Asignaciones Familiares.
Costo total empleador
@if($total_torta > 0) @foreach($svg_paths as $p) @endforeach @endif @foreach($slices as $s) @endforeach
{{ $s['label'] }} @php $pct = $total_torta > 0 ? $s['value'] * 100 / $total_torta : 0; $pctFmt = $pct == 0 ? '0,0' : ($pct < 0.1 ? '<0,1' : number_format($pct, 1, ',', '.')); @endphp {{ $pctFmt }}%
@endif