@extends('layouts.admin') @section('title','Configure product') @section('heading','Deep product configuration') @section('content')
{{ $product->name }}
{{ $product->vendor->name }} · {{ $product->sku ?: $product->slug }}
Basic details
@if($errors->any())
{{ $errors->first() }}
@endif

Option groups

@forelse($product->optionGroups as $group)
@csrf @method('put')
@foreach($group->options as $option)
@csrf @method('put')
@endforeach
@csrf
@csrf @method('delete')
@empty

No option groups yet.

@endforelse
@csrf

New group

Variants

@forelse($product->variants as $variant)
@csrf @method('put')@foreach($variant->option_value_ids ?? [] as $optionId)@endforeach
@csrf @method('delete')
@empty

No variants yet.

@endforelse
@csrf

New variant

@foreach($product->optionGroups as $group)@foreach($group->options as $option)@endforeach @endforeach

Add-ons

@foreach($product->addons as $addon)
@csrf @method('put')
@csrf @method('delete')
@endforeach
@csrf

Availability

@foreach($product->availabilityWindows as $window)
{{ ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][$window->weekday] }} · {{ substr($window->starts_at,0,5) }}–{{ substr($window->ends_at,0,5) }}
@csrf @method('delete')
@endforeach
@csrf

Inventory ledger

@csrf
@foreach($product->inventoryAdjustments->take(10) as $adjustment)
{{ $adjustment->quantity_delta > 0 ? '+' : '' }}{{ $adjustment->quantity_delta }} · {{ $adjustment->before_quantity }}→{{ $adjustment->after_quantity }} · {{ $adjustment->reason }}
{{ $adjustment->note ?: 'No note' }} · {{ $adjustment->actor?->name }} · {{ $adjustment->created_at }}
@endforeach

Vendor catalog import

CSV requires name and price. Queued processing supports create or SKU update.

@csrf
@foreach($imports as $import)
{{ $import->original_name }} {{ ucfirst($import->status) }}
{{ $import->mode }} · {{ $import->processed_rows }}/{{ $import->total_rows ?: '?' }} · created {{ $import->created_rows }} · updated {{ $import->updated_rows }} · failed {{ $import->failed_rows }} · {{ $import->requester?->name }}
@if($import->failure_message)
{{ $import->failure_message }}
@endif @foreach($import->rows->take(8) as $row)
Row {{ $row->row_number }}: {{ collect($row->errors)->flatten()->join(' ') }}
@endforeach
@if($import->status==='failed' && !$import->expires_at->isPast())
@csrf
@endif @if(in_array($import->status,['queued','processing']))
@csrf
@else
@csrf @method('delete')
@endif
@endforeach
@endsection