Modul: Tarifrechner¶
Stand
Code-Analyse vom 2026-04-22 gegen Live-Instanz sachpool.de,
WebEdition 9.2.3.0, PHP 8.3.29.
Zweck¶
Tarifrechner sind Online-Kalkulatoren von Versicherungspartnern (Barmenia/Adcuri,
Baloise, Agencio, Concept-IF, weitere). Für jeden Partner existiert ein Objekt
der Klasse partnerversicherung (classid 3) mit Stammdaten und
Redakteurs-Inhalten. Der Rechner selbst wird je nach Partner per signierter URL,
Session-Token oder einfachem Link mit dynamischen Parametern aufgerufen.
Zugriff nur im Login-Bereich (Workspace 536).
Einstiegspunkte¶
| Doc-ID | Pfad | Status | Rolle |
|---|---|---|---|
| 568 | /_login/tarifrechner/index.php |
publiziert | Übersichts-Seite mit Buchstaben-Tabs |
| 2540 | /_login/tarifrechner/cif-rechner.php |
publiziert | CIF-Rechner (Concept-IF) |
| 62229 | /_login/tarifrechner/baloise.php |
publiziert | Baloise-Rechner (neu, Okt 2025) |
| 64324 | /_login/tarifrechner/invedaweb/ |
unveröffentlicht | Invedaweb-Ordner (neu, in Entwicklung) |
Weitere Partner-Detail-Seiten entstehen automatisch durch das Objekt-Detail-Template
_detail-tarifrechner.tmpl (ID 123) — pro partnerversicherung-Objekt eine URL
nach dem Muster /_login/tarifrechner/<versichererslug>-<id>.php.
Datenmodell¶
Tarifrechner sind Instanzen der Klasse partnerversicherung (classid 3).
Stand April 2026: 130 Objekte in der Klasse, verteilt auf Workspaces
(Buchstaben-Gruppen, siehe unten).
Wichtige Felder (aus Objekte & Klassen):
| Feld | Typ | Rolle |
|---|---|---|
input_name |
varchar | Partner-Name |
input_vermittlernr |
varchar(100) | Sachpool-Vermittlernummer beim Partner |
img_img |
int | Logo |
input_anschrift-strasse / -ort |
varchar | Adresse |
input_telefon, input_telefax, input_email |
varchar | Kontakt |
link_url |
text | Partner-Website |
link_link-rechner |
text | Online-Rechner-Link (mit Platzhaltern wie %SACHUSER%) |
link_link-download |
text | Dokumenten-Download-Link |
text_text-intern |
longtext | Interner Infotext (wird durch Data-Filter ersetzt) |
href_include-content |
text | Ref. auf weiteres wE-Dokument (für komplexe Integrationen) |
text_tags |
longtext | Volltext-Tags |
multiobject_ansprechpartner |
longtext | Kontakt-Objekte |
multiobject_WerbebannerObenMO/SeitlichMO |
longtext | Werbebanner |
Übersichts-Template (tarifrechner-index.tmpl, ID 113)¶
Rendert alle partnerversicherung-Objekte als Logo-Kacheln in einer
Bootstrap-Tab-Struktur:
| Tab | Workspace-Filter | Buchstaben |
|---|---|---|
| Alle | — (kein Filter) | A–Z |
| A-F | Workspace 18 | A–F |
| G-N | Workspace 22 | G–N |
| O-U | Workspace 27 | O–U |
| V-Z | Workspace 62 | V–Z |
Redaktionelle Pflicht
Partner müssen bei Anlage händisch in den richtigen Workspace einsortiert
werden, sonst tauchen sie nur im „Alle"-Tab auf. → OFFENE-FRAGEN.md
Klick auf eine Kachel führt zur Partner-Detail-Seite.
Detail-Template (_detail-tarifrechner.tmpl, ID 123)¶
Zeigt einen einzelnen Partner. Aufruf per ?we_objectID=<id> (int-cast,
SQL-sicher). Zwei-Spalten-Layout:
- Links (col-lg-3): Logo, Sachpool-Vermittlernummer, Adresse, Telefon/Fax, E-Mail/URL
- Rechts (col-lg-9): Name, Button „Zum Online Rechner" (target=_blank),
Button „Software download",
text-intern(mit Platzhalter-Ersetzung), optional eingebundenes wE-Dokument (include-content), Ansprechpartner
Pagination oben: Zurück zur Übersicht (Dok 568) + Prev/Next durch alle Partner.
Platzhalter-Ersetzung (Data-Filter)¶
<we:var name="text-intern" nameto="textintern" to="global" />
<?php $textintern = $GLOBALS['textintern']; ?>
<we:include type="template" id="174" /><we:comment>Data filter</we:comment>
<?php echo $textintern; ?>
text-intern wird durch Template 174 (compatiblity-layer/data-filter.tmpl)
gefiltert — Platzhalter wie %SACHUSER%, %SACHSURNAME% werden ersetzt.
Inkonsistent
Der Rechner-Link-Button wird direkt aus dem Objekt-Feld gerendert
(<we:var type="link" name="link-rechner" only="href" />) — ohne Data-Filter.
Platzhalter in link-rechner werden damit nicht ersetzt.
Partner-Templates (spezifische Integrationen)¶
Einige Partner haben eigene Templates im Ordner
sachpool-portal/partnermodule/tarifrechner/, weil sie Session-Handling,
signierte URLs oder Konto-Synchronisation brauchen.
Adcuri / Barmenia (Template 176, adcuri.tmpl)¶
Technik: Session-basiert. PHP-Klasse sessionIdHolenViaReadfile ruft
via readfile() eine Session-Create-URL und extrahiert eine Session-ID.
$ASSEK_LOGIN = "vfvintegration"; // 🔴 hardcoded
define("SESSION_PASS", "a27+f13x-a"); // 🔴 hardcoded
define("SESSION_REQUEST_URL", "https://integration-i2-www.adcuri.de/"); // 🔴 Integrations-URL
function getAdcuriAngebotLink($Sparte, $VT = 0) {
// Erlaubte Sparten: 'hrv', 'thv', 'phv', 'uv', 'ur', 'kfz', 'evb',
// 'kur', 'fp', 'pkw', 'krad', 'gsv', 'ghv',
// 'rv', 'gev', 'top', 'vertrag_historie'
$id = $varianteEins->anmelden(SESSION_USER, SESSION_PASS, SESSION_SYSTEM);
return SESSION_REQUEST_URL . "index.php?session_id=$id&mainid=angebot&siteid=angebot_$Sparte&vt=$VT";
}
- Untervermittler-Kennung:
$sach_userwird als Query-Parameterkennung=an den Login angehängt, damit das Adcuri-System die Untervermittler-Sicht einschränken kann. - Sonderfall
evb: URL wird alssiteid=kfz_evbstattangebot_evbgebaut. - Sonderfall
ghv: zusätzlicher Parametertarif=tarif_barmenia_ghv2019.
Baloise (Template 306, baloise.tmpl) — neu seit 2025-10-23¶
Technik: HMAC-SHA512 signierte URL nach Baloise-Protokoll.
$clientId = "baloise-sachpool-startroutine"; // 🔴 hardcoded
$clientSecret = "39fS2KzeNgegoR7civDjjEe7kWLAMn2s"; // 🔴 hardcoded
$baseUrl = "https://api.baloise.b-ox.de/portals/redirect";
// Eindeutiger User-Kennungs-String: Initial + Nachname + Vermittlernummer
$user1 = strtolower(mb_substr($forename, 0, 1)) . strtolower($surname) . '_' . $user;
// z.B. "mmustermakler_90100-11"
Kommentar im Code erklärt die _90100-11-Erweiterung: Ohne Vermittlernummer
würden unterschiedliche Vermittler mit gleichem Initial/Nachnamen (z. B. „Max
Mustermakler" und „Martin Mustermakler") bei Baloise denselben user-Wert
erzeugen und sich Datensätze teilen — das wurde so behoben.
Parameter:
- user — eindeutige User-Kennung (siehe oben)
- user.name — Vor- + Nachname
- group — Vermittlernummer ($sach_user)
- group2 — sachpool-verteiler-group (fest, für Antragskopie)
- Order.Broker.Identifier — 600607 (Sachpool-Agenturnummer bei Baloise)
- Order.Broker.IdentifierReference — Vermittlernummer
- edition — TAE
Nach Signatur-Berechnung: window.location.href = $signedUrl.
Concept-IF / CIF (Template 183, cif_rechner.tmpl)¶
Details in späterer Runde — ähnliches Muster wie Adcuri.
Agencio (Template 294, agencio.tmpl)¶
Details in späterer Runde.
Standardfall: Link-Modul ohne spezielles Partner-Template¶
Die Mehrheit der Tarifrechner benötigt kein eigenes Template. Redakteure
legen den Rechner-Link (mit %SACHUSER%-Platzhaltern) direkt in
partnerversicherung.link-rechner ab, der Data-Filter ersetzt zur Laufzeit.
Beispiel-Link-Muster:
Sparten-Codes (Adcuri-spezifisch)¶
Die Adcuri-Funktion getAdcuriAngebotLink($Sparte) akzeptiert folgende Codes:
| Code | Sparte |
|---|---|
hrv |
Hausrat |
thv |
Tierhalterhaftpflicht |
phv |
Privathaftpflicht |
uv |
Unfall |
ur |
Urlaub/Reise |
kfz |
KFZ |
evb |
eVB (→ siteid=kfz_evb) |
kur |
Kurz |
fp |
Fingerprint |
pkw |
PKW |
krad |
Kraftrad |
gsv |
Gebäude-/Sachversicherung |
ghv |
Haus-/Grundbesitzerhaftpflicht (→ tarif=tarif_barmenia_ghv2019) |
rv |
Rechtsschutz |
gev |
Gewässerschaden |
top |
TOP |
vertrag_historie |
Vertragshistorie |
Weitere Partner-spezifische Spartencodes siehe Link-Modul.
Neuer Bereich: partnerintegration/ (Template-Ordner 308)¶
Seit 2025 eigener Unterordner sachpool-portal/partnermodule/partnerintegration/
mit bisher einem Eintrag:
- Template 309
invedaweb.tmpl - Dokumenten-Ordner
/_login/tarifrechner/invedaweb/(unveröffentlicht)
Status und Zweck siehe OFFENE-FRAGEN.md.
Bekannte Altlasten¶
→ Vollständiger Audit-Katalog: interne Datei HANDLUNGSEMPFEHLUNGEN.md im Repo-Root
Kurzauszug (doppelt zu Vergleichsportalen, weil Partner-Templates oft betroffen):
- 🔴🔴🔴 Hardcodierte Credentials (Adcuri, Baloise, u. a.)
- 🔴 Adcuri-Integrations-URL statt Produktion
- 🟡
_detail-tarifrechner.tmplSyntax-Fehler Z. 102 - 🟡 Data-Filter wird nur auf
text-internangewandt, nicht auflink-rechner - 🟡 Buchstaben-Tabs über Workspace-IDs (18/22/27/62) → manuelle Zuweisung nötig
- 🟡 Doppelter
<we:object>-Lookup in_detail-tarifrechner.tmpl
Siehe auch¶
- Objekte & Klassen — Klasse
partnerversicherung - Link-Modul — Platzhalter (
%SACHUSER%, Partner-Parameter-Tabellen) - Authentifizierungslayer —
$sach_*-Variablen - Vergleichsportale — Schwestermodul
- Legacy: Portierung Vergleichsrechner (historisch)