fix: make delivery option on checkout stick to the current sale channel

This commit is contained in:
Valentin Lab
2025-10-05 09:56:33 +02:00
parent dc05eb31ac
commit bd63a92604
3 changed files with 71 additions and 10 deletions

View File

@@ -1,13 +1,51 @@
@php
$addresses = collect($addresses ?? []);
$preselectedAddressId = old($name);
if ($preselectedAddressId === null && is_string($name) && str_contains($name, '[')) {
$dotName = preg_replace('/\[(.*?)\]/', '.$1', $name);
$dotName = trim($dotName, '.');
$preselectedAddressId = $dotName ? old($dotName) : null;
}
if (($preselectedAddressId === null || $preselectedAddressId === '') && $addresses->isNotEmpty()) {
$defaultAddress = $addresses->firstWhere('priority', 1);
if (! $defaultAddress) {
$defaultAddress = $addresses
->filter(function ($address) {
return (int) ($address['priority'] ?? 0) > 0;
})
->sortByDesc(function ($address) {
return (int) ($address['priority'] ?? 0);
})
->first();
}
if (! $defaultAddress) {
$defaultAddress = $addresses->firstWhere('is_default', true)
?? $addresses->firstWhere('default', true);
}
if (! $defaultAddress) {
$defaultAddress = $addresses->first();
}
$preselectedAddressId = $defaultAddress['id'] ?? null;
}
$addresses = $addresses->all();
@endphp
@if ($addresses)
@foreach ($addresses ?? [] as $address)
@foreach ($addresses as $address)
<div class="row mb-3">
<div class="col-1">
@include('components.form.radios.icheck', [
'name' => $name,
'val' => $address['id'],
'id' => $prefix . '_address_' . $address['id'],
'value' =>
old($name) ?? $address['priority'] || count($addresses) === 1 ? $address['id'] : false,
'value' => $preselectedAddressId,
])
</div>
<div class="col-11">