Kontext
Welkin & Meraki führten ihr gesamtes Geschäftsmodell auf Salesforce: Opportunities, Contracts, Contract Line Items, Orders, Order Line Items. Jedes Jahr musste der Mietbetrag inflationsbereinigt neu bewertet werden (Indexierung, üblicherweise 3 %). Manche Verträge waren MwSt-frei; manche Produkte erforderten eine Kaution; Verlängerungen mussten Felder vom Mutter-Vertrag korrekt übernehmen. Die Codebasis war organisch gewachsen. An acht verschiedenen Stellen wurde einem OrderLineItem ein Preis zugewiesen, und die Indexierung wurde bei Verlängerungs-Verträgen doppelt angewendet, sodass die Preise im Moment der Konvertierung aus der Opportunity ungewollt anstiegen.
Unsere Rolle
Refactor-Lieferung für das Vertrags- und Order-Subsystem: die vier Klassen, die zusammen entschieden, was eine Verlängerung tatsächlich kostete.
Was wir geliefert haben
- Indexierungs-Neubau. Ein expliziter Indexierungs-Marker pro Zeile eingeführt, sodass Indexierung zu einer nachvollziehbaren Eigenschaft wurde, statt einer impliziten Neuberechnung, die an fünf Stellen feuerte. Verlängerungen wenden die Indexierung nun genau einmal an.
- MwSt-freier Vertragspfad. Neuer expliziter MwSt-frei-Marker auf der Opportunity, durch die Konvertierungs-Pfade von Vertrag und Order durchgereicht, sodass die Steuerbefreiung bis zur Order-Erzeugung erhalten bleibt. Die Berechnung des Total Contract Value wurde von der MwSt-Einrechnung entkoppelt.
- Kautions-Logik. Kautionsprüfungen in den Order-Erstellungs-Schritt verlagert, gesteuert durch die Produkt-Konfiguration, sodass Kautionen bei der Vertragskonvertierung nicht mehr stillschweigend wegfielen.
- Credits-Policy. Neue Regel (keine Credits auf Verträge ab einem Stichtag, außer wenn der Mutter-Vertrag vor dem Stichtag liegt) als ein einziger lesbarer Conditional im Vertrags-Trigger umgesetzt.
- Verlängerungs-Logik stabilisiert. Der doppelte-Indexierung-Bug an der Quelle behoben, statt mit Subtraktions-Logik überdeckt.
Der größte Gewinn war, die Vertragsmathematik wieder lesbar zu machen. Aus acht Pricing-Pfaden wurde ein benannter Marker, ein Boolean, eine Quelle der Wahrheit.
Ergebnis
Verlängerungen überraschten den Vertrieb nicht mehr. Vertragsbeträge auf der verlängerten Opportunity entsprachen dem, was der Vertrieb anbieten wollte, statt einen versteckten 3-%-Aufschlag zu tragen, der manuell wieder herausgerechnet werden musste. Der MwSt-freie Pfad machte steuerbefreite Verträge ohne Engineering-Eskalation möglich. Wichtiger noch: Das Vertrags-Subsystem wurde zu etwas, das der nächste Entwickler lesen konnte: explizite Marker auf Objekten, benannte Indexierungs-Regeln, ein einziger Konvertierungs-Pfad. Die Pricing-Logik, die wir gebaut haben, läuft bis heute produktiv.