{{-- Crear y editar Orden de Cargue de exportación (rexpo/create y rexpo/create/{id} → rexpo.store). Kit ui-ctc (MigracionLayout.MD, "Crear y editar Orden de Compra y Orden de Cargue", parte 3). Solo cambia la presentación: mismos name, id, valores, opciones y orden de los campos del formulario, las mismas ramas por cliente y el mismo JavaScript (jQuery, select2 y jQuery Mask se cargan solo aquí). Orden de los campos: en la vista anterior el HTML mal formado sacaba de sus tablas (foster parenting) txtIdCont, txtIdContEstado, txtTamano y los txtEstadoProducto{n}; aquí se escriben en ese mismo lugar, antes de cada tabla. La plantilla oculta t0jpanel la clonan AgregarContenedor y AddRowEmpty buscando por etiqueta (table#t0…, button#t0tab…, a#t0Add…, div#t0gestionLotes, p#t0txtConsecutivo, h2#t0Label, img): esas etiquetas no se cambian. --}} @php // Clases del kit para los controles armados a mano (la mayoría lleva atributos condicionales que no pasan por x-input). $cInput = 'form-input block w-full rounded-md text-[13px] shadow-sm border-[var(--borde-fuerte)] bg-[var(--superficie)] text-[var(--texto)] placeholder:text-[var(--texto-tenue)] focus:border-[var(--acento)] focus:ring-[var(--acento)] read-only:bg-[var(--superficie-2)] read-only:text-[var(--texto-suave)] disabled:cursor-not-allowed disabled:bg-[var(--superficie-2)] disabled:text-[var(--texto-suave)]'; $cSelect = 'form-select block w-full rounded-md text-[13px] shadow-sm border-[var(--borde-fuerte)] bg-[var(--superficie)] text-[var(--texto)] focus:border-[var(--acento)] focus:ring-[var(--acento)] disabled:cursor-not-allowed disabled:bg-[var(--superficie-2)] disabled:text-[var(--texto-suave)]'; // Celdas de tabla: más compactas. $cCelda = 'form-input block w-full rounded-md px-2 py-1 text-[13px] shadow-sm border-[var(--borde-fuerte)] bg-[var(--superficie)] text-[var(--texto)] focus:border-[var(--acento)] focus:ring-[var(--acento)] read-only:bg-[var(--superficie-2)] read-only:text-[var(--texto-suave)] disabled:bg-[var(--superficie-2)]'; $cCeldaSelect = 'form-select block w-full rounded-md py-1 pl-2 pr-7 text-[13px] shadow-sm border-[var(--borde-fuerte)] bg-[var(--superficie)] text-[var(--texto)] focus:border-[var(--acento)] focus:ring-[var(--acento)]'; // Antes, verde (pesos e información del producto) y amarillo (BL y flete): ahora un tinte suave que funciona en oscuro. $cPeso = 'bg-emerald-50 dark:bg-emerald-500/10'; $cGasto = 'bg-amber-50 dark:bg-amber-500/10'; $cRejilla = 'grid gap-x-4 gap-y-3.5 [grid-template-columns:repeat(auto-fill,minmax(220px,1fr))]'; $cTabla = 'ctc-tabla [&>tbody>tr>td]:!px-1.5 [&>tbody>tr>td]:!py-1.5 [&>thead>tr>th]:!px-2 [&>thead>tr>th]:whitespace-nowrap'; // Pestañas del contenedor (Información, Lotes, Ocultar) y botones de la barra de cada contenedor. $cPestana = 'inline-flex h-8 items-center gap-1.5 rounded-lg border border-[var(--borde-fuerte)] bg-[var(--superficie)] px-3 text-[12px] font-semibold text-[var(--texto)] hover:bg-[var(--nav-hover)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--acento)]'; $cEtiquetaTotal = 'block text-[11px] font-semibold uppercase tracking-wide text-[var(--texto-suave)]'; $cTotal = 'form-input block w-full rounded-md px-2 py-1 text-center text-[13px] tabular-nums shadow-sm border-[var(--borde-fuerte)] bg-[var(--superficie-2)] text-[var(--texto)]'; @endphp @if ($errors->any())
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif @if ($po->id == null)
@else @endif @csrf {{-- Encabezado de la orden (los campos que se muestran los define ex_visualizaciones por cliente: $campoVista) --}}
@if ($campoVista['po'] == 'NO')
@if (session('GrupoEmpresarial') == 1 && $po->po == '') @endif
po == '') readonly @endif value="@if (session('GrupoEmpresarial') == 1 && $po->po == '') Automatico @else {{ $po->po }} @endif" required /> @if (session('GrupoEmpresarial') != 1) @endif
@endif @if ($campoVista['numero_do'] == 'NO')
@endif @if ($campoVista['fecha_po'] == 'NO') @endif @if ($campoVista['id_compania'] == 'NO') @endif @if ($campoVista['IdPuertoOrigen'] == 'NO') @endif @if ($campoVista['IdPaisOrigen'] == 'NO') @endif @if ($campoVista['IdPuertoDestino'] == 'NO') {{-- Las opciones las pone TraerPuertosDestino() al cargar, según el país. --}} @endif @if ($campoVista['vessel'] == 'NO') @endif @if ($campoVista['aplicaGD'] == 'NO') @endif @if ($campoVista['idTarifa'] == 'NO') {{-- Las opciones de tarifa se arman con columnas de ancho fijo (TraerTarifas): fuente monoespaciada. --}}

Lugar de Entrega GD20 GD40 Contrato Linea BL C20 C40

@endif @if ($campoVista['IdSupplier'] == 'NO') @endif @if ($campoVista['id_notify1'] == 'NO') @endif @if ($campoVista['id_notify2'] == 'NO') @endif @if ($campoVista['centro_costos'] == 'NO') @endif @if ($campoVista['freight_condition'] == 'NO') @endif @if ($campoVista['inssuance_bl'] == 'NO') @endif @if ($campoVista['id_patio_retiro'] == 'NO') @endif @if ($campoVista['documento_transporte'] == 'NO')
@endif @if ($campoVista['booking'] == 'NO')
@if (session('GrupoEmpresarial') != 27) @endif
@endif @if ($campoVista['IdIncoterms'] == 'NO') @endif @if ($campoVista['IdMoneda'] == 'NO') @endif @if ($campoVista['id_consegnee'] == 'NO') @endif @if ($campoVista['IdLinea'] == 'NO') @endif @if ($campoVista['direccion_entrega'] == 'NO') @endif @if ($campoVista['fecha_eta'] == 'NO') @endif @if ($campoVista['fecha_etd'] == 'NO') @endif @if ($campoVista['destino_final'] == 'NO') @endif @if ($campoVista['transporte_local'] == 'NO') @endif @if ($campoVista['selectividad'] == 'NO') @endif @if ($campoVista['persea'] == 'NO') @endif @if ($campoVista['dex'] == 'NO') @endif @if ($campoVista['fecha_dex'] == 'NO') @endif @if (session('GrupoEmpresarial') == 2 || session('GrupoEmpresarial') == 28) @endif
{{-- Factura (Alpina no ve número ni fecha de factura) --}}
@if (session('dominio') != 'alpina') @if ($campoVista['factura'] == 'NO') @endif @if ($campoVista['fecha_factura'] == 'NO') @endif @endif @if ($campoVista['vto_factura'] == 'NO') @endif @if ($campoVista['total_factura'] == 'NO') @endif
{{-- Campos adicionales (ex_definicion_campos_po del cliente), un bloque por grupo --}} @if (count($iAdicionalPO) == 0)

Este cliente no tiene campos adicionales definidos.

@endif
@php $GrupoAnt = null; @endphp @foreach ($iAdicionalPO as $fil) @if ($loop->first || $GrupoAnt != $fil->grupo) @if (! $loop->first)
@endif
@php $GrupoAnt = $fil->grupo; @endphp @endif @if ($fil->tipo_campo == 'Fecha') @elseif ($fil->tipo_campo == 'Texto') @elseif ($fil->tipo_campo == 'Comentario') @elseif ($fil->tipo_campo == 'Lista') @php $valu = str_replace(' ', '', $fil->valores); $valu = explode(',', $valu); @endphp @else @if ($fil->sep_miles == 'S') @else @endif @endif @if ($loop->last)
@endif @endforeach
{{-- Contenedores: plantilla oculta (t0), barra para agregar, contenedores guardados (t1…tN) y los nuevos (PanelPadre) --}}
@php $i = 0; $nomTab = 't' . $i; @endphp {{-- Plantilla del contenedor que clona AgregarContenedor (oculta) --}} {{-- Barra para agregar contenedores (y, fuera de Adama, productos al contenedor elegido) --}}
@if (session('GrupoEmpresarial') != 1 && 0)
Todos
@endif
Contenedor @if (session('GrupoEmpresarial') != 1) Producto @else Fletes @endif
@if (session('GrupoEmpresarial') != 1 && false)
@endif
@php $i = 1; $nomTab = 't' . $i; @endphp {{-- Contenedores guardados (editar) --}} @foreach ($grupocon as $gp) @php $nomTab = 't' . $i; $valores = ''; $num = 0; $newDeta = collect($detalle)->where('id_contenedor', $gp->id)->all(); @endphp
Contenedor

{{ $i }}

@if ($gp->contenedor) {{ $gp->contenedor }} @endif
{{-- txtTamano iba suelto antes de la tabla del contenedor: se conserva ese orden. --}} {{-- Estado de cada producto (1 = quitado con "del"): iban sueltos antes de la tabla; se conserva ese orden. --}}
@if (session('GrupoEmpresarial') == 1) @endif @php $totalBL = 0; $totalFlete = 0; $totalUnidades = 0; $totalBultos = 0; $totalPallets = 0; $totalPesoNeto = 0; $totalPesoBruto = 0; @endphp @foreach ($newDeta as $dt) @php $num = $num + 1; // Antes un "@if enviado" escribía el texto $desactivado="disabled"; en la página en vez de // asignarlo: los campos nunca se desactivaron. Se conserva vacío. $desactivado = ''; $totalBL += $dt->valor_bl; $totalFlete += $dt->valor_flete; $totalUnidades += $dt->unidades; $totalBultos += $dt->bulto; $totalPallets += $dt->pallet; $totalPesoBruto += $dt->peso_bruto; $totalPesoNeto += $dt->peso_neto; @endphp @endforeach
@php $totalGastos = $totalBL + $totalFlete + $gp->gastos_destino; @endphp
@php $i = $i + 1; @endphp @endforeach {{-- Contenedores nuevos (AgregarContenedor) --}}
{{-- Guardar --}}
Limpiar @if (Auth::user()->operacion_ex == 'E') @if ($po->id == null) Guardar @else Actualizar @endif @endif Cancelar
@push('estilos') @endpush @push('scripts') {{-- Librerías que traía la vista anterior (planti), solo para esta pantalla. Antes se cargaban dos jQuery y bootstrap-select (sin uso, daba error); ahora un solo jQuery con select2 y jQuery Mask (campos con separador de miles). --}} @endpush