@extends('layouts.admin') @section('title', 'Shipping & tax') @section('content') Markets @if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
{{ $errors->first() }}
@endif
Zones{{ number_format($zones->count()) }}
Rates{{ number_format($zones->sum(fn ($z) => $z->rates->count())) }}
Tax regs{{ number_format($taxRegistrations->count()) }}
@forelse($zones as $zone)

{{ $zone->name }}

{{ implode(', ', $zone->countries ?? []) ?: '—' }}

{{ $zone->active ? 'active' : 'inactive' }}
@if(auth()->user()?->hasPermission('orders.edit'))
@csrf @method('PUT')
@csrf @method('DELETE')
@endif @forelse($zone->rates as $rate) @empty @endforelse
RateCodeMethodPriceThresholds
{{ $rate->name }} {{ $rate->code }} {{ $rate->method }} {{ number_format($rate->price_cents / 100, 2) }} min {{ $rate->min_subtotal_cents ?? '—' }} · max {{ $rate->max_subtotal_cents ?? '—' }} · free @ {{ $rate->free_threshold_cents ?? '—' }} @if(auth()->user()?->hasPermission('orders.edit'))
@csrf @method('PUT')
@csrf @method('DELETE')
@endif
No rates in this zone.
@empty @endforelse

Rate simulator

@csrf
@if($simulation !== null)
@forelse($simulation as $row)
{{ $row['name'] }} {{ $row['code'] }}
{{ $row['method'] }} · {{ number_format($row['price_cents'] / 100, 2) }}
@empty

No matching rates for {{ $simCountry }} at {{ number_format($simSubtotal) }}¢.

@endforelse
@endif
@if(auth()->user()?->hasPermission('orders.edit'))

New zone

@csrf

New rate

@csrf
@endif

Tax registrations

    @forelse($taxRegistrations as $reg)
  • {{ $reg->name }} · {{ $reg->country }}
    {{ number_format((float) $reg->rate * 100, 2) }}% · {{ $reg->inclusive ? 'inclusive' : 'exclusive' }} · {{ $reg->active ? 'active' : 'off' }}
  • @empty
  • No tax registrations.
  • @endforelse
@if(auth()->user()?->hasPermission('orders.edit'))
@csrf
@endif
@endsection