Zum Hauptinhalt springen

Changelog

[3.7.2] - 2026-07-03

Hinzugefügt

  • Dedizierte rotierende Log-Dateien pro Connector-Bereich unter log/AgiqonConnector/:
    • api_<env>.log — HTTP-Aufrufe der License-API
    • oci_<env>.log — OCI-Login und Funktions-Controller
    • cxml_<env>.log — cXML-Login-Controller
    • connector_<env>.log — allgemeine Connector-Ereignisse Jede Datei rotiert mit bis zu 14 Dateien auf DEBUG-Level.
  • Typisierte Exception-Klassen für License-API-Fehler:
    • LicenseValidationException — bei 4xx-Antworten (enthält HTTP-Statuscode)
    • LicenseApiUnavailableException — bei Netzwerk- oder Verbindungsfehlern
    • OciAuthenticationException — bei fehlgeschlagener OCI-Authentifizierung
  • Ergebnis-Caching für Lizenz-Prüfungen, um bei jedem Login einen Live-HTTP-Aufruf zu vermeiden:
    • Ergebnisse werden für 10 Minuten über den Symfony cache.object gecacht
    • 24-Stunden-Stale-Fallback: Logins funktionieren weiterhin bei temporären Ausfällen der License-API
    • Cache wird bei 401/403-Antworten invalidiert, sodass ungültige Lizenzen nicht aus dem Cache ausgeliefert werden
  • Strukturiertes serverseitiges Logging im OCI-Login-Controller: Jeder Fehlerzweig (falsche Zugangsdaten, inaktives System, fehlende Felder, ungültige URL, ungültige Lizenz) wird als WARNING geloggt; erfolgreiche Logins als INFO; Fehler beim Funktions-Dispatch als ERROR.
  • Strukturiertes serverseitiges Logging im cXML-Login-Controller: gleichwertige Abdeckung aller Fehler- und Erfolgspfade.
  • Strukturiertes Logging im OciDownloadJsonController: Nicht behandelte Fehler im Download-JSON-Ablauf werden jetzt als ERROR geloggt.
  • Felder errorType und hint in der Test-Verbindung-API-Antwort zur einfacheren Diagnose von Konfigurationsproblemen durch Administratoren:
    • missing_config — Client-ID oder Client-Secret nicht gesetzt
    • network_error — License-API nicht erreichbar
    • auth_error — Zugangsdaten von der License-API abgelehnt
  • Strukturiertes serverseitiges Logging im CxmlAuthController: Alle Fehlerpfade (ungültiger/abgelaufener Auth-Key, Kunde nicht gefunden, System nicht gefunden, fehlerhaftes gespeichertes XML) werden als WARNING geloggt; erfolgreiche Auth-Flows als INFO.
  • OciUndefinedFunctionController loggt nicht unterstützte OCI-Funktionsnamen jetzt als WARNING.

Geändert

  • Alle Symfony-DI-Servicekonfigurationsdateien von XML auf YAML migriert (.xml.yaml). Plugin-Entwickler, die den Service-Container erweitern, sollten künftig das .yaml-Format verwenden.
  • Detailseite einer Übertragung wurde vom Design überarbeitet: verbessertes Layout und visuelle Struktur über alle Tabs hinweg.
  • Bei übertragenen Übertragungen können Warenkorbpositionen hinzugefügt, geändert und gelöscht werden, solange noch keine Bestellung angelegt wurde.

Behoben

  • Tote HTTP-Request-Method-Validierungsblöcke in OciLoginController und CxmlLoginController entfernt, die auf eine undefinierte Klasse (HTTPRequestMethod) verwiesen und kein return-Statement enthielten, was bei Laufzeit zu einem fatalen PHP-Fehler geführt hätte. Der OciLoginController prüft die konfigurierte HTTP-Methode des Kunden-OCI-Systems nach der Authentifizierung jetzt korrekt.
  • Veraltete Funktion utf8_encode() durch mb_convert_encoding() in CxmlDuplicateController ersetzt (seit PHP 8.2 deprecated, in PHP 9 entfernt).
  • CxmlLoginController und CxmlInspectController fangen SimpleXMLElement-Parse-Exceptions jetzt ab und geben eine saubere Fehlerantwort zurück, anstatt einen unkontrollierten 500-Fehler auszulösen.
  • Twig-Template-Pfad in CxmlInspectController von @Storefront/... auf @AgiqonConnector/... korrigiert (Template wurde zur Laufzeit nicht gefunden).
  • CxmlDuplicateController erweitert nun korrekt AbstractController statt StorefrontController; die Storefront-Basisklasse war mit dem API-Route-Scope inkompatibel.
  • OciProductService::addProductToCart() gibt jetzt den neu berechneten Warenkorb von CartService::add() zurück, damit Preise nach dem Hinzufügen eines Artikels stets aktuell sind.
  • OciCustomerService::deleteOldTempCustomers() filtert nicht mehr nach languageId; temporäre Kunden aus allen Sprachkontexten werden jetzt korrekt bereinigt.
  • URL-Dekodierung in CxmlLoginController auf html_entity_decode() vereinheitlicht, um alle HTML-Entities (nicht nur &amp;) zu behandeln.
  • ConnectorTransmissionController::updateCart() und CxmlDuplicateController::duplicateSystem() validieren die übergebene ID jetzt als gültige UUID, bevor DAL-Queries ausgeführt werden, um ungültige Eingaben von der Datenbankschicht fernzuhalten.
  • OciCustomerService und OciProductService setzen bei Einzeltreffer-Queries nun Criteria::setLimit(1), um unnötige Datenbankzeilen zu vermeiden.

Refactored

  • ConnectorResponseGenerator zur abstrakten Klasse erhoben; die gemeinsamen Methoden resolveDataFieldValue() und getConfigKey() wurden aus OciConnectorResponseGenerator und CxmlConnectorResponseGenerator extrahiert, um Duplikate zu vermeiden.
  • Credential-Prüfung im OCI-Login-Controller in eine explizite Variable $credentialsPresent ausgelagert, um die Lesbarkeit zu verbessern.

[3.7.1] - 2026-06-23

Hinzugefügt

  • Route-Name-Konstanten für alle Controller und Routen hinzugefügt, um die Verwendung in Twig-Templates und Controllern zu vereinfachen.
  • Neue Twig-Block-Erweiterungen in Twig-Templates für einfachere Anpassung hinzugefügt.

Geändert

  • Der No-Frame-Login funktioniert jetzt mit der neuen Connector-Version.

[3.7.0]

Hinzugefügt

  • Vollständige architektonische Neuentwicklung des Plugins (Version 3.x-Reihe).
  • OCI- und cXML-Protokolllogik aus Storefront-/Checkout-Klassen in eine dedizierte Connector-Domänenschicht verlagert.
  • Jede OCI-Funktion (DETAIL, VALIDATE, SOURCING, BACKGROUND_SEARCH, DOWNLOADJSON, QUANTITYCHECK) besitzt nun einen eigenen Controller.
  • Jeder cXML-Übertragungstyp (Inspect, TransferCart, TransferDirect) besitzt nun einen eigenen Controller.
  • Versandmethoden-Erweiterung, um Versandmethoden direkt in der Shopware-Versandmethoden-Administration als OCI/cXML-kompatibel zu markieren.
  • Einheitliches Administrationsmodul: OCI- und cXML-Systeme werden jetzt in einem einzigen konsolidierten Plugin-Modul mit verbesserter Navigation und ACL-Unterstützung verwaltet.
  • Rollenbasierte Zugriffskontrolle (ACL) für alle Connector-Administrationsansichten.
  • Neues DataField-System: ein typisiertes, registry-basiertes Mapping-Layer für Produkt-, Bestell-, Positionsdaten, Versand-, Kontext- und Systemfelder. Eigene Felder können ohne manuelle Konfiguration über den Symfony-Service-Container registriert werden.
  • Neues Übertragungsmanagement in der Administration: eine Listenansicht und eine Detailansicht für alle Connector-Übertragungen, inklusive Statusverfolgung (offen, Bestellung erstellt, übertragen, geschlossen, storniert).
  • Übertragungen erhalten nun einen eigenen Nummernkreis für eindeutige Übertragungsnummern.
  • Übertragungskunden werden pro Übertragung erfasst, um nachzuverfolgen, welcher Kunde angemeldet war.
  • Dashboard in der Administration mit Übertragungsstatistiken und wichtigen Kennzahlen.
  • Der Übertragungsmodus kann pro System konfiguriert werden: „manuell" (Übertragung wird vom Benutzer ausgelöst) oder „automatisch" (Übertragung erfolgt automatisch beim Abmelden).
  • Warenkorb-Payload und aktive Regelkennungen werden zur Nachvollziehbarkeit an der Übertragung gespeichert.
  • Zahlungsmethode und Versandmethode können jetzt pro OCI- und cXML-System konfiguriert werden. Ist keine Methode konfiguriert, werden die zuletzt verwendeten Methoden des Kunden automatisch angewendet.
  • Neue Bestell-Einstellungskarte in der cXML-Systemdetailansicht hinzugefügt.

Geändert

  • Die Sitzung ist jetzt ein unveränderliches Wertobjekt (ConnectorSession), das von OCI und cXML gemeinsam genutzt wird und die veränderliche OciSession-Entität ersetzt.
  • Mindest-PHP-Version auf 8.2 angehoben.

[2.2.3]

Hinzugefügt

  • Die cXML-Post-URL dekodiert jetzt die Abfrageparameter.

[2.0.2]

Behoben

  • Fehler behoben, wodurch keine Systeme mehr erstellt werden konnten
  • Fehler behoben, wo im Punchout Level 2 die direkte Produktübertragung nicht funktioniert hat

[2.0.1]

Hinzugefügt

  • Anzeige der Login-URL in der OCI- und cXML-Systemkonfiguration
  • Neue Login-Test-Funktionalität für OCI-Systeme

Behoben

  • Fehler beim cXML-Inspect bei nicht vorhandener Session behoben

[2.0.0]

Hinzugefügt

  • Unterstützung für Shopware 6.7
  • Kompatibilität mit neuen Strukturen in Shopware 6.7

[1.2.1]

Behoben

  • Fehler beim Login ohne Frame behoben.

[1.2.0]

Hinzugefügt

  • Unterstützung für ältere Shopware 6.5 Versionen.

[1.1.2]

Behoben

  • Fehler innerhalb der Migrationsreihenfolge behoben.

[1.1.1]

Behoben

  • Fehler mit cXML-Sitzung und Konfigurationseigenschaft behoben.

[1.1.0]

Geändert

  • X-Frame-Options für neuere Shopware-Versionen korrigiert.

Hinzugefügt

  • Neue Option für OCI-Systeme zur Anzeige des 'Ihr Konto'-Buttons.

[1.0.4]

Behoben

  • Fehler beim Token-Login behoben.

[1.0.3]

Behoben

  • Einheitenbehandlung korrigiert.
  • Entfernung der Gast-Sitzung korrigiert.

[1.0.2]

Geändert

  • Erforderliche Composer-Komponenten und Versionen angepasst.

[1.0.1]

Geändert

  • Kompatibilität mit Shopware 6.6.7.1.

[1.0.0]

Hinzugefügt

  • Erstveröffentlichung.