Menu
EUR

Zichtdichte poorten & hekwerk

26 Producten
Toon:
Dichte stalen poort met hout
Dichte stalen poort met hout
€1.232,00 €1.018,18
Dubbele dichte stalen poort met houtvulling
Dubbele dichte stalen poort met houtvulling
€1.975,00 €1.632,23
Aluminium poort met WPC vulling
Aluminium poort met WPC vulling
€1.390,00 €1.148,76
Aluminium poort met dichte vulling
Aluminium poort met dichte vulling
€2.805,99 €2.319,00
Aluminium poort met schuine lamellen
Aluminium poort met schuine lamellen
€2.707,99 €2.238,01
Dubbele aluminium poort met dichte vulling
Dubbele aluminium poort met dichte vulling
€5.056,99 €4.179,33
Dubbele aluminium poort met schuine lamellen
Dubbele aluminium poort met schuine lamellen
€4.860,99 €4.017,35
Stalen poort - Plaatvulling
Stalen poort - Plaatvulling
€2.585,95 €2.137,15
Stalen poort - Lamellen schuin
Stalen poort - Lamellen schuin
€2.278,95 €1.883,43
Stalen poort - Aluminium vulling
Stalen poort - Aluminium vulling
€2.270,95 €1.876,82
Stalen poort - Accoya hout met kruis
Stalen poort - Accoya hout met kruis
€3.160,95 €2.612,36
Stalen dubbele poort - Aluminium vulling
Stalen dubbele poort - Aluminium vulling
€4.011,95 €3.315,66
Stalen dubbele poort - Plaatvulling
Stalen dubbele poort - Plaatvulling
€4.493,95 €3.714,01
Stalen dubbele poort - Schuine lamellen
Stalen dubbele poort - Schuine lamellen
€3.652,95 €3.018,97
Stalen poort - Accoya hout
Stalen poort - Accoya hout
€2.006,95 €1.658,64
Stalen poort - Vuren hout
Stalen poort - Vuren hout
€1.835,95 €1.517,31
Stalen dubbele poort - Accoya hout met kruis
Stalen dubbele poort - Accoya hout met kruis
€4.287,95 €3.543,76
Stalen dubbele poort - Accoya hout
Stalen dubbele poort - Accoya hout
€3.311,95 €2.737,15
Toon 1 - 24 van 26
Merken
Prijs
Min Max
Sluiten
Bankoverschrijving
Kies uw taal
Kies uw valuta

Mijn account

Wachtwoord vergeten?

Recent toegevoegd

Totaal incl. btw
€0,00
Bestel nog voor €700,00 en de verzending is gratis
0
Vergelijk
Start vergelijking

Dit artikel is toegevoegd aan uw winkel wagen!
(function () { const API_BASE = "https://hd-spijlen.michel-abchekwerk.workers.dev"; const TARGET_SLUG = "/spijlendirect-compleet-pakket"; if (!location.pathname.includes(TARGET_SLUG)) return; console.log("[HD] configurator init"); function waitForProductForm(cb) { const maxTime = Date.now() + 15000; const iv = setInterval(() => { const form = document.querySelector('form[action*="cart"]'); const mount = document.getElementById("hd-configurator"); if (form && mount) { clearInterval(iv); cb(form, mount); } if (Date.now() > maxTime) { clearInterval(iv); console.warn("[HD] product form niet gevonden binnen timeout"); } }, 200); } waitForProductForm(async (productForm, mount) => { console.log("[HD] product form gevonden → configurator injecteren"); // 1️⃣ verberg standaard Lightspeed koopblok productForm.style.display = "none"; // 2️⃣ defaults (later uitbreidbaar) const DEFAULTS = { soortSpijlen: "Spijlen 25x25 vlak", hoeken: "0", muuraansluiting: "Geen", soortPalen: "Grondpalen", soortPaaldop: "Paalkap kunststof", }; const fmtEUR = (n) => new Intl.NumberFormat("nl-NL", { style: "currency", currency: "EUR" }).format(n); function getVatPref() { try { const v = localStorage.getItem("vat_type_pref") || ""; if (/excl/i.test(v)) return "excl"; if (/incl/i.test(v)) return "incl"; } catch {} return "incl"; } function roundingNote(m) { if (!isFinite(m) || m <= 0) return ""; const vakken = Math.ceil(m / 2.2); return `Wordt afgerond naar ${vakken} vak(ken) = ${(vakken * 2.2) .toFixed(1) .replace(".", ",")}m`; } // 3️⃣ opties ophalen const opt = await fetch(API_BASE + "/api/options").then(r => r.json()); if (!opt.ok) { mount.innerHTML = "

Configurator kon opties niet laden.

"; return; } const kleuren = opt.options.kleuren.filter(k => /7016|9005/.test(k)); const hoogtes = opt.options.hoogtes; // 4️⃣ UI renderen (theme-styling wordt automatisch overgenomen) mount.innerHTML = `

Configureer je spijlenpakket

`; const elKleur = mount.querySelector("#hd-kleur"); const elHoogte = mount.querySelector("#hd-hoogte"); const elLengte = mount.querySelector("#hd-lengte"); const elRound = mount.querySelector("#hd-round"); const elBtn = mount.querySelector("#hd-calc"); const elPrice = mount.querySelector("#hd-price"); kleuren.forEach(k => elKleur.add(new Option(k, k))); hoogtes.forEach(h => elHoogte.add(new Option(h, h))); elLengte.oninput = () => { elRound.textContent = roundingNote(Number(elLengte.value)); }; elRound.textContent = roundingNote(10); async function quote() { elBtn.disabled = true; const cfg = { ...DEFAULTS, kleur: elKleur.value, hoogte: elHoogte.value, lengthM: Number(elLengte.value), }; const res = await fetch(API_BASE + "/api/quote", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ config: cfg }), }).then(r => r.json()); elBtn.disabled = false; if (!res.ok) { elPrice.textContent = "Prijs ophalen mislukt"; return; } const pref = getVatPref(); const main = pref === "excl" ? res.totalExcl : res.totalIncl; elPrice.innerHTML = ` ${fmtEUR(main)}
Incl. ${fmtEUR(res.totalIncl)} · Excl. ${fmtEUR(res.totalExcl)} `; } elBtn.onclick = quote; quote(); }); })();