/** * Aufträge und Rechnungen: gemeinsame Konstanten (Übersicht V2). * Gemeinsame Datei: nur L0 ändert sie (Ausnahme: die eine Zeile AGB_FASSUNG, die L7 anpassen darf). */ export const RECHNUNGS_ARTEN = ['frei', 'festbetrag', 'aufwand', 'anzahlung', 'schluss'] export const AB_RECHNUNGS_ARTEN = ['anzahlung', 'schluss'] // brauchen AB und Schalter export const AUFTRAG_ARTEN = ['festpreis', 'aufwand'] export const AUFTRAG_STATUS = ['entwurf', 'versendet', 'bestaetigt', 'abgerechnet', 'storniert', 'ersetzt', 'widerrufen'] export const VEREINBARTE_STATUS = ['versendet', 'bestaetigt', 'abgerechnet'] // zählen als „vereinbart“ export const AUFTRAG_WEGE = { muendlich: 'mündlich', telefon: 'telefonisch', email: 'per E-Mail', vor_ort: 'vor Ort', chat: 'im Chat' } export const ZAHLUNGSPLAN_ARTEN = ['nach_abnahme', 'anzahlung', 'monatlich', 'frei'] export const KUNDENARTEN = ['unternehmen', 'privat'] export const STUNDENSATZ_STANDARD_CENTS = 10000 export const VIERTELSTUNDE = 15 export const TOKEN_GUELTIG_TAGE = 60 export const AGB_FASSUNG = '2026-09-30' // L7 darf diese eine Zeile anpassen export const LIMITS = { maxPositionen: 20, maxBeschreibung: 200, maxMenge: 999, maxEinzelpreisCents: 10_000_000, maxSummeCents: 99_999_999, maxTitel: 200, maxZahlungsplanText: 500, maxZahlungszielTage: 60, standardZahlungszielTage: 14, standardAnzahlungProzent: 50, maxZeitquellen: 10, maxSchaetzungMinuten: 99_960, maxLeistungszeitraum: 140, } // withLocks sperrt jedes Listenelement einzeln: deshalb je Sperre GENAU EIN zusammengesetzter Schlüssel export const SPERRE_NUMMER = ['auftraege-nummer'] export const sperreRechnung = (kundenId) => [`auftraege-rechnung:${kundenId}`] // Aufwand, Anzahlung, Schluss je Kunde export const sperreAuftrag = (id) => [`auftraege-ab:${id}`] // jede Statusänderung einer AB (L2, L3, L5) export const SCHALTER_AUS_MELDUNG = 'Auftragsbestätigungen sind für diesen Kunden noch nicht freigeschaltet.'