Aufträge: Konfiguration und Pilot-Schalter AUFTRAEGE_ENABLED
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0ab3cbbaa3
commit
ddffc7a92d
3 files changed
+135
No files matched your search
@@ -32,6 +32,7 @@ function nonNegativeNumber(raw, fallback) {
|
||||
const termineEnabled = (process.env.TERMINE_ENABLED || '').trim().toLowerCase()
|
||||
const shopEnabled = (process.env.SHOP_ENABLED || '').trim().toLowerCase()
|
||||
const zeitenEnabled = (process.env.ZEITEN_ENABLED || '').trim().toLowerCase()
|
||||
const auftraegeEnabled = (process.env.AUFTRAEGE_ENABLED || '').trim().toLowerCase()
|
||||
|
||||
/** Komma-Liste aus einer Umgebungsvariablen: getrimmt, klein geschrieben, ohne Leereintraege; leer ergibt den Vorgabewert. */
|
||||
function commaList(raw, fallback) {
|
||||
@@ -634,6 +635,9 @@ export const config = {
|
||||
// Oeffnungszeiten live (Einstellungen, Erinnerungsmerker; scripts/zeiten-setup.mjs)
|
||||
oeffnungszeiten: process.env.APPWRITE_COLLECTION_OEFFNUNGSZEITEN || 'oeffnungszeiten',
|
||||
zeitenErinnerungen: process.env.APPWRITE_COLLECTION_ZEITEN_ERINNERUNGEN || 'zeitenErinnerungen',
|
||||
// Aufträge und Rechnungen (Auftragsbestätigungen, Projektrechnungen; scripts/auftraege-setup.mjs)
|
||||
auftraege: process.env.APPWRITE_COLLECTION_AUFTRAEGE || 'auftraege',
|
||||
projektRechnungen: process.env.APPWRITE_COLLECTION_PROJEKT_RECHNUNGEN || 'projektRechnungen',
|
||||
},
|
||||
|
||||
publicBaseUrl: (process.env.PORTAL_PUBLIC_URL || 'https://project.webklar.com').replace(/\/$/, ''),
|
||||
@@ -927,6 +931,16 @@ export const config = {
|
||||
keinNeubau: commaList(process.env.ZEITEN_KEIN_NEUBAU, ['emmas-schatzkiste']),
|
||||
},
|
||||
|
||||
// Aufträge und Rechnungen: Schalter nur für die AB-Funktionen und die Rechnungsarten anzahlung/schluss; wird bei
|
||||
// jedem Aufruf gelesen, siehe server/services/auftraege/schalter.js
|
||||
auftraege: {
|
||||
// off (Vorgabe) | pilot (nur AUFTRAEGE_PILOT_EMAILS, '*' = alle) | on
|
||||
mode: ['pilot', 'on'].includes(auftraegeEnabled) ? auftraegeEnabled : 'off',
|
||||
pilotEmails: commaList(process.env.AUFTRAEGE_PILOT_EMAILS, []),
|
||||
// Gesendete AB-PDFs: <uploadDir>/<kundenId>/<auftragId>.pdf
|
||||
uploadDir: process.env.AUFTRAEGE_UPLOAD_DIR || path.join(process.cwd(), 'upload-data', 'auftraege'),
|
||||
},
|
||||
|
||||
invoiceNinja: {
|
||||
url: (process.env.INVOICE_NINJA_URL || 'https://invoice.webklar.com').replace(/\/$/, ''),
|
||||
apiToken: process.env.INVOICE_NINJA_API_TOKEN || '',
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import { config } from '../../config.js'
|
||||
|
||||
/**
|
||||
* Pilot-Schalter der Aufträge (AUFTRAEGE_ENABLED = off (Vorgabe) | pilot | on). Betrifft nur die AB-Funktionen und
|
||||
* die Rechnungsarten anzahlung/schluss; Projektkonto und die Arten frei, festbetrag, aufwand laufen immer.
|
||||
* Liest config.auftraege bei jedem Aufruf.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Darf dieser Kunde Auftragsbestätigungen nutzen? `kunde`: Kundendokument oder { email }. on = alle; pilot = Liste
|
||||
* enthält '*' oder die (klein geschriebene, getrimmte) E-Mail-Adresse steht in AUFTRAEGE_PILOT_EMAILS (eine leere
|
||||
* Liste lässt niemanden durch); alles andere, auch ein unbekannter Modus, gilt als off.
|
||||
*/
|
||||
export function auftraegeAktiv(kunde) {
|
||||
const { mode, pilotEmails } = config.auftraege
|
||||
if (mode === 'on') return true
|
||||
if (mode !== 'pilot') return false
|
||||
if (pilotEmails.includes('*')) return true
|
||||
const adresse = String(kunde?.email || '').trim().toLowerCase()
|
||||
return adresse !== '' && pilotEmails.includes(adresse)
|
||||
}
|
||||
Reference in new issue
Block a user