/** * Was ein Betrieb ueber die Schnittstelle mitbringen darf — Feld fuer Feld. * * **Unbekannte Felder werden abgewiesen, nicht stillschweigend verworfen.** * Vorher verschwand ein `iban` oder ein vertippter Feldname spurlos: der * Partner glaubte, er habe die Steuernummer geschickt, und Kasseneck hatte * nichts. Ein Feld, das man schickt und das nichts bewirkt, ist der teuerste * Fehler in einer Schnittstelle, weil ihn niemand bemerkt. * * Seitdem antwortet `createPartnerCustomer` mit `validation` und dem genauen * Feldpfad — verschachtelt und je Kontakt: `address.land`, * `tax_details.ustid`, `contacts.1.abteilung`. * * Zwei Dinge halten diese Seite dagegen: * * - der Typ [Business] (typen.ts) hat genau diese Felder, und TypeScript meldet * ein ueberzaehliges schon beim Tippen; * - [unknownBusinessFields] beantwortet dieselbe Frage zur Laufzeit, fuer * Daten, die aus einer Datenbank oder einem Formular kommen und deshalb nie * durch die Typpruefung gelaufen sind. * * **Die Wahrheit bleibt der Server.** Dieser Client weist nichts von sich aus * ab: eine spaetere Backend-Fassung darf ein Feld ergaenzen, ohne dass ein * aelterer Client es blockiert. [unknownBusinessFields] ist die Vorschau, * nicht das Tor. * * Quelle der Liste: `partner-core.BETRIEB_FELDER` im Backend. */ /** * Jedes erlaubte Feld als Pfad. `[]` markiert eine Liste — im Fehlerpfad des * Servers steht dort der Index (`contacts.0.name`). * * Bewusst flach und nicht verschachtelt: so ist es EINE Liste, die der * Zwilling Zeile fuer Zeile nachhalten kann. Das Schema fuer die Pruefung * entsteht daraus (siehe unten) und nicht daneben. */ export declare const BUSINESS_FIELDS: readonly ["companyName", "legalForm", "state", "industry", "companyRegister", "court", "web", "phone", "email", "billingEmail", "address.street", "address.number", "address.zip", "address.city", "taxDetails.taxNumber", "taxDetails.vatId", "taxDetails.gln", "taxDetails.smallBusiness", "contacts[].name", "contacts[].email", "contacts[].phone", "contacts[].roles", "taxAdvisor.name", "taxAdvisor.email", "taxAdvisor.phone", "taxAdvisor.mayContact"]; export type BusinessField = typeof BUSINESS_FIELDS[number]; /** * Die Feldpfade eines Betriebs, die [BUSINESS_FIELDS] nicht kennt, dieselbe * Ableitung wie im Backend, also dieselben Pfade wie in `data.errors[].field`. * Leer heisst: aus dieser Sicht ist nichts ueberzaehlig. * * Sagt **nichts** ueber die Werte: Steuernummer, UID, PLZ und Gericht prueft * das Backend mit `@kreiseck/validator`. Diese Funktion beantwortet nur die * Frage „schicke ich etwas, das dort niemand erwartet?". */ export declare function unknownBusinessFields(business: unknown): string[];