isOpen()) { return false; } $customerId = $case->subscription?->customer?->stripe_customer_id; if (blank($customerId)) { return false; } $offen = array_column(app(StripeClient::class)->openInvoices((string) $customerId), 'id'); $unsere = array_merge([$case->stripe_invoice_id], array_values($case->fee_invoice_ids ?? [])); // Steht noch eine davon offen, ist der Fall nicht zu. if (array_intersect($unsere, $offen) !== []) { return false; } $case->update(['settled_at' => Carbon::now()]); // Und die Cloud kommt zurück. Nur die des betroffenen Vertrags — // andere Verträge desselben Kunden waren nie betroffen. foreach (Instance::query() ->where('customer_id', $case->subscription?->customer_id) ->whereNotNull('suspended_at') ->get() as $instance) { app(ResumeInstance::class)($instance); } return true; } }