Kundenansicht P6: K38 an den Kunden und T24 ans Team beim Einschalten
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cdc8f5c424
commit
408f7d0cc2
4 files changed
+244
-7
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import { config } from '../config.js'
|
||||
import { updateDocument } from './appwriteAdmin.js'
|
||||
import { aboDeckt } from './aboFunktionen.js'
|
||||
import { meldeEingeschaltet } from './aboFunktionenMeldung.js'
|
||||
import { berlinDay } from './deadlines.js'
|
||||
import { bestellFehler } from './featureOrder.js'
|
||||
import { featureConfig, ticketTexte } from './featureRegistry.js'
|
||||
@@ -11,8 +12,9 @@ import { einschaltenZeiten } from './zeiten/einschalten.js'
|
||||
|
||||
/**
|
||||
* Generisches Einschalten einer Funktion im Abo-Modell (V7, Spec 5.4): ohne Zahlung, mit Einrichtungs-Ticket. Gleiches Muster wie
|
||||
* einschaltenZeiten (Sperre feature-order, Nachweis vor dem Zustand, Ticket danach, Heilung statt Doppelticket). Keine Mails, kein
|
||||
* Stundenkonto, keine Team-Aktivierung (P6). Fuer news, termine, shop und unterkunft laeuft alles hier; zeiten geht ueber
|
||||
* einschaltenZeiten (Sperre feature-order, Nachweis vor dem Zustand, Ticket danach, Heilung statt Doppelticket). Am Ende meldet
|
||||
* meldeEingeschaltet (aboFunktionenMeldung.js, P6) das Einschalten mit K38 an den Kunden und T24 ans Team; die Team-Aktivierung
|
||||
* (adminActivate) steht in siteFeatures.js. Fuer news, termine, shop und unterkunft laeuft alles hier; zeiten geht ueber
|
||||
* einschaltenZeiten (Neubau, Ticket und K27 stehen dort) mit einer Vorpruefung, die dieselben Codes liefert.
|
||||
*/
|
||||
|
||||
@@ -131,10 +133,15 @@ export async function einschalten({ customerId, projectId, key, by, abrechnung,
|
||||
await pruefeAboDeckung(customerId, key, now)
|
||||
pruefeEinschaltZustand(await getFeatureDoc(customerId, projectId, key))
|
||||
}
|
||||
const { doc } = await einschaltenZeiten({ customerId, projectId, by, staff, nachweis, now, abrechnung, vorpruefung })
|
||||
return { doc, ticketWoid: await ticketWoid(doc.ticketId) }
|
||||
const { doc, changed } = await einschaltenZeiten({ customerId, projectId, by, staff, nachweis, now, abrechnung, vorpruefung })
|
||||
const woid = await ticketWoid(doc.ticketId)
|
||||
// nur wenn dieser Aufruf den Zustand gesetzt hat (K27 sendet holeZeitenNach); ein idempotenter Aufruf meldet nichts
|
||||
if (changed === true) await meldeEingeschaltet({ doc, ticketWoid: woid, by, abrechnung })
|
||||
return { doc, ticketWoid: woid }
|
||||
}
|
||||
|
||||
// Abrechnung, mit der dieser Aufruf endet: bei der Heilung die am Dokument gespeicherte
|
||||
let abgerechnet = abrechnung
|
||||
const doc = await withLocks([`feature-order:${customerId}:${projectId}`], async () => {
|
||||
// 1 Abo frisch (nie aus einem Zwischenspeicher); fuer das Team entfaellt es
|
||||
if (by === 'kunde') await pruefeAboDeckung(customerId, key, now)
|
||||
@@ -144,6 +151,7 @@ export async function einschalten({ customerId, projectId, key, by, abrechnung,
|
||||
pruefeEinschaltZustand(bisher)
|
||||
if (heilbar(bisher)) {
|
||||
const gespeichert = Object.hasOwn(ABRECHNUNGS_ZEILEN, bisher.einrichtungAbrechnung) ? bisher.einrichtungAbrechnung : abrechnung
|
||||
abgerechnet = gespeichert
|
||||
return legeTicketAn(bisher, { key, feature, project, customerId, abrechnung: gespeichert })
|
||||
}
|
||||
|
||||
@@ -168,5 +176,8 @@ export async function einschalten({ customerId, projectId, key, by, abrechnung,
|
||||
// 5 Ticket; scheitert es, bleibt setup ohne Ticket und der naechste Aufruf heilt
|
||||
return legeTicketAn(gespeichert, { key, feature, project, customerId, abrechnung })
|
||||
})
|
||||
return { doc, ticketWoid: await ticketWoid(doc.ticketId) }
|
||||
// Der Aufruf hat den Zustand gesetzt oder das Ticket angelegt (Heilung zaehlt); die Meldung wirft nie
|
||||
const woid = await ticketWoid(doc.ticketId)
|
||||
await meldeEingeschaltet({ doc, ticketWoid: woid, by, abrechnung: abgerechnet })
|
||||
return { doc, ticketWoid: woid }
|
||||
}
|
||||
Reference in new issue
Block a user