*/ use HasFactory, HasUuid; protected $fillable = [ 'customer_id', 'plan', 'type', 'addon_key', 'amount_cents', 'currency', 'datacenter', 'stripe_event_id', 'status', ]; protected function casts(): array { return ['amount_cents' => 'integer']; } public function customer(): BelongsTo { return $this->belongsTo(Customer::class); } public function instance(): HasOne { return $this->hasOne(Instance::class); } public function runs(): MorphMany { return $this->morphMany(ProvisioningRun::class, 'subject'); } /** * Runner hook: a failed provisioning run marks the order failed (no * auto-refund) AND releases the reserved instance, so its quota stops * counting against host capacity. */ public function onProvisioningFailed(): void { $this->update(['status' => 'failed']); $this->instance()->update(['status' => 'failed']); } }