@extends('layouts.app') @php $esEdicion = $cotizacion->exists; $moneda = old('moneda', $cotizacion->moneda?->value ?? 'PEN'); $num = fn ($v) => rtrim(rtrim(number_format((float) $v, 2, '.', ''), '0'), '.') ?: '0'; // Filas a mostrar: lo enviado (si volvió con errores), las de la cotización o una vacía. if (is_array(old('descripcion'))) { $filas = collect(old('descripcion'))->map(fn ($d, $i) => [ 'pn' => old("pn.$i"), 'descripcion' => $d, 'detalle' => old("detalle.$i"), 'cantidad' => old("cantidad.$i", 1), 'costo_unitario' => old("costo_unitario.$i", 0), 'margen_porcentaje' => old("margen_porcentaje.$i", $margenDefecto), ])->values()->all(); } elseif ($lineas) { $filas = $lineas; } else { $filas = [['pn' => null, 'descripcion' => '', 'detalle' => null, 'cantidad' => 1, 'costo_unitario' => 0, 'margen_porcentaje' => $margenDefecto]]; } @endphp @section('titulo', $esEdicion ? "Editar {$folio}" : 'Nueva cotización') @section('contenido')
@csrf @if ($esEdicion) @method('PUT') @endif
Cotizaciones · {{ $esEdicion ? 'edición' : 'nueva' }}

{{ $esEdicion ? "Editar cotización" : 'Nueva cotización' }}

{{ $esEdicion ? 'Folio' : 'Folio asignado' }}: {{ $folio }}
@if ($esDuplicado)
Cotización duplicada. Selecciona el cliente al que se enviará y revisa los datos antes de guardar.
@endif @include('partials.alertas')
{{-- Columna principal --}}

1Datos del cliente

@foreach (\App\Support\Moneda::cases() as $opcion) @endforeach

2Detalle de productos / servicios

@foreach ($filas as $fila) @php($conDetalle = trim((string) ($fila['detalle'] ?? '')) !== '') @endforeach
P/NDescripciónCant.Costo% Gan.Precio unit.SubtotalGanancia c/IGV
— —

3Notas y condiciones

{{-- Columna lateral: resumen --}}

Resumen

Subtotal—
IGV ({{ $num($igvPorcentaje) }}%)—
Total—
@if (auth()->user()->esAdministrador()) @else @endif
ⓘ {{ $esEdicion ? 'Al guardar, los totales se recalculan con la tasa de IGV vigente en Configuración.' : 'Este total se recalcula automáticamente al modificar cantidades, precios o el descuento.' }}

Rentabilidad

Costo total (inc. IGV)—
Ganancia total (inc. IGV)—
Cancelar
@endsection @push('scripts') @endpush