{% set stammdaten = vehicle.getStammdaten.getVehicleBaseData %}
{% set kosten = vehicle.getKosten.getCosts %}
{% set aussen = vehicle.getAussen.getExterieur %}
{% set innen = vehicle.getInnen.getInterieur %}
{% set finanzierung = vehicle.getFinanzierung.getFinancing %}
{% set leasing = vehicle.getLeasing.getleasing %}
{# API-managed vehicles (VehicleIngestBundle) can have NO Leasing/Financing objectbrick at all,
unlike the legacy CSV import which always scaffolded (empty) bricks. Guard every rate access. #}
{% set hasLeasingRate = leasing is not null and leasing.getMonatlicheRate() %}
{% set hasFinanzierungRate = finanzierung is not null and finanzierung.getMonatlicheRate() %}
{% set technischeDaten = vehicle.getTechnischeDaten.getTechnicalData %}
{% set technischeDatenMore = vehicle.getTechnischeDatenMore.getTechnicalDataMore %}
{% set financingLegalNotice = pimcore_textarea('car-detail-financing-legal-notice').isEmpty() ? '' : pimcore_textarea('car-detail-financing-legal-notice').getData() %}
{% set leasingLegalNotice = pimcore_textarea('car-detail-leasing-legal-notice').isEmpty() ? '' : pimcore_textarea('car-detail-leasing-legal-notice').getData() %}
{% set addressBank = pimcore_textarea('car-detail-address-financing-leasing').isEmpty() ? '' : pimcore_textarea('car-detail-address-financing-leasing').getData() %}
{% set show_car_available_from = pimcore_select('car-detail-available-from').getData() %}
{% set fuelType = technischeDaten.kraftstoffart|trim|lower %}
{% set fuelTypeLabel = fuelType == 'elektro' ? 'Energieverbrauch' : 'Kraftstoffverbrauch' %}
<div class="vehicle-area pt-0 pt-lg-5">
<div class="row">
<div class="col-lg-8">
<div class="slider-container shadow mb-3">
{% set car_photos = vehicle.images %}
<div class="slider">
<div class="slides">
{% if stammdaten.getLieferdatum and show_car_available_from %}
{% set currentDate = "now"|date('d-m-y') %}
{% if stammdaten.getLieferdatum | date('d-m-y') > currentDate %}
<span
class="notify-badge detail">Verfügbar ab {{ stammdaten.getLieferdatum | date('d.m.y') }}</span>
{% endif %}
{% endif %}
<div class="swiper car-detail-image-swiper">
<div class="swiper-wrapper">
{% if car_photos|length != 0 %}
{% for i in 1 .. car_photos|length %}
<img
class="swiper-slide"
src="{{ car_photos[i - 1].thumbnail({'width': 920, 'format': 'jpeg', 'quality': 60,}) }}"
alt="{{ stammdaten.getMarke }} {{ stammdaten.getModellbasis }} (Bild {{ i }}/{{ car_photos|length }})">
{% endfor %}
{% else %}
{% set src = '/Gebrauchte/Bilder/3301020_FBUN2220298_1.jpeg' %}
<img src="{{ src }}" class="w-100 h-auto"
alt="{{ stammdaten.getMarke }} {{ stammdaten.getModellbasis }}">
{% endif %}
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-pagination"></div>
</div>
</div>
<div class="slider-count">
<div class="badge bg-dark d-flex align-items-center" style="--bs-bg-opacity: 0.5;">
<svg class="me-1" fill="#FFF" viewBox="0 0 16 16" width="14" height="14">
<path
d="M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1v6zM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4H2z" />
<path
d="M8 11a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm0 1a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zM3 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0z" />
</svg>
<div class="swiper-pagination"></div>
<span id="car-detail-selected-image">1</span>/<span>{{ car_photos|length }}</span>
</div>
</div>
</div>
</div>
<div class="bg-light shadow px-3 pt-3 pb-4 px-md-5 py-md-4 mb-lg-3 d-lg-none">
<div class="row">
<div class="col-6">
<h2 class="mb-0">{{ stammdaten.getMarke }}</h2>
{{ stammdaten.getModellbasis }}
</div>
<div class="col-6 text-end">
<span class="h2 fw-bold">{{ kosten.getPreis|number_format(2, ',', '.') }}€</span>
<div class="f-12 d-block small text-muted">
{% if stammdaten.getMwst == 0 %}
MwSt. ist ausweisbar
{% else %}
MwSt. nicht ausweisbar
{% endif %}
</div>
{% if kosten.rotstiftpreis > kosten.getPreis() %}
<div class="mx-auto text-center mt-2">
<span
class="text-decoration-line-through d-block">{{ kosten.rotstiftpreis|number_format(2, ',', '.') }}€</span>
<span class="badge rounded-pill bg-danger">Kürzlich reduziert</span>
</div>
{% endif %}
</div>
<div class="col-12 px-4 pt-4 text-center">
<button class="btn btn-primary" data-action="initiate-contact">Fahrzeug anfragen</button>
</div>
</div>
</div>
<div class="bg-white shadow p-3 px-md-5 py-md-4 mb-lg-3">
<h3 class="fw-bold">Übersicht</h3>
<div class="row mx-2 mx-md-4">
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Modelljahr</small>
<p>{{ stammdaten.modelljahr }}</p>
</div>
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Erstzulassung</small>
<p>{{ stammdaten.ez }}</p>
</div>
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Kraftstoff</small>
<p>{{ technischeDaten.kraftstoffart }}</p>
</div>
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Kilometerstand</small>
<p>{{ stammdaten.kilometer|number_format(0, ',', '.') }} km</p>
</div>
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Leistung</small>
<p>{{ technischeDaten.leistung }} KW</p>
</div>
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Vorbesitzer</small>
<p>{{ stammdaten.vorbesitzer > 0 ? stammdaten.vorbesitzer : '-/-' }}</p>
</div>
{% if stammdaten.getLieferdatum and show_car_available_from %}
{% set currentDate = "now"|date('d-m-y') %}
{% if stammdaten.getLieferdatum | date('d-m-y') > currentDate %}
<span
class="notify-badge detail">Verfügbar ab {{ stammdaten.getLieferdatum | date('d.m.y') }}</span>
{% endif %}
{% endif %}
{% if stammdaten.getLieferdatum %}
{% set currentDate = "now"|date('d-m-y') %}
{% if stammdaten.getLieferdatum | date('d-m-y') > currentDate %}
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Verfügbarkeit</small>
<p>{{ stammdaten.getLieferdatum }}</p>
</div>
{% else %}
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Neufahrzeug</small>
<p>{% if stammdaten.getNeufahrzeug == '0' %} Nein {% else %} Ja {% endif %}</p>
</div>
{% endif %}
{% endif %}
<div class="col-6 col-md-4 border-bottom mb-3">
<small class="text-muted">Getriebe</small>
<p>{{ technischeDaten.getriebeart }}</p>
</div>
<div class="col-12 col-md-4 border-bottom mb-3">
<small class="text-muted">Interne-Nr.</small>
<p>{{ stammdaten.internenummer }}</p>
</div>
</div>
</div>
<div class="bg-white shadow p-3 px-md-5 py-md-4 mb-lg-3">
<h3 class="mb-5">Fahrzeugspezifikationen</h3>
<div class="row mx-2 mx-md-3">
{% if technischeDaten.umweltplakette %}
<div class="col-6 col-md-3 mb-3">
{% set umweltplaketten = {
1 : '-/-' ,
2 : 'Rot',
3 : 'Gelb',
4 : 'Grün'
} %}
<small class="text-muted">Umweltplakette</small>
<p>{{ umweltplaketten[technischeDaten.umweltplakette] }}</p>
</div>
{% endif %}
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Schadstoff</small>
<p>Euro {{ technischeDaten.schadstoff }}</p>
</div>
<div class="col-6 col-md-3 mb-3">
{% if fuelType == 'elektro' %}
<span class="text-muted">{{ fuelTypeLabel }}
kombiniert*</span>
<p>{{ stammdaten.getKombinierterStromverbrauchWltp > 0 ? stammdaten.getKombinierterStromverbrauchWltp|number_format(1, ',') ~ ' kWh/100km' : '-/-' }}</p>
{% elseif fuelType == 'hybrid' %}
<span class="text-muted">{{ fuelTypeLabel }}
kombiniert*</span>
<p>
{{ technischeDaten.gewichteterKombinierterKraftstoffverbrauchWLTP > 0 ? technischeDaten.gewichteterKombinierterKraftstoffverbrauchWLTP ~ ' l/100km' : '-/-' }}
<br>
</p>
{% else %}
<span class="text-muted">{{ fuelTypeLabel }}
kombiniert*</span>
<p>{{ technischeDaten.getWLTPKombiniert > 0 ? technischeDaten.getWLTPKombiniert ~ ' l/100km' : '-/-' }}</p>
{% endif %}
</div>
{% if fuelType == 'hybrid' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Stromverbrauch
kombiniert*</span>
<p>{{ stammdaten.getKombinierterStromverbrauchWltp > 0 ? stammdaten.getKombinierterStromverbrauchWltp|number_format(1, ',') ~ ' kWh/100km' : '-/-' }}</p>
</div>
{% endif %}
{% if fuelType == 'elektro' %}
{% if technischeDatenMore and technischeDatenMore.stromverbrauchInnenstadtWLTP > 0 and fuelType == 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">
{{ fuelTypeLabel }}
Innenstadt*</span>
<p>{{ technischeDatenMore.stromverbrauchInnenstadtWLTP > 0 ? technischeDatenMore.stromverbrauchInnenstadtWLTP ~ ' kWh/100km' : '-/-' }} (WLTP)</p>
</div>
{% endif %}
{% if technischeDatenMore and technischeDatenMore.stromverbrauchStadtrandWLTP > 0 and fuelType == 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">
{{ fuelTypeLabel }}
Stadtrand*</span>
<p>{{ technischeDatenMore.stromverbrauchStadtrandWLTP > 0 ? technischeDatenMore.stromverbrauchStadtrandWLTP ~ ' kWh/100km' : '-/-' }} (WLTP)</p>
</div>
{% endif %}
{% if technischeDatenMore and technischeDatenMore.stromverbrauchLandstrasseWLTP > 0 and fuelType == 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">
{{ fuelTypeLabel }}
Landstraße*</span>
<p>{{ technischeDatenMore.stromverbrauchLandstrasseWLTP > 0 ? technischeDatenMore.stromverbrauchLandstrasseWLTP ~ ' kWh/100km' : '-/-' }} (WLTP)</p>
</div>
{% endif %}
{% if technischeDatenMore and technischeDatenMore.stromverbrauchAutobahnWLTP > 0 and fuelType == 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">
{{ fuelTypeLabel }}
Autobahn*</span>
<p>{{ technischeDatenMore.stromverbrauchAutobahnWLTP > 0 ? technischeDatenMore.stromverbrauchAutobahnWLTP ~ ' kWh/100km' : '-/-' }} (WLTP)</p>
</div>
{% endif %}
{% endif %}
{% if technischeDaten.wltpKraftstoffInnenstadt > 0 and fuelType != 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">
{{ fuelTypeLabel }}
Innerorts*</span>
<p>{{ technischeDaten.wltpKraftstoffInnenstadt > 0 ? technischeDaten.wltpKraftstoffInnenstadt ~ ' l/100km' : '-/-' }}</p>
</div>
{% endif %}
{% if technischeDaten.wltpKraftstoffStadtrand > 0 and fuelType != 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Ø
{{ fuelTypeLabel }}
Ausserorts*</span>
<p>{{ technischeDaten.wltpKraftstoffStadtrand > 0 ? technischeDaten.wltpKraftstoffStadtrand ~ ' l/100km' : '-/-' }}</p>
</div>
{% endif %}
{% if technischeDaten.wltpKraftstoffAutobahn > 0 and fuelType != 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Ø
{{ fuelTypeLabel }}
Autobahn*</span>
<p>{{ technischeDaten.wltpKraftstoffAutobahn > 0 ? technischeDaten.wltpKraftstoffAutobahn ~ ' l/100km' : '-/-' }}</p>
</div>
{% endif %}
{% if technischeDaten.wltpKraftstoffLandstrasse > 0 and fuelType != 'elektro' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Ø
{{ fuelTypeLabel }}
Landstraße*</span>
<p>{{ technischeDaten.wltpKraftstoffLandstrasse > 0 ? technischeDaten.wltpKraftstoffLandstrasse ~ ' l/100km' : '-/-' }}</p>
</div>
{% endif %}
{% if technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie > 0 and fuelType == 'hybrid' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">{{ fuelTypeLabel }}
kombiniert bei entladener Batterie*</span>
<p>{{ technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie > 0 ? technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie ~ ' l/100km' : '-/-' }}</p>
</div>
{% endif %}
{# {% if technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie > 0 and fuelType == 'hybrid' %}#}
{# <div class="col-6 col-md-3 mb-3">#}
{# <span class="text-muted">{{ fuelTypeLabel }}#}
{# Landstraße bei entladener Batterie*</span>#}
{# <p>{{ technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie > 0 ? technischeDaten.kombinierterKraftstoffverbrauchEntlBatterie ~ ' l/100km' : '-/-' }}</p>#}
{# </div>#}
{# {% endif %}#}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">CO₂-Klasse*</span>
{% if fuelType == 'hybrid' %}
<p> {{ technischeDaten.energieeffizienzklasseGewichtetKombiniert ? technischeDaten.energieeffizienzklasseGewichtetKombiniert : '' }}</p>
{% else %}
<p> {{ technischeDaten.energieEffizienzKlasse ? technischeDaten.energieEffizienzKlasse : '' }}</p>
{% endif %}
</div>
{% if fuelType == 'hybrid' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">CO₂-Klasse bei entladener Batterie:*</span>
<p> {{ technischeDaten.energieeffizienzklasseEntladeneBatterie ? technischeDaten.energieeffizienzklasseEntladeneBatterie : '' }}</p>
</div>
{% endif %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Ø CO₂ Emissionen kombiniert*</span>
{% if technischeDaten.getEmissionWltp %}
<p>{{ fuelType == 'elektro' ? 0 ~ 'g/km' : technischeDaten.getEmissionWltp > 0 ? technischeDaten.getEmissionWltp ~ ' g/km' : '-/-' }}
(WLTP)</p>
{% else %}
<p>{{ fuelType == 'elektro' ? 0 ~ 'g/km' : technischeDaten.emission > 0 ? technischeDaten.emission ~ ' g/km' : '-/-' }}
(WLTP)</p>
{% endif %}
</div>
{% if fuelType == 'hybrid' %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Ø CO₂ Emissionen bei entladener Batterie*</span>
<p>{{ technischeDaten.emissionenEntladeneBatterie >= 0 ? technischeDaten.emissionenEntladeneBatterie ~ ' g/km' : '-/-' }}</p>
</div>
{% endif %}
{% if (fuelType == 'elektro' or fuelType == 'hybrid') and technischeDaten.batteriekapazitT > 0 %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Batteriekapazität</span>
<p>{{ technischeDaten.batteriekapazitT ~ ' kWh' }}</p>
</div>
{% endif %}
{% if (fuelType == 'elektro' or fuelType == 'hybrid') and technischeDaten.elektromotorReichweiteBeiMinNachWLTP > 0 %}
<div class="col-6 col-md-3 mb-3">
<span class="text-muted">Elektrische Reichweite kombiniert*</span>
<p>{{ technischeDaten.elektromotorReichweiteBeiMinNachWLTP ~ ' km' }}</p>
</div>
{% endif %}
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Türen</small>
<p>{{ stammdaten.getTueren() > 0 ? stammdaten.getTueren(): '-/-' }}</p>
</div>
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Leergewicht</small>
<p>{{ technischeDaten.getLeergewicht() > 0 ? technischeDaten.getLeergewicht() ~ ' kg' : '-/-' }}</p>
</div>
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Heckantrieb</small>
<p>{{ technischeDaten.getHeckantrieb() ? 'Ja' : 'Nein' }}</p>
</div>
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Frontantrieb</small>
<p>{{ technischeDaten.getFrontantrieb() ? 'Ja' : 'Nein' }}</p>
</div>
<div class="col-6 col-md-3 mb-3">
<small class="text-muted">Sitze</small>
<p>{{ innen.getSitze() > 0 ? innen.getSitze() : '-/-' }}</p>
</div>
</div>
</div>
<div class="bg-white shadow p-3 px-md-5 py-md-4 mb-lg-3">
<h3 class="fw-bold">Ausstattung</h3>
<details class="mb-2" open>
<summary class="border-bottom pb-2">Komfort</summary>
<small>
<ul>
{% if innen.getStandheizung() %}
<li>Standheizung</li>{% endif %}
{% if innen.getFensterheber() %}
<li>Fensterheber</li>{% endif %}
{% if innen.getTempomat() %}
<li>Tempomat</li>{% endif %}
{% if innen.getElektrischeSitzeinstellung() %}
<li>Elektrische Sitzeinstellung</li>{% endif %}
{% if innen.getHeadUpDisplay() %}
<li>Head-Up Display</li>{% endif %}
{% if innen.getMultifunktionslenkrad() %}
<li>Multifunktionslenkrad</li>{% endif %}
{% if innen.getLichtsensor() %}
<li>Lichtsensor</li>{% endif %}
{% if innen.getKurvenlicht() %}
<li>Kurvenlicht</li>{% endif %}
{% if aussen.getKurvenlichtAdaptiv() %}
<li>Adaptives Kurvenlicht</li>{% endif %}
{% if innen.getFernlichtassistent() %}
<li>Fernlichtassistent</li>{% endif %}
{% if innen.getSitzheizung() %}
<li>Sitzheizung vorne</li>{% endif %}
{% if innen.getSitzheizungHinten() %}
<li>Sitzheizung hinten</li>{% endif %}
{% if innen.getBeheizbaresLenkrad() %}
<li>Beheizbares Lenkrad</li>{% endif %}
{% if innen.getSchaltwippen() %}
<li>Schaltwippen</li>{% endif %}
</ul>
</small>
</details>
<details class="mb-2">
<summary class="border-bottom pb-2">Sicherheit</summary>
<small>
<ul>
{% if innen.getAirbag() %}
<li>Airbag</li>{% endif %}
{% if innen.getIsofixBeifahrer() %}
<li>Isofix Beifahrer</li>{% endif %}
{% if innen.getInnenspiegelAutomatischAbbl() %}
<li>Automatisch abblendender Innenspiegel</li>{% endif %}
{% if aussen.getServolenkung() %}
<li>Servolenkung</li>{% endif %}
{% if aussen.getEsp() %}
<li>ESP</li>{% endif %}
{% if aussen.getAbs() %}
<li>ABS</li>{% endif %}
{% if aussen.getWegfahrsperre() %}
<li>Wegfahrsperre</li>{% endif %}
{% if aussen.getLedScheinwerfer() %}
<li>LED-Scheinwerfer</li>{% endif %}
{% if aussen.getAlarmanlage() %}
<li>Alarmanlage</li>{% endif %}
{% if aussen.getNebelscheinwerfer() %}
<li>Nebelscheinwerfer</li>{% endif %}
{% if aussen.getZentralverriegelung() %}
<li>Zentralverriegelung</li>{% endif %}
{% if aussen.getTagfahrlicht() %}
<li>Tagfahrlicht</li>{% endif %}
</ul>
</small>
</details>
<details class="mb-2">
<summary class="border-bottom pb-2">Innenausstattung</summary>
<small>
<ul>
{% if innen.getSportpaket() %}
<li>Sportpaket</li>{% endif %}
{% if innen.getSportpaket() %}
<li>Sportpaket</li>{% endif %}
{% if innen.getKindersitzbefestigung() %}
<li>Kindersitzbefestigung</li>{% endif %}
{% if innen.getAmbientesLicht() %}
<li>Ambientebeleuchtung</li>{% endif %}
{% if innen.getRaucherpaket() %}
<li>Raucherpaket</li>{% endif %}
{% if innen.getWinterpaket() %}
<li>Winterpaket</li>{% endif %}
{% if innen.getGepCkraumabtrennung() %}
<li>Gepäckraumabtrennung</li>{% endif %}
{% if innen.getLederlenkrad() %}
<li>Lederlenkrad</li>{% endif %}
{% if innen.getLordosenstTze() %}
<li>Lordosenstütze</li>{% endif %}
</ul>
</small>
</details>
<details class="mb-2">
<summary class="border-bottom pb-2">Exterior</summary>
<small>
<ul>
{% if aussen.getFarbe() %}
<li>{{ aussen.getFarbe() }}</li>{% endif %}
{% if aussen.getLeichtmetallfelgen() %}
<li>Leichtmetallfelgen</li>{% endif %}
{% if aussen.getAnhaengerkupplung() %}
<li>Anhängerkupplung</li>{% endif %}
{% if aussen.getSchiebedach() %}
<li>Schiebedach</li>{% endif %}
{% if aussen.getScheinwerferreinigungsanlage() %}
<li>Scheinwerferreinigungsanlage</li>{% endif %}
{% if aussen.getElektrischeHeckklappe() %}
<li>Elektrische Heckklappe</li>{% endif %}
{% if aussen.getDachtrGer() %}
<li>Dachträger</li>{% endif %}
</ul>
</small>
</details>
<details class="mb-2">
<summary class="border-bottom pb-2">Multimedia</summary>
<small>
<ul>
{% if innen.getBluetooth() %}
<li>Bluetooth</li>{% endif %}
{% if innen.getCdSpieler() %}
<li>CD-Spieler</li>{% endif %}
{% if innen.getBordcomputer() %}
<li>Bordcomputer</li>{% endif %}
{% if innen.getHeadUpDisplay() %}
<li>Head-Up Display</li>{% endif %}
{% if innen.getFreisprecheinrichtung() %}
<li>Freisprecheinrichtung</li>{% endif %}
{% if innen.getAndroidAuto() %}
<li>Android Auto</li>{% endif %}
{% if innen.getAppleCarplay() %}
<li>Apple Carplay</li>{% endif %}
{% if innen.getInduktionsladenSmartphones() %}
<li>Android Auto</li>{% endif %}
{% if innen.getWLan() %}
<li>W-LAN</li>{% endif %}
{% if innen.getSoundsystem() %}
<li>Soundsystem</li>{% endif %}
{% if innen.getSprachsteuerung() %}
<li>Sprachsteuerung</li>{% endif %}
{% if innen.getTouchscreen() %}
<li>Touchscreen</li>{% endif %}
{% if innen.getDabRadio() %}
<li>DAB-Radio</li>{% endif %}
{% if innen.getUsb() %}
<li>USB</li>{% endif %}
</ul>
</small>
</details>
{% set foo = stammdaten.bemerkung|split('<b>') %}
{% if 'Sonderausstattung' in stammdaten.bemerkung %}
<details class="mb-2">
<summary class="border-bottom pb-2">Sonderausstattung</summary>
<small>
{% for key, value in foo %}
{% if 'Sonderausstattung' in foo[key] %}
{{ foo[key] | replace({'Sonderausstattung': '', 'Sonderausstattung ab Werk': '', '<hr>': '', '<br>': ''}) | raw }}
{% endif %}
{% endfor %}
</small>
</details>
{% endif %}
{% if 'Serienaustattung' in stammdaten.bemerkung %}
<details class="mb-2">
<summary class="border-bottom pb-2">Serienaustattung</summary>
<small>
{% for key, value in foo %}
{% if 'Serienaustattung' in foo[key] %}
{{ foo[key] | replace({'Serienaustattung': '', '<br><br>': '<br>'}) | raw }}
{% endif %}
{% endfor %}
</small>
</details>
{% endif %}
</div>
{% if fuelType == 'hybrid' %}
<div class="bg-white shadow p-3 px-md-5 py-md-4 mb-lg-3">
<h3 class="fw-bold">Energiebilanz</h3>
<h4 class="mb-0">Energieeffizienzklasse:
{{ technischeDaten.energieeffizienzklasseGewichtetKombiniert }}</h4>
<h4>Energieeffizienzklasse bei entladener Batterie:
{{ technischeDaten.energieeffizienzklasseEntladeneBatterie }}</h4>
Auf Grundlage der gemessenen CO<sub>2</sub>-Emission unter Berücksichtigung der Masse des Fahrzeugs
ermittelt.
<table class="energy-balance-table my-3">
<thead>
<tr>
<th style="width: 50%;"></th>
<th style="width: 25%;">Gewichtet Kombiniert</th>
<th style="width: 25%;" class="border-left">Bei entladener Batterie</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul class="list-unstyled co2-efficiency hybrid efficiency-{{ technischeDaten.energieeffizienzklasseGewichtetKombiniert | lower }}">
<li>
<span>A</span>
</li>
<li>
<span>B</span>
</li>
<li>
<span>C</span>
</li>
<li>
<span>D</span>
</li>
<li>
<span>E</span>
</li>
<li>
<span>F</span>
</li>
<li>
<span>G</span>
</li>
</ul>
</td>
<td>
<ul class="list-unstyled efficiency-hybrid">
{% set efficiencyClass = technischeDaten.energieeffizienzklasseGewichtetKombiniert %}
{% for grade in ['A', 'B', 'C', 'D', 'E', 'F', 'G'] %}
<li class="efficiency-hybrid-{{ efficiencyClass | lower }} {% if grade != efficiencyClass %}hidden{% endif %}">
<span>{{ grade }}</span>
</li>
{% endfor %}
</ul>
</td>
<td class="border-left">
<ul class="list-unstyled efficiency-hybrid">
{% set efficiencyClass = technischeDaten.energieeffizienzklasseEntladeneBatterie %}
{% for grade in ['A', 'B', 'C', 'D', 'E', 'F', 'G'] %}
<li class="efficiency-hybrid-{{ efficiencyClass | lower }} {% if grade != efficiencyClass %}hidden{% endif %}">
<span>{{ grade }}</span>
</li>
{% endfor %}
</ul>
</td>
</tr>
</tbody>
</table>
</div>
{% else %}
<div class="bg-white shadow p-3 px-md-5 py-md-4 mb-lg-3">
<h3 class="fw-bold">Energiebilanz</h3>
<h4>Energieeffizienzklasse:
{{ technischeDaten.energieeffizienzklasse }}
</h4>
Auf Grundlage der gemessenen CO<sub>2</sub>-
Emmision unter Berücksichtigung der Masse des Fahrzeugs ermittelt.
<ul class="my-3 list-unstyled co2-efficiency efficiency-{{ technischeDaten.energieeffizienzklasse | lower }}">
<li>
<span>A</span>
</li>
<li>
<span>B</span>
</li>
<li>
<span>C</span>
</li>
<li>
<span>D</span>
</li>
<li>
<span>E</span>
</li>
<li>
<span>F</span>
</li>
<li>
<span>G</span>
</li>
</ul>
</div>
{% endif %}
{% if hasLeasingRate or hasFinanzierungRate %}
<div class="tab-select bg-white shadow p-3 px-md-5 py-md-4 mb-3">
<input type="radio" name="tab-select" id="tab-select-leasing"
class="d-none" {% if hasLeasingRate %} checked {% endif %}>
<input type="radio" name="tab-select"
id="tab-select-finance" {% if hasLeasingRate %} class="d-none" {% else %} class="d-none single" checked {% endif %}>
<div class="tab-select-header row text-center fw-bold mb-4">
{% if hasLeasingRate %}
<div class="col-6">
<label for="tab-select-leasing" role="button" class="p-3">Leasing</label>
</div>
{% endif %}
{% if hasFinanzierungRate %}
<div class="col-6">
<label for="tab-select-finance" role="button" class="p-3">Finanzierung</label>
</div>
{% endif %}
</div>
{% if hasLeasingRate %}
<div class="tab-select-content" data-id="tab-select-leasing">
<div class="row">
<div class="col-md-6 px-md-4">
<div class="px-lg-4">
<div class="mx-auto bg-light w-50 mb-4 ratio ratio-1x1" style="border-radius: 1rem">
<div class="d-flex flex-column justify-content-center align-items-center">
<small>Rate</small>
{% if leasing.leasingmatrix|length > 1 %}
<b class="d-block fs-5" id="leasingRate">
--€
</b>
{% else %}
<b class="d-block fs-5" id="leasingRate">
{{ leasing.getMonatlicheRate()|number_format(0, ',', '.') }}€
</b>
{% endif %}
</div>
</div>
<p class="text-muted small text-center lh-1">
<small><small><small>
{{ leasingLegalNotice }}
</small></small></small>
</p>
</div>
</div>
<div class="col-md-6 px-md-4">
<div class="px-lg-4">
<label for="term_leasing" class="form-label small m-0 fw-bold">Laufzeit in
Monaten</label>
{% if leasing.leasingmatrix|length > 1 %}
<div class="range-select pt-4 pb-3 mb-3"
id="term_leasing_label"
style='--min:0; --max:0; --val:0; --step:1; --min-step:0; --max-step:0;'>
<input id="term_leasing" type="range" class="form-range" min="0" step="1"
value="0" max="termLeasingValues"
oninput="this.parentNode.style.setProperty('--val',this.value);calcLeasingRate(this.value,this.value, false, false);">
<output id="output_term_leasing" for="term_leasing"
class="rounded-pill px-2 py-1"></output>
</div>
{% else %}
<div class="pt-4 pb-3 mb-3">
{% if leasing.laufzeit %}
<span>{{ leasing.laufzeit }}</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
{% endif %}
{% if leasing.leasingmatrix|length > 1 %}
<label for="mileage_leasing" class="form-label small m-0 fw-bold">Laufleistung
in
km/Jahr</label>
<div class="range-select pt-4 pb-3 mb-3"
id="mileage_leasing_label"
style='--min:0; --max:0; --val:0; --step:1; --min-step:0; --max-step:0;'>
<input id="mileage_leasing" type="range" class="form-range" min="0" step="1"
value="0"
oninput="this.parentNode.style.setProperty('--val',this.value);calcLeasingRate(this.value,false, false, this.value);">
<output id="output_mileage_leasing" for="mileage_leasing"
class="rounded-pill px-2 py-1"></output>
</div>
{% else %}
<label for="mileage_leasing" class="form-label small m-0 fw-bold">Gesamtlaufleistung</label>
<div class="pt-1 mb-3">
{% if leasing.laufleistung %}
<span>{{ leasing.laufleistung|number_format(0, ',', '.') }} km</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
{% endif %}
{% if leasing.leasingmatrix|length > 1 %}
<label for="deposit_leasing" class="form-label small m-0 fw-bold">Anzahlung in
Euro</label>
{# <div class="range-select pt-4 pb-3 mb-3" #}
{# style='--min:1000; --max:{{ kosten.getPreis|number_format(0, '', '') }}; --val:{{ leasing.anzahlung }}; --step:1;'> #}
{# <input id="deposit_leasing" type="range" class="form-range" min="1000" #}
{# max="{{ kosten.getPreis|number_format(0, '', '') }}" step="1" #}
{# value="{{ leasing.anzahlung }}" #}
{# oninput="this.parentNode.style.setProperty('--val',this.value);calcLeasingRate(false, this.value);"> #}
{# <output for="deposit_leasing" class="rounded-pill px-2 py-1"></output> #}
{# </div> #}
<div class="pt-1 mb-3">
{% if leasing.anzahlung %}
<span>{{ leasing.anzahlung|number_format(2, ',', '.') }}</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
{% else %}
<label for="deposit_leasing"
class="form-label small m-0 fw-bold">Anzahlung</label>
<div class="pt-1 mb-3">
{% if leasing.anzahlung %}
<span>{{ leasing.anzahlung |number_format(2, ',', '.') }}€</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
{% endif %}
</div>
</div>
<div class="col-12 mt-4">
<div class="bg-light rounded-3 p-4">
<div class="col-md-8 ms-auto">
<h6 class="mb-2">Interessiert an einem Leasingangebot?</h6>
<p class="small text-muted">
<small>
{{ addressBank }}
</small>
</p>
<p class="text-center text-md-end">
<button class="btn btn-light bg-white w-auto border fw-normal"
data-action="initiate-contact">
Ja, ich bin interessiert
</button>
</p>
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% if hasFinanzierungRate %}
<div class="tab-select-content" data-id="tab-select-finance">
<div class="row">
<div class="col-md-6 px-md-4">
<div class="px-lg-4">
<div class="mx-auto bg-light w-50 mb-4 ratio ratio-1x1" style="border-radius: 1rem">
<div class="d-flex flex-column justify-content-center align-items-center">
<small>Rate</small>
<b class="d-block fs-5" id="financeRate">
{{ finanzierung.getMonatlicheRate|number_format(0, ',', '.') }}€
</b>
</div>
</div>
<p class="text-muted small text-center lh-1">
<small><small><small>
{{ financingLegalNotice }}
</small></small></small>
</p>
</div>
</div>
<div class="col-md-6 px-md-4">
<div class="px-lg-4">
<label for="laufzeit_finance" class="form-label small m-0 fw-bold">Laufzeit in
Monaten:</label>
<div class="pt-1 mb-3">
{% if finanzierung.laufzeit %}
<span>{{ finanzierung.laufzeit }}</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance" class="form-label small m-0 fw-bold">Eff.
Jahreszins:</label>
<div class="pt-1 mb-3">
{% if finanzierung.effektiverJahreszins %}
<span>{{ finanzierung.effektiverJahreszins }}%</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance" class="form-label small m-0 fw-bold">Sollzins
p.a.:</label>
<div class="pt-1 mb-3">
{% if finanzierung.sollZinssatz %}
<span>{{ finanzierung.sollZinssatz }}%</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance"
class="form-label small m-0 fw-bold">Anzahlung:</label>
<div class="pt-1 mb-3">
{% if finanzierung.anzahlung %}
<span>{{ finanzierung.anzahlung }}€</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance"
class="form-label small m-0 fw-bold">Schlussrate:</label>
<div class="pt-1 mb-3">
{% if finanzierung.schlussrate %}
<span>{{ finanzierung.schlussrate }}€</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance"
class="form-label small m-0 fw-bold">Nettodarlehensbetrag:</label>
<div class="pt-1 mb-3">
{% if finanzierung.nettokreditbetrag %}
<span>{{ finanzierung.nettokreditbetrag }}€</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
<label for="laufzeit_finance" class="form-label small m-0 fw-bold">Darlehensgesamtbetrag:</label>
<div class="pt-1 mb-3">
{% if finanzierung.bruttokreditbetrag %}
<span>{{ finanzierung.bruttokreditbetrag }}€</span>
{% else %}
<span> -- </span>
{% endif %}
</div>
{# <div class="range-select pt-4 pb-3 mb-3" #}
{# style='--min:12; --max:60; --val:{{ finanzierung.laufzeit }}; --step:6;'> #}
{# <input id="laufzeit_finance" type="range" class="form-range" min="12" max="60" #}
{# step="6" value="{{ finanzierung.laufzeit }}" #}
{# oninput="this.parentNode.style.setProperty('--val',this.value);calcFinanceRate(this.value, false);"> #}
{# <output for="laufzeit_finance" class="rounded-pill px-2 py-1"></output> #}
{# <div class="range-select-ticks">{% for i in range(12, 60, 6) %} #}
{# <span>{{ i }}</span>{% endfor %}</div> #}
{# </div> #}
{# <div class="range-select pt-4 pb-3 mb-3" #}
{# style='--min:1000; --max:{{ kosten.getPreis|number_format(0, '', '') }}; --val:{{ finanzierung.anzahlung }}; --step:1; background:none;'> #}
{# <input id="anzahlung_finance" type="range" class="form-range" min="1000" #}
{# max="{{ kosten.getPreis|number_format(0, '', '') }}" step="1" #}
{# value="{{ finanzierung.anzahlung }}" #}
{# oninput="this.parentNode.style.setProperty('--val',this.value);calcFinanceRate(false, this.value);"> #}
{# <output for="anzahlung_finance" class="rounded-pill px-2 py-1"></output> #}
{# </div> #}
</div>
</div>
<div class="col-12 mt-4">
<div class="bg-light rounded-3 p-4">
<div class="col-md-8 ms-auto">
<h6 class="mb-2">Interessiert an einer Finanzierung?</h6>
<p class="small text-muted">
<small>
{{ addressBank }}
</small>
</p>
<p class="text-center text-md-end">
<button class="btn btn-light bg-white w-auto border fw-normal"
data-action="initiate-contact">
Ja, ich bin interessiert
</button>
</p>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endif %}
</div>
<div class="col-lg-4 d-none d-lg-block">
<div class="sticky-lg-top shadow p-4" style="top:124px;">
<div class="row">
<div class="col-xl-6 mb-2 mb-xl-0">
<h1 class="h2 mb-0">{{ stammdaten.getMarke }}</h1>
{{ stammdaten.getModellbasis }}
</div>
<div class="col-xl-6">
<span class="h2 fw-bold">{{ kosten.getPreis|number_format(2, ',', '.') }}€</span>
<div class="f-12 d-block text-muted">
{% if stammdaten.getMwst == 0 %}
MwSt. ist ausweisbar
{% else %}
MwSt. nicht ausweisbar
{% endif %}
</div>
{% if pimcore_select('car-detail-price-highlight').getData() == true %}
<span class="d-inline-block small border rounded px-2 py-1 mt-2" role="button">
<small>Monatliche Rate berechnen</small>
</span>
{% endif %}
{% if kosten.rotstiftpreis > kosten.getPreis() %}
<div class="mx-auto text-center mt-2">
<span
class="text-decoration-line-through d-block">{{ kosten.rotstiftpreis|number_format(2, ',', '.') }}€</span>
<span class="badge rounded-pill bg-danger">Kürzlich reduziert</span>
</div>
{% endif %}
</div>
<div class="col-12 px-4 pt-4 text-center">
<button class="btn btn-primary" data-action="initiate-contact">Fahrzeug anfragen</button>
</div>
<div class="col-12 mt-4">
<div class="d-flex gap-2 mt-4">
<svg width="32" height="32" viewBox="0 0 16 16">
<path
d="M12.166 8.94c-.524 1.062-1.234 2.12-1.96 3.07A31.493 31.493 0 0 1 8 14.58a31.481 31.481 0 0 1-2.206-2.57c-.726-.95-1.436-2.008-1.96-3.07C3.304 7.867 3 6.862 3 6a5 5 0 0 1 10 0c0 .862-.305 1.867-.834 2.94zM8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10z" />
<path d="M8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" />
</svg>
<div>
<h6 class="mb-2">Standort</h6>
Autohaus Timmermanns GmbH
{% if stammdaten.dealerLocation %}
<address class="small text-muted mt-1">
<span class="d-block">{{ stammdaten.dealerLocation.street }}</span>
<span
class="d-block">{{ stammdaten.dealerLocation.zip }} {{ stammdaten.dealerLocation.city }}</span>
<span class="d-block">Telefon: {{ stammdaten.dealerLocation.phone }}</span>
</address>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="internalVehicleId" data-internalvehicleid="{{ stammdaten.internenummer }}"><!-- --></div>
<div id="dealerLocationPhone" data-dealerlocationlhone="{{ stammdaten.dealerLocation ? stammdaten.dealerLocation.phone : '' }}"><!-- --></div>
<script>
const internalVehicleId = document.querySelector('#internalVehicleId').dataset.internalvehicleid;
const dealerLocationPhone = document.querySelector('#dealerLocationPhone').dataset.dealerlocationlhone;
{# const leasingMatrix = {{ leasing }}; #}
var inputTermLeasing = document.getElementById('term_leasing'),
inputTermLeasingLabel = document.getElementById('term_leasing_label'),
outputTermLeasing = document.getElementById('output_term_leasing'),
inputMileageLeasing = document.getElementById('mileage_leasing'),
inputMileageLeasingLabel = document.getElementById('mileage_leasing_label'),
outputMileageLeasing = document.getElementById('output_mileage_leasing');
/**
* The rate matrix, once. Rows are objects {price, period, mileage}, every value a STRING -
* Pimcore's table field stores text - which is why every comparison below converts explicitly.
*/
const leasingMatrix = JSON.parse('{{ (leasing is not null ? leasing.leasingmatrix : []) | json_encode | raw }}');
/**
* Selection is by the PAIR (period, mileage), not by a position in a filtered list.
*
* The previous version filtered rows with a substring search across all three fields, so
* picking 24 months also pulled in rows whose price was "1240.00" or whose mileage was
* "24000" - foreign terms, duplicated mileages - sorted them with localeCompare (which puts
* "5000" after "40000", hence the slider running 10000 to 5000), and then indexed that list
* with the TERM slider's position. On automedia's real 21-row matrix that showed 1381,81 EUR
* for 24 months when the cheapest 24-month rate is 1334,02, and the detail page opened at a
* different figure than the one the listing advertises via filterRate.
*
* TODO, deliberately not in this change: price formatting ("843.6" should read "843,60 EUR"),
* the never-substituted max="termLeasingValues" placeholder on the term slider, guards for
* empty table cells, and the question why getMonatlicheRate() stops being displayed as soon as
* the matrix has more than one row even though the listing advertises exactly that value.
*/
const leasingTerms = () =>
[...new Set(leasingMatrix.map(r => r.period))].sort((a, b) => Number(a) - Number(b));
const leasingMileagesFor = (period) =>
[...new Set(leasingMatrix.filter(r => r.period === period).map(r => r.mileage))]
.sort((a, b) => Number(a) - Number(b));
const leasingRowFor = (period, mileage) =>
leasingMatrix.find(r => r.period === period && r.mileage === mileage);
/**
* Renders both sliders and the price from two slider POSITIONS. Passing positions rather than
* values keeps the sliders authoritative: a term change re-derives the mileage list, and an
* out-of-range mileage position falls back to the cheapest entry of the new term.
*/
function renderLeasing(termIndex, mileageIndex) {
const terms = leasingTerms();
if (terms.length === 0) {
return;
}
const term = terms[Math.min(termIndex, terms.length - 1)];
const mileages = leasingMileagesFor(term);
const mileage = mileages[Math.min(mileageIndex, mileages.length - 1)];
inputTermLeasing.max = terms.length - 1;
outputTermLeasing.innerHTML = term;
inputTermLeasingLabel.setAttribute('style',
'--min:0; --max:' + (terms.length - 1) + '; --val:' + termIndex + '; --step:1;' +
' --min-step:' + terms[0] + '; --max-step:' + terms[terms.length - 1] + ';');
inputMileageLeasing.max = mileages.length - 1;
inputMileageLeasing.value = String(mileages.indexOf(mileage));
outputMileageLeasing.innerHTML = mileage;
inputMileageLeasingLabel.setAttribute('style',
'--min:0; --max:' + (mileages.length - 1) + '; --val:' + mileages.indexOf(mileage) + '; --step:1;' +
' --min-step:' + mileages[0] + '; --max-step:' + mileages[mileages.length - 1] + ';');
const row = leasingRowFor(term, mileage);
document.getElementById('leasingRate').innerHTML = row ? row.price + '€' : '--€';
}
function calcLeasingRate(index, month, money, mileage) {
renderLeasing(
month !== false ? Number(month) : Number(inputTermLeasing.value),
mileage !== false ? Number(mileage) : Number(inputMileageLeasing.value)
);
}
function calcFinanceRate(month, money) {
{# const selectedMonth = month ? month : document.getElementById('laufzeit_finance').value; #}
{# const selectedMoney = money ? money : document.getElementById('anzahlung_finance').value; #}
{# const finanzierungsbetrag = {{ kosten.preis }} - {{ finanzierung.anzahlung }}; #}
{# const zinsen = {{ finanzierung.effektiverJahreszins }}; #}
{# const sum = ((57480 - 11496) + ( 57480 * 4 / 100)) / 60; #}
// let monthPrice = [Finanzierungsbetrag + (Finanzierungsbeitrag x Zinssatz ÷ 100)] ÷ Kreditlaufzeit;
// document.getElementById('financeRate').innerHTML = Math.round(sum) + '€';
}
function ready() {
let contactForm = document.querySelector('form#contact_form');
let contactFormName = contactForm.getAttribute('name');
let contactFormVehicleIdField = contactFormName + '_vehicle_id';
document.getElementById(contactFormVehicleIdField).value = internalVehicleId;
// Initial state through the same function the sliders use, so the two cannot drift apart -
// they were two separate implementations of the same logic before.
if (outputTermLeasing && leasingMatrix.length > 0) {
renderLeasing(0, 0);
}
// update quick-access-bar phone details
document.querySelector('#qa-link-call').setAttribute('data-title', dealerLocationPhone);
document.querySelector('#qa-link-call').setAttribute('href', 'tel://' + dealerLocationPhone.replace(/\D+/g, ''));
}
document.addEventListener('DOMContentLoaded', ready);
</script>