Catálogo de Coberturas

Product Engine

Listado de Coberturas

Administra la disponibilidad de coberturas (y asistencias) de forma dinámica.

@if(session('success'))

{{ session('success') }}

@endif @if($errors->any())

Se encontraron errores:

    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif @php $fieldLabels = [ 'formaCobro.IdFormaCobro' => 'forma de pago', 'IdFormaCobro' => 'forma de pago', 'IdDescuentoPrincipal' => 'descuento', 'SumaAsegurada' => 'suma asegurada', 'AltaSiniestralidad' => 'siniestralidad', 'EsAnioAnterior' => 'año del vehículo', 'EsAnioActualOAnterior' => 'año del vehículo', 'IdAutoTipo' => 'tipo de vehículo (ID)', 'IdAutoUso' => 'uso del vehículo', 'IdProvincia' => 'provincia', 'IdProvinciaRiesgo' => 'provincia de riesgo', ]; $operatorLabels = [ '==' => 'es', '!=' => 'no es', '>' => 'mayor a', '<' => 'menor a', 'IN' => 'es alguno de', 'NOT_IN' => 'no es ninguno de', 'BETWEEN' => 'entre', ]; $valueTranslators = [ 'formaCobro.IdFormaCobro' => ['1'=>'efectivo','2'=>'débito','3'=>'tarjeta'], 'IdFormaCobro' => ['1'=>'efectivo','2'=>'débito','3'=>'tarjeta'], 'AltaSiniestralidad' => ['0'=>'ninguna','1'=>'con AS robo','2'=>'solo cob. A'], 'EsAnioAnterior' => ['1'=>'anterior al actual','0'=>'actual'], 'EsAnioActualOAnterior' => ['1'=>'actual o anterior','0'=>'más antiguo'], ]; $truncateList = function(array $parts, int $max = 3) { if (count($parts) <= $max) { return implode(', ', $parts); } $shown = implode(', ', array_slice($parts, 0, $max)); $remaining = count($parts) - $max; return "{$shown}, +{$remaining} más..."; }; $condToText = function($cond) use ($fieldLabels, $operatorLabels, $valueTranslators, $truncateList) { $field = $cond->field; $op = strtoupper(trim($cond->operator)); $rawValue = trim($cond->value); $fieldLabel = $fieldLabels[$field] ?? $field; $opLabel = $operatorLabels[$op] ?? $op; if (isset($valueTranslators[$field])) { $map = $valueTranslators[$field]; $parts = array_map(fn($v) => $map[trim($v)] ?? trim($v), explode(',', $rawValue)); $value = $truncateList($parts); } elseif ($field === 'SumaAsegurada') { $value = '$' . number_format((float) $rawValue, 0, ',', '.'); } else { $parts = array_map('trim', explode(',', $rawValue)); $value = $truncateList($parts); } return "{$fieldLabel} {$opLabel} {$value}"; }; $buildSentence = function(\Illuminate\Database\Eloquent\Collection $conditions) use ($condToText) { $required = $conditions->where('group_id', 0); $optional = $conditions->where('group_id', '>', 0)->groupBy('group_id'); $reqParts = []; foreach ($required as $c) { $reqParts[] = $condToText($c); } $orGroupTexts = []; foreach ($optional as $groupConds) { $gParts = []; foreach ($groupConds as $c) { $gParts[] = $condToText($c); } $orGroupTexts[] = implode(' y ', $gParts); } if (empty($reqParts) && empty($orGroupTexts)) { return null; } $sentence = implode(' y ', $reqParts); if (!empty($orGroupTexts)) { $orBlock = implode(' o ', $orGroupTexts); if ($sentence) { $sentence .= ' y (' . $orBlock . ')'; } else { $sentence = $orBlock; } } return $sentence; }; @endphp
@forelse($coverages as $coverage)

[{{ $coverage->full_code_equis }}] {{ $coverage->commercial_name }}

@if($coverage->commercial_name_with_auxiseg)

[{{ $coverage->full_code_equis }}] {{ $coverage->commercial_name_with_auxiseg }}

@endif
{{ $coverage->base_code_equis }} Orden: {{ $coverage->sort_order }}
@if($coverage->is_active) ACTIVA @else INACTIVA @endif @if($coverage->allows_auxiseg) + AUXISEG @endif
Visible cuando:
@php $sentence = $buildSentence($coverage->conditions); @endphp @if($sentence)

{!! $sentence !!}

@else
Siempre visible
@endif
@csrf
@csrf @method('DELETE')
@empty

No hay coberturas definidas

Agrega las coberturas de Equis para que aparezcan en la cotización.

@endforelse