@extends('layouts.enterprise') @section('title', 'Detalle email inbound') @section('content') @php $isAccountant = request()->routeIs('accountant.*'); $detailTitle = $email->subject ?: 'Correo inbound #'.$email->id; $prettyPayload = json_encode($email->raw_payload ?? [], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $currencySummary = collect([$email->currency_code, $email->payment_terms])->filter()->implode(' - '); $serviceSummary = collect([$email->service_month, $email->service_year])->filter()->implode(' / '); $usageStatus = (string) (($usageSummary['status'] ?? 'available')); $usageFolios = collect($usageSummary['folios'] ?? [])->filter()->values(); $usageJns = collect($usageSummary['jns'] ?? [])->filter()->values(); $groupingPreview = (array) ($groupingPreview ?? []); $linkedGeneratedInvoices = $email->items ->map(fn ($item) => $item->generatedInvoiceItem?->generatedInvoice) ->filter() ->unique('id') ->values(); $suggestionRouteName = $isAccountant ? 'accountant.incomes.emails.items.suggestion' : 'admin.incomes.emails.items.suggestion'; $printRouteName = $isAccountant ? 'accountant.incomes.generate_invoice.print' : 'admin.incomes.generate_invoice.print'; $destroyRoute = $isAccountant ? route('accountant.incomes.emails.destroy', $email) : route('admin.incomes.emails.destroy', $email); @endphp
Revisa el correo inbound parseado, sus líneas y los datos que podrán servir para amarrar agrupaciones reales.
| # | Línea | Descripción | Cantidad | Unidad | Precio Unitario | Total | Estado | JN / Vista previa |
|---|---|---|---|---|---|---|---|---|
| {{ $item->position }} | {{ $item->line_number ?: '-' }} | {{ $item->description ?: '-' }} | {{ $item->quantity !== null ? number_format((float) $item->quantity, 2) : '-' }} | {{ $item->unit ?: '-' }} | {{ $item->unit_price !== null ? '$'.number_format((float) $item->unit_price, 2) : '-' }} | {{ $item->total !== null ? '$'.number_format((float) $item->total, 2) : '-' }} | @if($generatedItem && $generatedInvoice) {{ $generatedInvoice->status === \App\Models\GeneratedInvoice::STATUS_DRAFT ? 'Reservado' : 'Quemado' }} @elseif($item->selectedPipefyRequestItem) JN elegido @elseif(($suggestion['type'] ?? null) === 'candidate') Disponible @else Sin match @endif |
@if($generatedItem && $generatedInvoice)
Vista previa: {{ $generatedInvoice->folio ?: '-' }}
JN: {{ $linkedRequest?->title ?: '-' }}
Solicitud: #{{ $linkedRequest?->id ?: '-' }}
JN elegido: {{ $item->selectedPipefyRequestItem->request->title ?: '-' }}
Solicitud: #{{ $item->selectedPipefyRequestItem->request->id ?: '-' }}
{{ $item->selectedPipefyRequestItem->description ?: ($item->selectedPipefyRequestItem->product_name ?: '-') }}
@elseif(($suggestion['type'] ?? null) === 'candidate')
Sugerido JN: {{ $suggestion['jn'] ?: '-' }}
Solicitud: #{{ $suggestion['request_id'] ?: '-' }}
RC solicitud: {{ $suggestion['request_rc_list'] ?: '-' }}
@else
Sin vínculo todavía
@endif
@if(!$generatedItem)
@php
$candidateOptions = collect($itemCandidateOptions[(int) $item->id] ?? [])->values();
@endphp
@endif
|
| No se detectaron líneas del recibo en este correo. | ||||||||
No hay otros correos activos en el mismo grupo de agrupación para este cliente.
@elseSe encontraron correos hermanos dentro del mismo tipo de RC y moneda para este cliente.
| ID | Recibido | Proveedor | OC | RC | Tipo RC | Asunto |
|---|---|---|---|---|---|---|
| {{ $sibling->id }} | {{ optional($sibling->received_at)->format('Y-m-d H:i') ?: '-' }} | {{ $sibling->provider_name ?: '-' }} | {{ $sibling->purchase_order_number ?: '-' }} | {{ $sibling->purchase_receipt_number ?: '-' }} | {{ $siblingGrouping['label'] ?? 'Sin tipo RC detectado' }} | {{ $sibling->subject ?: '-' }} |
Este correo no trajo adjuntos mapeados.
@else
Body text y payload
{{ $email->body_text ?: 'Sin body text' }}
{{ $prettyPayload ?: '{}' }}