@if($watermark)
{{ $watermark }}
@endif @php // ====== DATOS DEL CLIENTE (MISMA LÓGICA QUE EN SHOW.BLADE) ====== /** @var \App\Models\Customer|null $customerModel */ $customerModel = $quote->customer ?? null; // Nombre formateado tipo Proper Case $rawName = trim(($customerModel->first_name ?? '').' '.($customerModel->last_name ?? '')); $customerName = $rawName !== '' ? ucwords(mb_strtolower($rawName, 'UTF-8')) : ucwords(mb_strtolower($quote->customer_name ?? 'Cliente', 'UTF-8')); // WhatsApp: primero del customer, luego de la quote $rawWhatsappSource = $customerModel->whatsapp ?? $quote->customer_whatsapp ?? ''; $rawWhatsapp = (string) $rawWhatsappSource; $waDigits = preg_replace('/\D+/', '', $rawWhatsapp); if (strlen($waDigits) === 10) { $waPretty = substr($waDigits, 0, 2).' '.substr($waDigits, 2, 4).' '.substr($waDigits, 6); } elseif (strlen($waDigits) > 0) { $waPretty = $waDigits; } else { $waPretty = ''; } // ====== DIRECCIÓN (PRIORIDAD: customer_addresses -> quote) ====== /** @var \App\Models\CustomerAddress|null $defaultAddress */ $defaultAddress = null; if ($customerModel) { // 1) Relación defaultAddress $defaultAddress = $customerModel->defaultAddress; // 2) Direccion marcada como default if (!$defaultAddress) { $defaultAddress = $customerModel->addresses() ->where('is_default', 1) ->first(); } // 3) Primera dirección disponible if (!$defaultAddress) { $defaultAddress = $customerModel->addresses()->first(); } } $direccion = ''; $mapsLink = ''; if ($defaultAddress) { $partes = []; if ($defaultAddress->street || $defaultAddress->ext_number) { $linea1 = trim( ($defaultAddress->street ?? '') . ' ' . ($defaultAddress->ext_number ?? '') ); if (!empty($defaultAddress->int_number)) { $linea1 .= ' Int. ' . $defaultAddress->int_number; } $partes[] = $linea1; } if (!empty($defaultAddress->neighborhood)) { $partes[] = $defaultAddress->neighborhood; } if (!empty($defaultAddress->locality)) { $partes[] = $defaultAddress->locality; } if (!empty($defaultAddress->municipality)) { $partes[] = $defaultAddress->municipality; } if (!empty($defaultAddress->state)) { $partes[] = $defaultAddress->state; } if (!empty($defaultAddress->postal_code)) { $partes[] = 'CP '.$defaultAddress->postal_code; } $direccion = implode(', ', array_filter($partes)); $mapsLink = $defaultAddress->maps_url ?? ''; } elseif (!empty($quote->delivery_address)) { // Fallback: lo que venga directo desde la quote $direccion = trim($quote->delivery_address); $mapsLink = trim((string) $quote->delivery_map_link); } @endphp

Canal
Orden N.° {{ $quote->quote_number }}
Estado de Mexico, Nezahualcoyotl a {{ \Carbon\Carbon::parse($quote->created_at)->locale('es')->translatedFormat('j \d\e F \d\e Y') }}

{{ $quote->status}}
{{ $settings->address }}
{{ $settings->email }} / {{ $website }}
Oficina: {{ $settings->phone }} / WhatsApp: {{ $settings->whatsapp }}

Detalles del Cliente

Cliente: {{ $customerName }}

Whatsapp: {{ $waPretty ?: 'No proporcionado' }}

@if($quote->customer_email)

Email: {{ $quote->customer_email }}

@endif

Válido hasta: {{ $validUntil }}

Detalles de Entrega

Fecha de entrega: {{ $deliveryDate }}

Entrega: {{ $quote->delivery_type }}

@if($direccion)

Dirección: {{ $direccion }}

@endif @if($mapsLink)

Google Maps: Ver ubicación

@endif
@foreach ($items as $item) @endforeach
# Concepto Cantidad Unitario Total
{{ $item['index'] }} {{ $item['name'] }} {{ $item['quantity'] }} ${{ $item['unit_price'] }} ${{ $item['total_price'] }}
{{-- ================= NUEVO DISEÑO DE TOTALES / PAGOS ================= --}} @php $totalPagado = $quote->payments->sum('amount'); $saldo = $quote->total - $totalPagado; $tienePagoTotal = $quote->payments->where('payment_type', 'Pago Total')->sum('amount') > 0; @endphp {{-- Resumen de costos --}} {{-- Pagos y saldo --}}

Resumen de costos

@if($summary['mostrarExtra']) @endif
Subtotal productos/servicios ${{ $summary['subtotal'] }}
Descuento aplicado - ${{ $summary['descuento'] }}
Recargo por prioridad de evento + ${{ $summary['extra'] }}
Costo de envío + ${{ $summary['envio'] }}
Base antes de impuestos ${{ $summary['baseSinIVA'] }}
IVA incluido (16%) ${{ $summary['iva'] }}
Total de la orden ${{ $summary['totalConIVA'] }}

* Todos los precios están expresados en moneda nacional (MXN) e incluyen IVA.

Pagos y saldo

@if($tienePagoTotal) @endif
Anticipo registrado ${{ $summary['anticipo'] }}
Pagos posteriores ${{ $summary['pagoTotal'] }}
Total pagado ${{ number_format($totalPagado, 2) }}
Saldo pendiente @if($saldo > 0) ${{ number_format($saldo, 2) }} @else $0.00 @endif
@if($saldo <= 0)

✅ Esta orden se encuentra liquidada.

@else

Puedes liquidar el saldo pendiente usando cualquiera de las cuentas bancarias indicadas abajo.

@endif
{{-- ================= FIN NUEVO DISEÑO TOTALES ================= --}}

Leslie Yamilet Gonzalez Carmona

@forelse ($bankAccountsData as $index => $account)
{{-- Logo del banco --}} {{-- @if(!empty($account['bank_logo'])) {{ $account['bank_name'] ?? 'Banco' }}
@endif --}} {{-- Nombre del banco --}} @if(!empty($account['bank_name'])) {{ $account['bank_name'] }}
@endif {{-- Datos de cuenta --}} @if(!empty($account['account_number'])) Cuenta: {{ $account['account_number'] }}
@endif @if(!empty($account['clabe'])) CLABE: {{ $account['clabe'] }}
@endif @if(!empty($account['card_number'])) Tarjeta: {{ $account['card_number'] }}
@endif
@empty

No hay cuentas bancarias registradas.

@endforelse
@if($approvedDesignInfo)

Diseño Aprobado por el Cliente

@if($approvedDesignInfo['type'] === 'image' && $approvedDesignInfo['path']) Diseño @elseif($approvedDesignInfo['type'] === 'pdf' && $approvedDesignInfo['url']) Ver diseño aprobado (PDF) @else

Aún no tenemos diseño aprobado.

@endif
@endif