Files

34 lines
1.6 KiB
JavaScript

import { preiseVollstaendig } from './preis.js'
import { ladeEinstellungen, ladePreise, listeUnterkuenfte } from './speicher.js'
/**
* freischaltbar-Haken des Buchungskalenders (featureRegistry, Zustand 'setup', Ticket geschlossen): darf die Funktion jetzt aktiv
* werden? Ja, wenn der Kunde alles hinterlegt hat, was Rechnungen und Buchungen brauchen:
* - Einstellungen: firma, strasse, plz, ort, email und (steuernummer oder ustId), dazu rechnungAuftragAt (Zustimmung zur
* Rechnungsstellung im Namen des Vermieters);
* - mindestens eine aktive Unterkunft mit vollstaendigen Preisen (preiseVollstaendig) und Stornobedingungen.
* Fail-closed: bei jedem Lesefehler false.
* @param {{ $id: string }} doc portalFeatures-Dokument
* @returns {Promise<boolean>}
*/
export async function freischaltbar(doc) {
try {
const featureId = doc?.$id
if (typeof featureId !== 'string' || !featureId) return false
const einst = await ladeEinstellungen(featureId)
if (!einst) return false
const text = (wert) => typeof wert === 'string' && wert.trim() !== ''
if (!['firma', 'strasse', 'plz', 'ort', 'email'].every((k) => text(einst[k]))) return false
if (!text(einst.steuernummer) && !text(einst.ustId)) return false
if (!einst.rechnungAuftragAt) return false
const unterkuenfte = await listeUnterkuenfte(featureId, { nurAktive: true })
for (const u of unterkuenfte) {
const preise = await ladePreise(u.$id)
if (preiseVollstaendig(preise) && text(preise.stornobedingungen)) return true
}
return false
} catch {
return false
}
}