@php use App\Enums\Commerce\DiscountDuration; use App\Enums\Commerce\DiscountType; use App\Support\Commerce\Money; $editing = $promotion->exists; $chosen = collect(old('plans', $selected))->map(fn ($id) => (int) $id)->all(); // Valores iniciales válidos también en una promoción nueva (el primer valor de cada lista). $type = old('discount_type', $promotion->discount_type?->value ?? DiscountType::Percent->value); $duration = old('duration', $promotion->duration?->value ?? DiscountDuration::Once->value); // Estado de Alpine preparado aquí: dentro de la etiqueta Blade no compila directivas // como @js y llegaría al navegador como texto. Incluye "busy", que usa . $alpineState = \Illuminate\Support\Js::from(['busy' => false, 'type' => $type, 'duration' => $duration])->toHtml(); $percent = old('percent', $promotion->percent_bp ? Money::input($promotion->percent_bp) : ''); $amountOff = old('amount_off', $promotion->amount_off ? Money::input($promotion->amount_off) : ''); $toInput = fn ($date) => $date?->format('Y-m-d\TH:i'); @endphp @if ($errors->any()) @endif
@if ($used)

{{ $promotion->label() }}

@else

{{ __('En pagos únicos el descuento se aplica una sola vez.') }}

@endif
{{ __('Planes a los que se aplica') }}

{{ __('Sin ninguno marcado, se aplica a todos los planes de pago.') }}

@foreach ($plans as $plan) @endforeach
@error('plans')

{{ $message }}

@enderror
{{ $editing ? __('Guardar promoción') : __('Crear promoción') }}
@if ($editing)
@forelse ($promotion->coupons as $coupon) @empty @endforelse
{{ __('Código') }}{{ __('Usos') }}{{ __('Por espacio') }}{{ __('Caduca') }}{{ __('Estado') }}
{{ $coupon->code }} {{ $coupon->redeemed_count }}{{ $coupon->max_redemptions ? ' / '.$coupon->max_redemptions : '' }} {{ $coupon->max_per_workspace }} {{ $coupon->expires_at?->format('d/m/Y H:i') ?? '—' }} @if ($coupon->is_active){{ __('Activo') }}@else{{ __('Inactivo') }}@endif @if ($coupon->is_active) @else {{ __('Activar') }} @endif
{{ __('Sin cupones.') }}
{{ __('Crear cupón') }}
@endif