Funktionen: Warnung der Aufbauphase, Abo-Beginn mit Datum, Texte für abgeschaltet und bereits eingeschaltet
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
06166221ec
commit
1742fb254d
4 files changed
+116
-10
No files matched your search
@@ -67,6 +67,8 @@ export function createFinanceRequest({ baseUrl, createJWT, fetchImpl = (...args)
|
||||
if (typeof info.code === 'string') err.code = info.code
|
||||
// Funktion einschalten ohne passendes Abo (409 abo_fehlt): der Grund (kein_abo, falsches_abo, gekuendigt, nicht_aktiv …) bestimmt den Text
|
||||
if (typeof info.grund === 'string') err.grund = info.grund
|
||||
// Bei grund beginnt_spaeter nennt das Portal den Beginn des Abos (ab, ISO-Zeitpunkt); featureFehlerText macht daraus das Datum
|
||||
if (typeof info.ab === 'string') err.ab = info.ab
|
||||
if (info.fehler && typeof info.fehler === 'object') err.fehler = info.fehler
|
||||
throw err
|
||||
}
|
||||
|
||||
+43
-10
@@ -312,8 +312,12 @@ export const fragtAbrechnung = (key, action, feature) =>
|
||||
export const abrechnungBereit = ({ key, action, feature, abrechnung }) =>
|
||||
!fragtAbrechnung(key, action, feature) || ABRECHNUNG_OPTIONEN.some((o) => o.value === abrechnung)
|
||||
|
||||
/** Text zu 409 abo_fehlt (Portal: grund = kein_abo | falsches_abo | gekuendigt | nicht_aktiv); unbekannter oder fehlender Grund -> allgemeiner Satz. */
|
||||
export function aboFehltText(grund, key) {
|
||||
/**
|
||||
* Text zu 409 abo_fehlt (Portal: grund = kein_abo | falsches_abo | gekuendigt | nicht_aktiv | beginnt_spaeter); unbekannter oder fehlender Grund
|
||||
* -> allgemeiner Satz. ab (ISO-Zeitpunkt, nur bei beginnt_spaeter) nennt das Datum als Berliner Kalendertag; ohne brauchbares Datum bleibt es
|
||||
* beim allgemeinen Satz.
|
||||
*/
|
||||
export function aboFehltText(grund, key, ab) {
|
||||
const name = FUNKTIONEN.find((f) => f.key === key)?.label || key
|
||||
switch (grund) {
|
||||
case 'kein_abo':
|
||||
@@ -324,13 +328,34 @@ export function aboFehltText(grund, key) {
|
||||
return `${name}: Das Abo des Kunden ist gekündigt. Eingeschaltet wird nicht, solange die Kündigung vorgemerkt ist.`
|
||||
case 'nicht_aktiv':
|
||||
return `${name}: Das Abo des Kunden läuft nicht (Status nicht aktiv). Bitte zuerst das Abo klären.`
|
||||
case 'beginnt_spaeter':
|
||||
if (typeof ab === 'string' && ab !== '' && !Number.isNaN(Date.parse(ab))) {
|
||||
return `${name}: Das Abo beginnt am ${fmtBerlin(ab)}. Ab dann kann die Funktion eingeschaltet werden.`
|
||||
}
|
||||
return `${name}: Das passende Abo fehlt.`
|
||||
default:
|
||||
return `${name}: Das passende Abo fehlt.`
|
||||
}
|
||||
}
|
||||
|
||||
/** Fehlertext zu einer Aktion: bei abo_fehlt der Text zum Grund, sonst die Meldung des Fehlers, ohne beides "Speichern fehlgeschlagen.". */
|
||||
export const featureFehlerText = (err, key) => (err?.code === 'abo_fehlt' ? aboFehltText(err.grund, key) : err?.message || 'Speichern fehlgeschlagen.')
|
||||
/**
|
||||
* Fehlertext zu einer Aktion. 409 abo_fehlt: der Text zum Grund (bei beginnt_spaeter mit Datum). 409 abgeschaltet und bereits_eingeschaltet
|
||||
* (Team-Aktivierung im Abo-Modell): eigene Texte fuers Team, nie der Kundentext des Portals. Sonst die Meldung des Fehlers, ohne beides
|
||||
* "Speichern fehlgeschlagen.".
|
||||
*/
|
||||
export function featureFehlerText(err, key) {
|
||||
const name = FUNKTIONEN.find((f) => f.key === key)?.label || key
|
||||
switch (err?.code) {
|
||||
case 'abo_fehlt':
|
||||
return aboFehltText(err.grund, key, err.ab)
|
||||
case 'abgeschaltet':
|
||||
return `${name}: Die Funktion wurde für dieses Projekt abgeschaltet (der Grund steht in der Zeile). Sie lässt sich hier nicht wieder einschalten.`
|
||||
case 'bereits_eingeschaltet':
|
||||
return `${name}: Die Funktion ist für dieses Projekt schon eingeschaltet. Bitte die Seite neu laden.`
|
||||
default:
|
||||
return err?.message || 'Speichern fehlgeschlagen.'
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rumpf fuer POST /funktionen/:customerId/:key; Datum und Weg der Textform nur beim Aktivieren und nur, wenn beide da sind,
|
||||
@@ -356,13 +381,21 @@ export const K16_WARNUNG_OHNE_UNTERLAGEN = 'Eingeschaltet, aber die E-Mail „be
|
||||
const K16_OHNE_UNTERLAGEN = ['zeiten']
|
||||
|
||||
/**
|
||||
* Statuszeile nach dem Speichern einer Aktion: Warnung statt "Gespeichert.", wenn die Antwort warnung: true traegt. Der Wortlaut der
|
||||
* Warnung folgt der Funktion (key): Terminplaner und Webshop nennen Leistungsbeschreibung und AVV, Oeffnungszeiten live keinen AVV.
|
||||
* Aufbauphase (Abo-Modell): das Team hat "Im Projekt enthalten" gewaehlt, obwohl der Kunde noch nie ein Abo hatte. Das Portal schaltet ein und
|
||||
* antwortet mit 200 und warnung: 'abo_fehlt' (dazu grund: 'kein_abo'). Nicht zu verwechseln mit warnung: true (K16 ging nicht raus).
|
||||
*/
|
||||
export const speicherStatus = (antwort, key) =>
|
||||
antwort?.warnung === true
|
||||
? { ok: false, text: K16_OHNE_UNTERLAGEN.includes(key) ? K16_WARNUNG_OHNE_UNTERLAGEN : K16_WARNUNG }
|
||||
: { ok: true, text: 'Gespeichert.' }
|
||||
export const ABO_FEHLT_WARNUNG = 'Eingeschaltet. Achtung: Diese Funktion läuft nur mit Wartungs-Abo. Bitte das Abo vor dem Livegang vereinbaren.'
|
||||
|
||||
/**
|
||||
* Statuszeile nach dem Speichern einer Aktion: Warnung statt "Gespeichert.", wenn die Antwort warnung: true (K16 nicht gesendet) oder
|
||||
* warnung: 'abo_fehlt' (Aufbauphase ohne Abo) traegt. Der Wortlaut der K16-Warnung folgt der Funktion (key): Terminplaner und Webshop nennen
|
||||
* Leistungsbeschreibung und AVV, Oeffnungszeiten live keinen AVV; die Abo-Warnung gilt fuer alle Funktionen gleich.
|
||||
*/
|
||||
export function speicherStatus(antwort, key) {
|
||||
if (antwort?.warnung === true) return { ok: false, text: K16_OHNE_UNTERLAGEN.includes(key) ? K16_WARNUNG_OHNE_UNTERLAGEN : K16_WARNUNG }
|
||||
if (antwort?.warnung === 'abo_fehlt') return { ok: false, text: ABO_FEHLT_WARNUNG }
|
||||
return { ok: true, text: 'Gespeichert.' }
|
||||
}
|
||||
|
||||
// --- Webshop: Anfrage des Kunden und Stand des Shops (Portal: GET /shop/:customerId) ---
|
||||
|
||||
|
||||
Reference in new issue
Block a user