Voertuigdata & fitment¶
De webshop koppelt banden en velgen aan specifieke voertuigen. De voertuigdata komt van de externe
dienst DriveRight (SOAP-webservice). Intern beheert de shop een eigen voertuigstructuur in de
vehicle_*-databases, die synchroon gehouden wordt met DriveRight-data.
Voertuigstructuur¶
De interne voertuighiërarchie ziet er als volgt uit:
Merk (VehicleBrand / Tf_Manufacturer)
└── Model (VehicleModel / Tf_Model)
└── Motor/uitvoering (VehicleMotor / Tf_Vehicle — heeft KType)
└── Chassis (VehicleChassis / Tf_Chassis — heeft bandenmaat + velmaat)
└── Upsteps (VehicleChassisUpstep — grotere maat aanbevelingen)
| Klasse | Bestand | Rol |
|---|---|---|
VehicleBrand |
_core/model/classes/atx/vehicles/VehicleBrand.php |
Autofabrikant |
VehicleModel |
_core/model/classes/atx/vehicles/VehicleModel.php |
Modelreeks |
VehicleMotor |
_core/model/classes/atx/vehicles/VehicleMotor.php |
Uitvoering/generatie, bevat KType-referentie |
VehicleChassis |
_core/model/classes/atx/vehicles/VehicleChassis.php |
Chassisversie met exacte band- en velgmaten |
VehicleChassisUpstep |
_core/model/classes/atx/vehicles/VehicleChassisUpstep.php |
Groter maat-alternatief (upstep) |
De DriveRight-tegenhangers (Tf_*) staan in
_core/model/classes/atx/vehicles/driveright/.
DriveRight-integratie¶
DriveRight levert voertuigdata via een SOAP-webservice (SOAP 1.2). De client zit in
src/Atraxion/DriveRight/Client.php:
// src/Atraxion/DriveRight/Client.php:15
final class Client
{
private \SoapClient $soapClient;
public function __construct(...) { ... }
// Alle SOAP-aanroepen verlopen via __call() magic (Client.php:33).
// De namen GetManufacturers, GetModels, GetVehicles,
// GetVehicleDataFromKType, GetUpstepWheelsByChassisID en GetGlobalVRM
// zijn SOAP-operatienamen, geen gedefinieerde PHP-methoden.
}
Authenticatie verloopt via gebruikersnaam/wachtwoord die per aanroep als parameter meegaan.
Voor VRM-lookups (GetGlobalVRM) worden aparte inloggegevens gebruikt, opgehaald via de
config()-functie (src/Atraxion/DriveRight/Client.php:39–40).
Synchronisatie-commands¶
Drie Symfony Console-commands in src/Atraxion/DriveRight/Command/ voeren de synchronisatie uit:
| Command | Naam | Wat het doet |
|---|---|---|
ManufacturersSynchroniseCommand |
driveright:manufacturers:synchronise |
Merken synchroniseren |
ModelsSynchroniseCommand |
driveright:models:synchronise |
Modellen synchroniseren |
VehiclesSynchroniseCommand |
driveright:vehicles:synchronise |
Uitvoeringen + chassis synchroniseren |
De volledige import-orchestratie draait ook via de backoffice-controller
UpdatingDriveRightController
(_admin/controller/classes/atx/vehicles/driveright/UpdatingDriveRightController.php).
Dit synchroniseert in 14 stappen (UpdatingDriveRightController.php:60–75):
getManufacturers → getModels → getVehicles → getUpstepWheelsByChassisID →
getAllWheelsUpstep → emailChanges → updateBrands → updateModels → updateChassis →
updateChassisUpsteps → updateMotors → updateMotorOptions → updateCombiWheelVehicle →
updateThreedModelLinks.
KType¶
Elk Tf_Vehicle-object heeft een KType (TecDoc-voertuignummer, uniek per uitvoering).
Het KType is de sleutel waarmee detailgegevens (GetVehicleDataFromKtype) worden opgehaald
(_core/model/classes/atx/vehicles/driveright/Tf_Vehicle.php:9 en :126).
De mapping van DriveRight-velden naar het interne model gebeurt via fromDriveRight()
(Tf_Vehicle.php:565–570).
Fitment-criteria op chassis¶
De VehicleChassis-entiteit bevat alle maatgegevens die bepalen welke banden en velgen passen:
| Veld | Betekenis |
|---|---|
getFrontTyreSize() / getRearTyreSize() |
Berekende getter-methoden die een TyreSize value-object samenstellen uit de opgeslagen velden TyreWidth, TyreSeries en TyreInch. Er zijn geen DB-kolommen met deze namen (VehicleChassis.php:725, :903). |
RimHoles / RimHolesR |
Boutpatroon voor- en achteras (PCD) |
RimCtr / RimCtrR |
Centergat voor- en achteras |
MaxETFront / MinETFront |
Min./max. ET (insteek) vooras |
MaxETRear / MinETRear |
Min./max. ET achteras |
MaxRimWidthFront |
Maximale velgbreedte vooras |
MaxWheelLoad |
Maximale wielbelasting |
Zie _core/model/classes/atx/vehicles/VehicleChassis.php:177–262.
Een chassis is gelinkt aan DriveRight-data via de velden Linked en LinkID
(VehicleChassis.php:377–382).
Velgkoppeling en recalculateWheels¶
Wanneer relevante maatgegevens op een chassis wijzigen (boutpatroon, centergat, velgmaat, ET,
wielbelasting), zet de MySQL-trigger recalculate_wheels het veld recalculateWheels = 1 op het
chassisrecord. De trigger is aangemaakt in migratie
_core/config/doctrine/migrations/2026/06/Version20260622095313.php.
De service AutoLinkCalculatedWheels
(src/Atraxion/Model/Vehicle/Linker/AutoLinkCalculatedWheels.php) herberekent de velgkoppelingen
voor chassis met recalculateWheels = 1. De herberekening start via recalculate() (regel 141),
dat doorverwijst naar recalculateWithIds() (regel 146). Regel 59 is de updateObjects()-aanroep
die recalculateWheels terugzet op false ná verwerking. Dit is de automatische matching van velgen aan een chassis.
flowchart TD
DR[DriveRight SOAP API] -->|GetManufacturers / GetModels\nGetVehicles / GetVehicleDataFromKType| SYNC[Sync-commands\ndriveright:manufacturers/models/vehicles:synchronise]
SYNC --> VB[VehicleBrand]
SYNC --> VM[VehicleModel]
SYNC --> VMO[VehicleMotor\nKType]
SYNC --> VC[VehicleChassis\nbandenmaat + velmaat + PCD + ET + centergat]
VC -->|wijziging boutpatroon/ET/centergat| TRG[MySQL trigger\nrecalculate_wheels]
TRG -->|recalculateWheels=1| ALW[AutoLinkCalculatedWheels]
ALW --> WV[WheelVehicle koppelingen]
VC --> TV[Tyre-fitment via VehicleChassisUpstepTyre]
Oldtimer op type-niveau¶
Het oldtimer-kenmerk wordt bijgehouden op het bandentype (TyreType), niet op het individuele
artikel. Het veld Oldtimer zit op de basisklasse Type
(_core/model/classes/atx/articles/Type.php:65), waarvan TyreType afleidt.
// _core/model/classes/atx/articles/Type.php:65
protected $Oldtimer;
Het veld in de database is article_tyre_type.Oldtimer. Het legacy-veld article.OldTimer
(op het individuele artikel) is een verouderd overblijfsel en wordt niet gebruikt voor
oldtimer-logica.
In TyreSearch is Oldtimer een zoekfilterparameter
(_core/model/classes/atx/articles/tyres/TyreSearch.php:25).
De TyreFilterService leest het oldtimer-kenmerk via $tyre->getType()->getOldtimer()
(_core/model/classes/atx/articles/TyreFilterService.php:136) — dus altijd van het type.
Voertuigselectie door de klant¶
Op de bandenzoekcategorie kan een klant optioneel een voertuig selecteren. De flow verloopt als volgt:
- Klant kiest een autocat (voertuigcategorie: personenwagen, bestelwagen, motor, …) via de
autocat-parameter. - Optioneel: klant kiest merk → model → uitvoering (motor). De uitvoering-ID (motor-ID) wordt
als
motor-parameter meegegeven. - De
TyreControllerlaadt het corresponderendeVehicleMotor-object viaVehicleMotorDAO(_core/controller/classes/atx/articles/tyres/TyreController.php:57). - De bandenmaten die horen bij het geselecteerde chassis worden gebruikt als vooringevulde filterwaarden in de zoekresultaten.
SimulatorV2View
(_core/view/classes/atx/vehicles/simulator/SimulatorV2View.php) is een backoffice-beheercomponent
voor het koppelen en beheren van voertuigafbeeldingen (upload, link, unlink, API-sleutelbeheer).
Het biedt geen klantgerichte functionaliteit en geen 3D-visualisatie voor velgen.
Voertuigcategorieën (Autocat)¶
De klasse Autocat (_core/model/classes/atx/vehicles/Autocat.php) groepeert voertuigen per
type (personenwagen, bestelwagen, motor, …). Autocats worden gebruikt als primaire filterdimensie
bij het zoeken op banden en velgen.
PCD-wijzigingsmelding¶
SendPCDChangesMail (src/Atraxion/DriveRight/SendPCDChangesMail.php) stuurt een notificatiemail
intern aan het Atraxion-team wanneer er bestaande afwijkingen worden gedetecteerd tussen de
live DriveRight-data en de ATX-database voor boutpatroon (PCD), centergat of wielbelasting.
De mail wordt verstuurd vóór de import (importDriveRightChassis()), niet erna
(UpdatingDriveRightController.php:562). Het gaat dus om aanstaande verschillen die nog
geïmporteerd zullen worden, niet om post-import wijzigingen. De e-mail bevat een Excel-bijlage
(chassis-report.xlsx) met de gedetecteerde afwijkingen.
Zie ook¶
- Productcatalogus — hoe banden en velgen gecategoriseerd zijn
- Technisch: Integraties — DriveRight als externe integratie
- Technisch: Datamodel & databases —
vehicle_*-databases - Technisch: Crons & queue — synchronisatiecrons voor voertuigdata