Files
Webklar-Kundenbereich/server/services/aboAufbauphase.js
T

23 lines
1.3 KiB
JavaScript

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))
}