@extends('layouts.users.main') @section('content') @php // Candado de solo-lectura para staff (draft/returned/archived/rejected). Se respalda con // abort_if(...isLockedFor...) en el backend de cada componente que muta. $editLocked = $ticket->isLockedFor(auth()->user()); @endphp
{{-- Header: Breadcrumb & Alerts --}}
@if (session('success')) @endif @if (session('error')) @endif {{-- Header: Title & Status Badges. Antes de que la máquina esté aprobada esto se muestra como edición de ticket (todavía no hay nada de catálogo que editar); una vez aprobada/publicada se muestra como edición de máquina de catálogo. --}}
@if (! $isApproved)

{{ __('Edit sales ticket #:id', ['id' => $ticket->id]) }}

{{ __('Update transaction details, machine information and customer collaboration.') }}

@else

{{ __('Edit machine for ticket #:id', ['id' => $ticket->id]) }}

{{ __('Update the machine\'s technical specifications, pricing, and availability details.') }}

@endif
{{ ucfirst($ticket->status->label()) }} {{ ucfirst($ticket->stage->label()) }}
{{-- ===================== STATIC SIDEBAR (tabs) ===================== --}}
{{ __('Machine setup') }}
{{ __('Control panel') }}
{{-- ===================== TAB CONTENT ===================== --}}
{{-- ===== TAB 1: Machine Specs (wizard) ===== --}}
{{-- ===== TAB 2: Multimedia. La galería de la máquina (used_machine_media) se administra igual desde el día 1, sin importar si el ticket ya fue aprobado; el flyer promocional solo tiene sentido una vez la máquina fue aceptada. ===== --}}
{{ __('Media & promotional assets') }}

{{ __('Manage the visual presentation of this machine. High-quality assets increase customer engagement.') }}

{{ __('Machine gallery') }}

{{ __('Upload, reorder, and set primary images & videos.') }}

@if ($editLocked) {{ __('View only') }} @else @endif
@if ($isApproved)
{{ __('Promotional flyer') }}

{{ __('Upload and manage the PDF/Image flyer for customers.') }}

@if ($editLocked) {{ __('View only') }} @else @endif
@endif
{{-- ===== TAB 3: Workflow ===== --}}
{{-- Quick actions: return with comments (draft only) + activity + team comments --}}
@if (! $isApproved)
@endif
{{-- Danger zone: system actions. El carril del stage ya está garantizado (para abrir esta página el controller autoriza `edit`, que usa el mismo carril que `archived`), así que aquí solo falta el permiso plano de archivar. --}} @if ($ticket->status != \App\Enums\SaleTicketStatusEnum::ARCHIVED && auth()->user()->can('archive_sales_ticket'))
{{ __('System actions') }}
{{ __('Critical operations. Use with caution.') }}
@csrf @method('PATCH')
@endif
{{-- ===== TAB 4: Sales Tracking (solo si ya está aprobada/publicada) ===== --}} @if ($isApproved)
@if ($statusOptions)
{{ __('Ticket status management') }}
@csrf @method('PATCH')
@endif
@endif
{{-- Offcanvas: Return with Comments, Activity Timeline & Team Hub (compartidos por los tabs Workflow/Sales Tracking) --}} @if (! $isApproved)
{{ __('Return with comments') }}

{{ __('Send back to customer for corrections. Visible to the client.') }}

@include('sale-ticket.partials._observations_list') @if ($ticket->status !== \App\Enums\SaleTicketStatusEnum::RETURNED && ! $editLocked)
@include('sale-ticket.observations.create')
@endif
@endif
{{ __('Activity timeline') }}
@include('components.tickets.activity-history', ['activities' => $activities, 'bootstrap' => true])
{{ __('Team hub') }}
@endsection @push('styles') @endpush @push('scripts') @endpush