import { listSubscriptionsForCustomer } from './stripeBilling.js' /** * Aufbauphase (E9, N28; Kundenansicht neu, P6): Hatte der Kunde noch nie ein Abo, weil seine Website beim Projektstart noch im Bau ist? * Gemeinsame Quelle fuer die Team-Aktivierung "im Projekt" (siteFeatures.adminActivate) und die beiden Tagesabgleiche (Funktionen des * Abo-Modells, Oeffnungszeiten live): Solange es wahr ist, bleibt eine im Projekt eingebaute Funktion in Ruhe; mit dem ersten Abo * gilt die Abo-Regel auch fuer 'projekt'. */ /** Stati abgebrochener Bestellungen (Checkout nie abgeschlossen): sie zaehlen nicht als Abo. */ const ABGEBROCHEN = new Set(['incomplete', 'incomplete_expired']) /** * true = der Kunde hatte noch nie ein Abo: kein Abo-Dokument mit einem Status ausser incomplete und incomplete_expired (jeder andere * Status zaehlt, auch ein beendetes Abo). Lesefehler werden weitergereicht (fail-closed: der Aufrufer behandelt den Kunden dann nicht * als Aufbauphase). Eine leere oder keine String-Kunden-ID ist ein TypeError. */ export async function ohneAboBisher(customerId) { if (typeof customerId !== 'string' || customerId === '') throw new TypeError('ohneAboBisher: Kunden-ID erwartet') const abos = await listSubscriptionsForCustomer(customerId) return !abos.some((abo) => !ABGEBROCHEN.has(abo.status)) }