💡 Individuelles Zubehör
Für diese Klimaanlage ist aktuell noch kein spezifisches Zubehör in unserem Berater hinterlegt. Sie können sich Ihr passendes Montagematerial jedoch ganz bequem in unserer Zubehör-Kategorie zusammenstellen.
Sie sind unsicher, was Sie für die Installation benötigen? Unser Experten-Team hilft Ihnen gerne weiter:
📞 07231 - 56 13 99
Kaufberater
Schritt 1: Wählen Sie Ihre Raumsituation aus
1 Raum
Demnächst
2 Räume
Demnächst
3 Räume
Online-Berater für den Kauf einer Klimaanlage (optional mit Montageservice und Zubehör)
Schritt 2: Wählen Sie Ihre Raumgröße aus
(Berechnung per qm bei angenommener Raumhöhe von 2,5 Meter)
Schritt 3: Wählen Sie Ihren Markenfavoriten aus
Schritt 4: Wählen Sie Ihre Klimaanlage aus
Lade Ergebnisse...
Schritt 5: Benötigen Sie einen Montageservice?
Falls Sie keinen Fachbetrieb für die Montage Ihrer Anlage haben, bieten wir Ihnen gerne die Vermittlung eines zertifizierten Fachbetriebs für die bundesweite Montage oder Inbetriebnahme an.
Inbetriebnahme einer Klimaanlage mit einer Inneneinheit
Fachgerechte Inbetriebnahme durch zertifiziertes Personal nach EU-Verordnung.
mehr Infos
589,00 € *
(Pauschalpreis)
Komplettmontage einer Klimaanlage mit einer Inneneinheit (Wand- und Truhengeräte)
Rundum-Sorglos-Paket: Installation und Inbetriebnahme durch Profis.
mehr Infos
1.699,00 € *
(Pauschalpreis)
Schritt 6: Wählen Sie das gewünschte Zubehör aus
// Globale Tracking-Funktion für den Kaufberater
function trackKaufberater(schrittNummer, schrittName, extraDaten) {
var eventData = {
'event': 'kaufberater_trichter',
'kb_schritt': schrittNummer,
'kb_name': schrittName
};
if (extraDaten) Object.assign(eventData, extraDaten);
if (typeof dataLayer !== 'undefined') {
dataLayer.push(eventData);
} else if (typeof window.gtag !== 'undefined') {
window.gtag('event', 'kaufberater_trichter', eventData);
} else {
console.log("Tracking gesendet:", eventData);
}
}
var kaufberaterState = {
raumAnzahl: null,
raumGroesse: null,
marken: [],
ausgewaehlteAnlageId: null,
zubehoerIds: [],
zubehoerMengen: {}, // <-- DIESE ZEILE NEU EINFÜGEN!
gefundeneAnlagen: [],
gefilterteAnlagen: [],
aktuelleSeite: 1
};
var brandLogos = {
"Bosch": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/bosch.png",
"Daikin": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/daikin.png",
"Mitsubishi Electric": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/mitsubishi-electric.png",
"Mitsubishi Heavy Industries": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/mitsubishi-heavy.png",
"Panasonic": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/panasonic.png",
"Samsung": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/samsung.png",
"Fujitsu": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/fujitsu.png",
"Rotenso": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/rotenso.png",
"Hisense": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/hisense.png",
"LG": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/lg.png",
"Midea": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/midea.png",
"Kaisai": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/kaisai.png",
"Buderus": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/buderus.png",
"Haier": "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Themen/Hersteller/haier.png"
};
function switchStep(hideId, showId) {
var hideEl = document.getElementById(hideId);
var showEl = document.getElementById(showId);
if (hideEl) hideEl.style.display = 'none';
if (showEl) showEl.style.display = 'block';
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function selectRoomCount(count, element) {
kaufberaterState.raumAnzahl = parseInt(count);
document.querySelectorAll('.kp-card-room').forEach(function(card) { card.classList.remove('active'); });
element.classList.add('active');
var btn = document.getElementById('btn-step1-weiter');
if (btn) btn.disabled = false;
}
async function goToStep2() {
trackKaufberater(1, 'Raumsituation', { 'raum_anzahl': kaufberaterState.raumAnzahl });
switchStep('step-1-container', 'step-2a-container');
}
function generateSizeButtons() {
var grid = document.getElementById('qm-grid');
if (!grid) return;
for (var i = 15; i <= 70; i += 5) {
var btn = document.createElement('div');
btn.className = 'kp-size-btn';
btn.setAttribute('data-qm', i);
btn.innerText = i + ' qm';
btn.addEventListener('click', function() { selectRoomSize(this.getAttribute('data-qm'), this); });
grid.appendChild(btn);
}
}
function selectRoomSize(size, element) {
kaufberaterState.raumGroesse = parseInt(size);
document.querySelectorAll('.kp-size-btn').forEach(function(b) { b.classList.remove('active'); });
element.classList.add('active');
var btn = document.getElementById('btn-step2a-weiter');
if (btn) btn.disabled = false;
}
async function goToStep3() {
trackKaufberater(2, 'Leistung_Raumgroesse', { 'raum_groesse': kaufberaterState.raumGroesse });
var btn = document.getElementById('btn-step2a-weiter');
if (btn) {
btn.innerHTML = 'Suche Anlagen...';
btn.disabled = true;
}
try {
var response = await fetch('https://kaufberater.klimaprofis.shop/api/suche-anlagen', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
raumAnzahl: kaufberaterState.raumAnzahl,
raumGroesse: kaufberaterState.raumGroesse
})
});
var data = await response.json();
kaufberaterState.gefundeneAnlagen = data.ergebnisse || [];
kaufberaterState.marken = [];
var verfuegbareMarken = [];
kaufberaterState.gefundeneAnlagen.forEach(function(anlage) {
// .trim() ENTFERNT heimliche Leerzeichen aus der Datenbank!
var saubereMarke = anlage.marke ? anlage.marke.trim() : "";
if (saubereMarke && verfuegbareMarken.indexOf(saubereMarke) === -1) {
verfuegbareMarken.push(saubereMarke);
}
});
var brandGrid = document.getElementById('brand-grid');
if (brandGrid) {
brandGrid.innerHTML = '';
if (verfuegbareMarken.length > 0) {
verfuegbareMarken.forEach(function(marke) {
// 1. Unsichtbare Leerzeichen aus Plentymarkets entfernen
var cleanMarke = marke.trim();
// 2. Schlaue Suche: Ignoriert Groß- und Kleinschreibung!
var logoSrc = null;
if (typeof brandLogos !== 'undefined') {
for (var key in brandLogos) {
if (key.toLowerCase() === cleanMarke.toLowerCase()) {
logoSrc = brandLogos[key];
break;
}
}
}
// 3. Fallback auf Platzhalter, falls wirklich kein Logo hinterlegt ist
logoSrc = logoSrc || "https://cdn02.plentymarkets.com/92oct1bax888/frontend/Kaufberater/platzhalter.jpg";
var col = document.createElement('div');
col.className = 'col-6 col-md-3 col-lg-2 mb-3';
col.innerHTML = '
';
var card = col.querySelector('.kp-brand-card');
card.addEventListener('click', function() { toggleBrand(marke, this); });
brandGrid.appendChild(col);
});
} else {
brandGrid.innerHTML = '';
}
}
switchStep('step-2a-container', 'step-3a-container');
} catch (error) {
console.error("Fetch Error:", error);
}
if (btn) {
btn.innerHTML = 'Weiter';
btn.disabled = false;
}
var step3Btn = document.getElementById('btn-step3a-weiter');
if (step3Btn) step3Btn.disabled = true;
}
function goBackToStep1() { switchStep('step-2a-container', 'step-1-container'); }
function toggleBrand(brandName, element) {
var index = kaufberaterState.marken.indexOf(brandName);
if (index > -1) {
kaufberaterState.marken.splice(index, 1);
element.classList.remove('active');
} else {
kaufberaterState.marken.push(brandName);
element.classList.add('active');
}
var btn = document.getElementById('btn-step3a-weiter');
if (btn) btn.disabled = kaufberaterState.marken.length === 0;
}
async function goToStep4() {
trackKaufberater(3, 'Marke_gewaehlt', { 'marken': kaufberaterState.marken.join(', ') });
// 1. Anlagen nach gewählten Marken filtern
kaufberaterState.gefilterteAnlagen = kaufberaterState.gefundeneAnlagen.filter(function(a) {
return kaufberaterState.marken.indexOf(a.marke) > -1;
});
// 2. NEU: Nach Preis sortieren (günstigste zuerst)
kaufberaterState.gefilterteAnlagen.sort(function(a, b) {
var preisA = parseFloat(a.preis) || 999999;
var preisB = parseFloat(b.preis) || 999999;
return preisA - preisB;
});
// 3. Beim ersten Aufruf immer bei Seite 1 starten
kaufberaterState.aktuelleSeite = 1;
// Render-Funktion aufrufen
renderProductPage();
switchStep('step-3a-container', 'step-4a-container');
}
// NEU: Diese Funktion rendert exakt die 9 Anlagen der aktuellen Seite und die Buttons
function renderProductPage() {
var grid = document.getElementById('product-result-grid');
var pagination = document.getElementById('kp-pagination-container');
if (!grid) return;
grid.innerHTML = '';
if (pagination) pagination.innerHTML = '';
var template = document.getElementById('kp-template-card');
var itemsPerPage = 6; // Maximal 6 Artikel (3x2) pro Seite
var totalItems = kaufberaterState.gefilterteAnlagen.length;
var totalPages = Math.ceil(totalItems / itemsPerPage);
// Start- und End-Index für das Array berechnen
var startIndex = (kaufberaterState.aktuelleSeite - 1) * itemsPerPage;
var endIndex = startIndex + itemsPerPage;
// Schneide exakt die 9 passenden Anlagen aus dem Array heraus
var aktuelleAnlagen = kaufberaterState.gefilterteAnlagen.slice(startIndex, endIndex);
if (aktuelleAnlagen.length > 0) {
aktuelleAnlagen.forEach(function(artikel) {
if (!template) return;
var cardDiv = template.cloneNode(true);
cardDiv.id = "";
var productCard = cardDiv.querySelector('.kp-product-card');
if (productCard) productCard.setAttribute('data-variant-id', artikel.id);
// --- 1. DAS PRODUKTBILD ---
var img = cardDiv.querySelector('.kp-product-img');
if (img) {
var defaultBild = 'https://cdn02.plentymarkets.com/92oct1bax888/frontend/Kaufberater/platzhalter.jpg';
var hatBild = artikel.bild_url && artikel.bild_url !== 'None' && artikel.bild_url.trim() !== '';
img.src = hatBild ? artikel.bild_url : defaultBild;
img.alt = artikel.titel || 'Klimaanlage';
img.addEventListener('error', function() {
this.src = defaultBild;
}, { once: true });
}
// --- 2. DAS ENERGIE-LABEL ---
var labelImg = cardDiv.querySelector('.kp-energy-img');
if (labelImg) {
// Nimmt den Wert, egal wie er aus der main.py kommt
var rawWert = artikel.label_wert;
if (rawWert && rawWert !== 'None' && rawWert.trim() !== '' && rawWert !== '#') {
// 1. Plus-Zeichen zwingend in Unterstriche wandeln, weil Plentymarkets-Server das so speichert!
var dateiName = rawWert.replace(/\+/g, '_').trim();
labelImg.src = 'https://cdn02.plentymarkets.com/92oct1bax888/frontend/Icons/Energieklasse/klein/' + dateiName + '.png';
labelImg.style.display = 'inline-block';
} else {
labelImg.style.display = 'none';
}
labelImg.addEventListener('error', function() {
this.style.display = 'none';
}, { once: true });
}
// --- 3. PDF LINKS FÜR DIE ELEMENTE IM GRID SETZEN ---
var datenblattBtn = cardDiv.querySelector('.kp-data-sheet-link');
if (datenblattBtn) {
if (artikel.datenblatt_url && artikel.datenblatt_url !== '#' && artikel.datenblatt_url !== 'None') {
datenblattBtn.href = 'https://s3-eu-central-1.amazonaws.com/plentymarkets-public-92/92oct1bax888/propertyItems/' + artikel.datenblatt_url;
datenblattBtn.target = '_blank';
datenblattBtn.style.display = 'inline-block';
} else {
datenblattBtn.style.display = 'none';
}
}
var labelBtn = cardDiv.querySelector('.kp-energy-label-link');
if (labelBtn) {
if (artikel.label_url && artikel.label_url !== '#' && artikel.label_url !== 'None') {
labelBtn.href = 'https://s3-eu-central-1.amazonaws.com/plentymarkets-public-92/92oct1bax888/propertyItems/' + artikel.label_url;
labelBtn.target = '_blank';
labelBtn.style.display = 'inline-block';
} else {
labelBtn.style.display = 'none';
}
}
var badgesContainer = cardDiv.querySelector('.kp-badges');
if (badgesContainer && artikel.badges && Array.isArray(artikel.badges)) {
artikel.badges.forEach(function(badgeObj) {
var span = document.createElement('span');
span.className = 'badge mr-1 mb-1';
var badgeText = typeof badgeObj === 'object' ? badgeObj.text : badgeObj;
var badgeColor = typeof badgeObj === 'object' ? badgeObj.color : '';
span.innerText = badgeText;
if (badgeColor) {
span.style.backgroundColor = badgeColor;
span.style.color = '#fff';
} else {
span.classList.add('badge-secondary');
}
badgesContainer.appendChild(span);
});
}
var title = cardDiv.querySelector('.kp-product-title');
if (title) title.innerText = artikel.titel;
var price = cardDiv.querySelector('.kp-product-price');
if (price) {
var nPreis = parseFloat(artikel.preis) || 0;
price.innerText = 'Preis: ' + nPreis.toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' € *';
}
if (productCard) {
productCard.addEventListener('click', function() { selectProduct(artikel, this); });
}
var links = cardDiv.querySelectorAll('.kp-data-sheet-link, .kp-energy-label-link');
links.forEach(function(link) { link.addEventListener('click', function(e) { e.stopPropagation(); }); });
grid.appendChild(cardDiv);
});
// Pagination-Buttons rendern, wenn es mehr als 1 Seite gibt
if (totalPages > 1 && pagination) {
// Zurück-Button
var prevBtn = document.createElement('button');
prevBtn.className = 'btn btn-outline-secondary btn-sm';
prevBtn.innerHTML = '« Zurück';
prevBtn.disabled = (kaufberaterState.aktuelleSeite === 1);
prevBtn.addEventListener('click', function() {
kaufberaterState.aktuelleSeite--;
renderProductPage();
});
pagination.appendChild(prevBtn);
// Zahlen-Buttons
for (let i = 1; i <= totalPages; i++) {
var pageBtn = document.createElement('button');
pageBtn.className = 'btn btn-sm ' + (kaufberaterState.aktuelleSeite === i ? 'btn-primary' : 'btn-outline-primary');
pageBtn.innerText = i;
pageBtn.addEventListener('click', function() {
kaufberaterState.aktuelleSeite = i;
renderProductPage();
});
pagination.appendChild(pageBtn);
}
// Vor-Button
var nextBtn = document.createElement('button');
nextBtn.className = 'btn btn-outline-secondary btn-sm';
nextBtn.innerHTML = 'Weiter »';
nextBtn.disabled = (kaufberaterState.aktuelleSeite === totalPages);
nextBtn.addEventListener('click', function() {
kaufberaterState.aktuelleSeite++;
renderProductPage();
});
pagination.appendChild(nextBtn);
}
} else {
grid.innerHTML = '';
}
}
function goBackToStep2() { switchStep('step-3a-container', 'step-2a-container'); }
function selectProduct(artikelData, element) {
kaufberaterState.ausgewaehlteAnlageId = parseInt(artikelData.id);
document.querySelectorAll('.kp-product-card').forEach(function(card) { card.classList.remove('active'); });
element.classList.add('active');
// === ZUSAMMENFASSUNG IN SCHRITT 5 & 6 BEFÜLLEN ===
var summaryBoxes = document.querySelectorAll('.kp-summary-box-target');
if (summaryBoxes.length > 0) {
var defaultBild = 'https://cdn02.plentymarkets.com/92oct1bax888/frontend/Kaufberater/platzhalter.jpg';
var hatBild = artikelData.bild_url && artikelData.bild_url !== 'None' && artikelData.bild_url.trim() !== '';
var sicheresBild = hatBild ? artikelData.bild_url : defaultBild;
var fullLabelUrl = (artikelData.label_url && artikelData.label_url !== '#' && artikelData.label_url !== 'None')
? 'https://s3-eu-central-1.amazonaws.com/plentymarkets-public-92/92oct1bax888/propertyItems/' + artikelData.label_url : '#';
var fullDatenblattUrl = (artikelData.datenblatt_url && artikelData.datenblatt_url !== '#' && artikelData.datenblatt_url !== 'None')
? 'https://s3-eu-central-1.amazonaws.com/plentymarkets-public-92/92oct1bax888/propertyItems/' + artikelData.datenblatt_url : '#';
var energyIconHtml = '';
var rawWert = artikelData.label_wert;
if (rawWert && rawWert !== 'None' && rawWert.trim() !== '' && rawWert !== '#') {
var dateiName = rawWert.replace(/\+/g, '_').trim();
var iconUrl = 'https://cdn02.plentymarkets.com/92oct1bax888/frontend/Icons/Energieklasse/klein/' + dateiName + '.png';
energyIconHtml = '
';
}
var nPreisDetails = parseFloat(artikelData.preis) || 0;
var formatPreis = 'Preis: ' + nPreisDetails.toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' € *';
var innerHtmlContent = '
' +
'
Leider keine passenden Anlagen für diese Raumgröße gefunden.
Leider keine Anlage für diese Marke gefunden.
' +
'
';
summaryBoxes.forEach(function(box) {
// Erst das sichere HTML einfügen
box.innerHTML = innerHtmlContent;
// 2. Jetzt die Badges als echte DOM-Elemente nachladen (wird nicht gefiltert!)
var badgesTarget = box.querySelector('.kp-badges-target');
if (badgesTarget && artikelData.badges && Array.isArray(artikelData.badges)) {
artikelData.badges.forEach(function(badgeObj) {
var badgeText = typeof badgeObj === 'object' ? badgeObj.text : badgeObj;
var badgeColor = (typeof badgeObj === 'object' && badgeObj.color) ? badgeObj.color : '#1dabd5';
var span = document.createElement('span');
span.innerText = badgeText;
// Wir stylen das Element direkt, ohne innerHTML
span.style.backgroundColor = badgeColor;
span.style.color = '#ffffff';
span.style.padding = '4px 10px';
span.style.borderRadius = '12px';
span.style.fontSize = '0.85rem';
span.style.fontWeight = 'bold';
span.style.marginRight = '5px';
span.style.marginBottom = '5px';
span.style.display = 'inline-block';
badgesTarget.appendChild(span);
});
}
});
}
var btn = document.getElementById('btn-step4a-weiter');
if (btn) btn.disabled = false;
// === 4. ZUBEHÖR IN SCHRITT 6 DYNAMISCH LADEN ===
var accGrid = document.getElementById('accessory-grid');
var templateAcc = document.getElementById('kp-template-accessory');
var templateNoAcc = document.getElementById('kp-template-no-accessory');
if (accGrid) {
accGrid.innerHTML = '';
var zubehoerListe = artikelData.zubehoer || artikelData.cross_selling || [];
if (zubehoerListe.length > 0 && templateAcc) {
zubehoerListe.forEach(function(zub) {
var fallbackBild = 'https://cdn02.plentymarkets.com/92oct1bax888/frontend/Kaufberater/platzhalter.jpg';
var bildUrl = (zub.bild_url && zub.bild_url !== 'None') ? zub.bild_url : fallbackBild;
var varianten = zub.varianten || [];
if (varianten.length === 0) return;
var hatDropdown = varianten.length > 1;
var initialVariantId = hatDropdown ? '' : varianten[0].id;
// 1. Die unsichtbare Vorlage klonen
var clone = templateAcc.cloneNode(true);
clone.id = ''; // ID entfernen, damit sie nicht doppelt vorkommt
// 2. Elemente im Klon suchen
var imgEl = clone.querySelector('.kp-acc-img');
var titleEl = clone.querySelector('.kp-acc-title');
var varsContainer = clone.querySelector('.kp-acc-variants-container');
var priceEl = clone.querySelector('.kp-acc-price');
var unitEl = clone.querySelector('.kp-acc-unit');
var addBtn = clone.querySelector('.kp-btn-add-acc-dynamic');
var cardEl = clone.querySelector('.kp-accessory-card');
// 3. Texte und Bilder absolut sicher einfüllen
if (imgEl) { imgEl.src = bildUrl; imgEl.alt = zub.titel; }
if (titleEl) {
titleEl.innerHTML = '' + zub.titel + '';
}
var selectEl = null;
if (hatDropdown) {
// --- Dropdown dynamisch ohne HTML-Tags bauen ---
selectEl = document.createElement('select');
selectEl.className = 'form-control kp-dynamic-variant-select mx-auto mx-md-0';
selectEl.style.maxWidth = '300px';
selectEl.style.fontSize = '1rem';
selectEl.style.borderColor = '#00a0d0';
var defaultOpt = document.createElement('option');
defaultOpt.value = '';
defaultOpt.disabled = true;
defaultOpt.selected = true;
defaultOpt.innerText = 'Bitte Ausführung wählen...';
selectEl.appendChild(defaultOpt);
varianten.forEach(function(v) {
var opt = document.createElement('option');
opt.value = v.id;
opt.setAttribute('data-price', v.preis_text);
opt.setAttribute('data-unit', v.unit_text || '');
var unitStr = v.unit_text ? ' | ' + v.unit_text : '';
opt.innerText = v.name + unitStr;
selectEl.appendChild(opt);
});
if (varsContainer) varsContainer.appendChild(selectEl);
if (priceEl) priceEl.innerText = 'ab ' + varianten[0].preis_text;
if (unitEl) unitEl.innerText = '';
if (addBtn) addBtn.disabled = true;
} else {
// --- Direkter Text ohne HTML-Tags bauen ---
var v = varianten[0];
var pEl = document.createElement('p');
pEl.className = 'text-muted mb-0';
pEl.style.fontSize = '0.95rem';
pEl.innerText = v.name;
if (varsContainer) varsContainer.appendChild(pEl);
// Startmenge prüfen (für Artikel 1253)
var initialQty = 1;
if (initialVariantId === 1253) {
kaufberaterState.zubehoerMengen[1253] = kaufberaterState.zubehoerMengen[1253] || 1;
initialQty = kaufberaterState.zubehoerMengen[1253];
}
var totalPreis = v.preis * initialQty;
if (priceEl) priceEl.innerText = totalPreis.toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' € *';
if (unitEl) unitEl.innerText = v.unit_text || '';
if (addBtn) {
addBtn.disabled = false;
addBtn.setAttribute('data-current-variant-id', initialVariantId);
}
// ==========================================
// SONDERREGEL: KONDENSATLEITUNG (VARIANTE 1253)
// ==========================================
if (initialVariantId === 1253) {
var qtyLabel = document.createElement('span');
qtyLabel.className = 'text-muted mr-2 font-weight-bold';
qtyLabel.innerText = 'Benötigte Länge (m):';
var qtyInput = document.createElement('input');
qtyInput.type = 'number';
qtyInput.min = '1';
qtyInput.max = '50';
qtyInput.value = initialQty;
qtyInput.className = 'form-control d-inline-block text-center';
qtyInput.style.width = '80px';
qtyInput.style.borderColor = '#00a0d0';
var qtyDiv = document.createElement('div');
qtyDiv.className = 'mt-3 d-flex align-items-center justify-content-center justify-content-md-start';
qtyDiv.appendChild(qtyLabel);
qtyDiv.appendChild(qtyInput);
if (varsContainer) varsContainer.appendChild(qtyDiv);
// Live-Preis Update bei Mengenänderung
qtyInput.addEventListener('change', function() {
var currentQty = parseInt(this.value) || 1;
if (currentQty < 1) currentQty = 1;
if (currentQty > 50) currentQty = 50;
this.value = currentQty;
kaufberaterState.zubehoerMengen[1253] = currentQty;
var newTotal = currentQty * v.preis;
if (priceEl) priceEl.innerText = newTotal.toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' € *';
});
}
}
// --- 4. LOGIK FÜR DAS DROPDOWN ---
if (selectEl) {
selectEl.addEventListener('change', function() {
var selectedOption = this.options[this.selectedIndex];
var newVariantId = parseInt(this.value);
var newPrice = selectedOption.getAttribute('data-price');
var newUnit = selectedOption.getAttribute('data-unit');
if (priceEl) priceEl.innerText = newPrice;
if (unitEl) unitEl.innerText = newUnit;
addBtn.setAttribute('data-current-variant-id', newVariantId);
if (cardEl.classList.contains('active')) {
var oldVariantId = parseInt(addBtn.getAttribute('data-last-added-id'));
var index = kaufberaterState.zubehoerIds.indexOf(oldVariantId);
if (index > -1) kaufberaterState.zubehoerIds.splice(index, 1);
kaufberaterState.zubehoerIds.push(newVariantId);
addBtn.setAttribute('data-last-added-id', newVariantId);
} else {
addBtn.disabled = false;
}
});
}
// --- 5. LOGIK FÜR DEN BUTTON ---
if (addBtn) {
addBtn.addEventListener('click', function() {
var variantId = parseInt(this.getAttribute('data-current-variant-id'));
if (!variantId) return;
if (cardEl.classList.contains('active')) {
cardEl.classList.remove('active', 'border-primary');
this.innerText = 'Auswählen';
this.classList.remove('btn-primary');
this.classList.add('btn-outline-primary');
var index = kaufberaterState.zubehoerIds.indexOf(variantId);
if (index > -1) kaufberaterState.zubehoerIds.splice(index, 1);
this.removeAttribute('data-last-added-id');
} else {
cardEl.classList.add('active', 'border-primary');
this.innerText = 'Ausgewählt';
this.classList.remove('btn-outline-primary');
this.classList.add('btn-primary');
kaufberaterState.zubehoerIds.push(variantId);
this.setAttribute('data-last-added-id', variantId);
}
});
}
// Fertig ausgefüllte Karte ins Raster schieben
accGrid.appendChild(clone);
});
} else if (templateNoAcc) {
// Wenn kein Zubehör da ist, einfach die Info-Box klonen
var cloneNoAcc = templateNoAcc.cloneNode(true);
cloneNoAcc.id = '';
accGrid.appendChild(cloneNoAcc);
}
}
}
async function goToStep5() {
trackKaufberater(4, 'Anlage_ausgewaehlt', { 'artikel_id': kaufberaterState.ausgewaehlteAnlageId });
switchStep('step-4a-container', 'step-5a-container');
}
function goToStep6() {
trackKaufberater(5, 'Montage_beendet', { 'zubehoer_ids': kaufberaterState.zubehoerIds.join(', ') });
switchStep('step-5a-container', 'step-6a-container');
}
function goBackToStep3() { switchStep('step-4a-container', 'step-3a-container'); }
function goBackToStep4() { switchStep('step-5a-container', 'step-4a-container'); }
function goBackToStep5() { switchStep('step-6a-container', 'step-5a-container'); }
function goBackToStep3() { switchStep('step-4a-container', 'step-3a-container'); }
function goBackToStep4() { switchStep('step-5a-container', 'step-4a-container'); }
async function submitToCart(containerId, btnElement) {
trackKaufberater(6, 'In_den_Warenkorb', {
'artikel_id': kaufberaterState.ausgewaehlteAnlageId,
'zubehoer_ids': kaufberaterState.zubehoerIds.join(', ')
});
if (btnElement) {
btnElement.innerHTML = ' Lädt...';
btnElement.disabled = true;
}
try {
var basketItems = [];
if (kaufberaterState.ausgewaehlteAnlageId) {
basketItems.push({ variationId: kaufberaterState.ausgewaehlteAnlageId, quantity: 1 });
}
// Zubehör und Montage hinzufügen
if (kaufberaterState.zubehoerIds && kaufberaterState.zubehoerIds.length > 0) {
kaufberaterState.zubehoerIds.forEach(function(zubehoerId) {
// Prüfen, ob wir für diese ID eine Spezialmenge gespeichert haben (sonst immer 1)
var menge = kaufberaterState.zubehoerMengen[zubehoerId] || 1;
basketItems.push({ variationId: zubehoerId, quantity: menge });
});
}
if (basketItems.length === 0) {
alert("Bitte wählen Sie zuerst eine Anlage aus.");
if (btnElement) { btnElement.innerHTML = 'In den Warenkorb'; btnElement.disabled = false; }
return;
}
for (var i = 0; i < basketItems.length; i++) {
var response = await fetch('/rest/io/basket/items/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(basketItems[i])
});
if (!response.ok) {
var errorText = await response.text();
console.error("❌ Plentymarkets API Fehler bei Variante " + basketItems[i].variationId + ":", errorText);
throw new Error("API verweigert den Artikel (Status: " + response.status + ")");
}
}
var btnContainer = document.getElementById(containerId);
if (btnContainer) {
btnContainer.innerHTML = 'Ihre Anlage: ' + artikelData.titel + ' Set
' + '' +
energyIconHtml +
'Produktdatenblatt
' +
'' +
'Artikel-ID: ' + artikelData.id + '
' +
'' + formatPreis + '
' +
'
';
var neustartBtn = document.getElementById('btn-neustart');
if (neustartBtn) {
neustartBtn.addEventListener('click', function() {
window.scrollTo({ top: 0, behavior: 'smooth' });
setTimeout(function() { window.location.reload(); }, 300);
});
}
} else {
window.location.href = '/warenkorb';
}
} catch (error) {
console.error("🚨 Fehler beim In-den-Warenkorb-Legen:", error);
alert("Es gab einen Fehler beim Hinzufügen zum Warenkorb. Bitte prüfen Sie die Konsole (F12)!");
if (btnElement) { btnElement.innerHTML = 'In den Warenkorb'; btnElement.disabled = false; }
}
}
document.addEventListener("DOMContentLoaded", function() {
try {
document.querySelectorAll('.kp-card-room').forEach(function(card) {
card.addEventListener('click', function() { selectRoomCount(this.getAttribute('data-rooms'), this); });
});
var btnStep1 = document.getElementById('btn-step1-weiter');
if (btnStep1) btnStep1.addEventListener('click', goToStep2);
generateSizeButtons();
var btnStep2aWeiter = document.getElementById('btn-step2a-weiter');
if (btnStep2aWeiter) btnStep2aWeiter.addEventListener('click', goToStep3);
var btnStep2aZurueck = document.getElementById('btn-step2a-zurueck');
if (btnStep2aZurueck) btnStep2aZurueck.addEventListener('click', goBackToStep1);
var btnStep3aWeiter = document.getElementById('btn-step3a-weiter');
if (btnStep3aWeiter) btnStep3aWeiter.addEventListener('click', goToStep4);
var btnStep3aZurueck = document.getElementById('btn-step3a-zurueck');
if (btnStep3aZurueck) btnStep3aZurueck.addEventListener('click', goBackToStep2);
var btnStep4aWeiter = document.getElementById('btn-step4a-weiter');
if (btnStep4aWeiter) btnStep4aWeiter.addEventListener('click', goToStep5);
var btnStep4aZurueck = document.getElementById('btn-step4a-zurueck');
if (btnStep4aZurueck) btnStep4aZurueck.addEventListener('click', goBackToStep3);
document.querySelectorAll('.kp-variant-select').forEach(function(select) {
select.addEventListener('change', function() {
var card = this.closest('.kp-accessory-card');
var selectedOption = this.options[this.selectedIndex];
var priceEl = card.querySelector('.kp-acc-price');
var unitEl = card.querySelector('.kp-acc-unit');
var addBtn = card.querySelector('.kp-btn-add-acc');
if (priceEl) priceEl.innerText = selectedOption.getAttribute('data-price');
if (unitEl) unitEl.innerText = "(" + selectedOption.getAttribute('data-unit') + ")";
if (addBtn) addBtn.disabled = false;
});
});
document.querySelectorAll('.kp-btn-add-acc').forEach(function(btn) {
btn.addEventListener('click', function() {
var card = this.closest('.kp-accessory-card');
var select = card.querySelector('.kp-variant-select');
var variantId = parseInt(select.value);
if (card.classList.contains('active')) {
card.classList.remove('active');
this.innerText = 'Auswählen';
this.classList.replace('btn-primary', 'btn-outline-primary');
var index = kaufberaterState.zubehoerIds.indexOf(variantId);
if (index > -1) kaufberaterState.zubehoerIds.splice(index, 1);
} else {
card.classList.add('active');
this.innerText = 'Ausgewählt';
this.classList.replace('btn-outline-primary', 'btn-primary');
kaufberaterState.zubehoerIds.push(variantId);
}
});
});
document.querySelectorAll('.kp-btn-add-acc-single').forEach(function(btn) {
btn.addEventListener('click', function() {
var card = this.closest('.kp-accessory-card');
var variantId = parseInt(this.getAttribute('data-variant-id'));
var exclusiveGroup = [2521, 2523];
if (card.classList.contains('active')) {
// === ABWÄHLEN ===
card.classList.remove('active');
this.innerText = 'Auswählen';
this.classList.replace('btn-primary', 'btn-outline-primary');
var index = kaufberaterState.zubehoerIds.indexOf(variantId);
if (index > -1) kaufberaterState.zubehoerIds.splice(index, 1);
} else {
// === AUSWÄHLEN (inkl. Exklusiv-Logik) ===
if (exclusiveGroup.indexOf(variantId) > -1) {
var otherId = (variantId === 2521) ? 2523 : 2521;
var otherIndex = kaufberaterState.zubehoerIds.indexOf(otherId);
if (otherIndex > -1) {
kaufberaterState.zubehoerIds.splice(otherIndex, 1);
var otherBtn = document.querySelector('.kp-btn-add-acc-single[data-variant-id="' + otherId + '"]');
if (otherBtn) {
var otherCard = otherBtn.closest('.kp-accessory-card');
otherCard.classList.remove('active');
otherBtn.innerText = 'Auswählen';
otherBtn.classList.replace('btn-primary', 'btn-outline-primary');
}
}
}
card.classList.add('active');
this.innerText = 'Ausgewählt';
this.classList.replace('btn-outline-primary', 'btn-primary');
kaufberaterState.zubehoerIds.push(variantId);
}
// === DIE MAGIE (Steht jetzt GANZ am Ende und prüft immer!) ===
var btnStep5Weiter = document.getElementById('btn-step5a-weiter');
if (btnStep5Weiter) {
if (kaufberaterState.zubehoerIds.indexOf(2523) > -1) { // 2523 = Komplettmontage
btnStep5Weiter.innerText = 'In den Warenkorb';
btnStep5Weiter.classList.remove('btn-primary');
btnStep5Weiter.classList.add('btn-success');
} else {
btnStep5Weiter.innerText = 'Zubehör wählen';
btnStep5Weiter.classList.remove('btn-success');
btnStep5Weiter.classList.add('btn-primary');
}
}
});
});
var btnStep5aWarenkorb = document.getElementById('btn-step5a-warenkorb');
if (btnStep5aWarenkorb) btnStep5aWarenkorb.addEventListener('click', submitToCart);
// Navigation Schritt 5
var btnStep5aZurueck = document.getElementById('btn-step5a-zurueck');
if (btnStep5aZurueck) btnStep5aZurueck.addEventListener('click', goBackToStep4);
var btnStep5aWeiter = document.getElementById('btn-step5a-weiter');
if (btnStep5aWeiter) {
btnStep5aWeiter.addEventListener('click', function() {
// Wenn Komplettmontage gewählt ist -> sofort ab in den Warenkorb!
if (kaufberaterState.zubehoerIds.indexOf(2523) > -1) {
submitToCart('step-5-btn-container', btnStep5aWeiter);
} else {
// Sonst -> weiter zum Zubehör
goToStep6();
}
});
}
// Navigation Schritt 6
var btnStep6aWarenkorb = document.getElementById('btn-step6a-warenkorb');
if (btnStep6aWarenkorb) {
btnStep6aWarenkorb.addEventListener('click', function() {
submitToCart('step-6-btn-container', btnStep6aWarenkorb);
});
}
var btnStep6aZurueck = document.getElementById('btn-step6a-zurueck');
if (btnStep6aZurueck) btnStep6aZurueck.addEventListener('click', goBackToStep5);
} catch(e) { console.error("Init Error:", e); }
});
' +
'✅ Perfekt! Die Anlage und das Zubehör liegen in Ihrem Warenkorb.' +
'
' +
'' +
'' +
'Zum Warenkorb' +
'
' +
'