💡 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

1 Raum

Demnächst 2 Räume

2 Räume

Demnächst 3 Räume

3 Räume

Online-Berater für den Kauf einer Klimaanlage (optional mit Montageservice und Zubehör)

// 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 = '
' + cleanMarke + '
'; var card = col.querySelector('.kp-brand-card'); card.addEventListener('click', function() { toggleBrand(marke, this); }); brandGrid.appendChild(col); }); } else { brandGrid.innerHTML = '

Leider keine passenden Anlagen für diese Raumgröße gefunden.

'; } } 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 = '

Leider keine Anlage für diese Marke gefunden.

'; } } 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 = '' + (artikelData.titel || 'Anlage') + '' + '
' + '
Ihre Anlage: ' + artikelData.titel + ' Set
' + '
' + energyIconHtml + 'Produktdatenblatt
' + '
' + '
Artikel-ID: ' + artikelData.id + '
' + '
' + formatPreis + '
'; 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 = '
' + '
' + '✅ Perfekt! Die Anlage und das Zubehör liegen in Ihrem Warenkorb.' + '
' + '
' + '' + 'Zum Warenkorb' + '
' + '
'; 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); } });