Abonnementangebot – Systembeschreibung

Parameter der Angebotsseite, Auswahl der angebotenen Tarife, der Kontingentzweig sowie die Endpunkte für Tarif- und Funktionsbestellung und Zahlung.

Überblick

Bei einer gesperrten Funktion führt der Upsell-Wächter des Startschritts, der Link der Zugriffsverweigerungsseite oder eine Direktadresse hierher. Der Menüpunkt ist ausgeblendet. Parameter: locked_route, locked_action, reason (need_credit, need_plan, overage), feature_id, back, return_url, required_quantity, required_object, beneficiary_client_id, store_id. Ganze Seite: upsell; Modal: upsell.modal.

Was angezeigt wird

  • Bei gesperrter Funktion Name und Beschreibung; Tarife nach Dlbtentitlement::plansFor(): Paare aus Definition und Tarif, deren Positionen die Funktion enthalten (mit Tarifvererbung); hat die Zeile des Benutzers eine offer_definition_id, nur diese Definition.
  • Empfohlener Tarif: der günstigste oberhalb der aktuellen Ebene; Einzelpreis: list_price der Funktion.
  • Bei Schuld (debt) wird kein Tarif angeboten.
  • Kontingentzweig: Limitblock (benötigt, enthalten, verbraucht, fehlend, Kosten) und Optionen: Aufladen, Paket, Tarifwechsel (zum Katalog), zurück.
  • Ohne Sperre die vollständige Matrix: aktive Definitionen × Tarife × Funktionen.
  • Die Adresse back muss eine eigene Route des Systems sein (safeBack).

Bestell-Endpunkte

EndpunktVerhalten
upsell.orderprüft eine aktive Definition und einen zugehörigen Tarif; ohne Dlbtbilling Abbruch (protokolliert); quotePlan() – ohne Preis Ablehnung; gate(): pay → payment_required (Betrag, Guthaben, Fehlbetrag), ok → charge(); danach materialise(..., 'order', false) im HINZUFÜGE-Modus und syncCoreRouteAccess()
upsell.orderfeaturequoteFeature(), gleiche Deckungsprüfung; addMeteredOrder() (source = 'order', metered); ist sie schon vorhanden, wird der abgebuchte Betrag erstattet
upsell.payDlbtbilling::payIn(..., 'testpay'): Guthaben + Rechnung + Belegentwurf

Berechtigungen

list und order: SYSTEM – für jeden angemeldeten Benutzer; index() und modal() rufen kein canAction auf. Betroffene Daten: Definitions- und Tariftabellen, feature, user_feature, subscription_credit, invoice, transaction.