Menu
EUR
Halve maanplaat - Shroud
€213,95 €176,82
Toevoegen aan winkelwagen
Halve maanplaat - Shroud

Halve maanplaat - Shroud

€213,95 €176,82 Incl. btw Excl. btw

Halve maan Shroud Afmetingen:H1200mmB664mmStandaard aluminium, maar ook in kleuren beschikbaar! Lees meer.

2-5 werkdagen
  • Gratis verzending vanaf €700,-
  • Altijd 5 jaar garantie
  • Levering met eigen bezorgservice
  • Achteraf betalen mogelijk
Ergens anders goedkoper gezien?

Productomschrijving

Halve maan Shroud

Halfronde aluminium afschermplaat die toegang beperkt van buiten van de poort tot de krukken, geïnstalleerd aan de slotvangerzijde.

Specificaties halve maanplaat:

  • Onbehandelde aluminium afschermingsplaat
  • Geïnstalleerd aan de slotvangerzijde van de poort
  • Perfecte afscherming aan de poort- en paalzijde bij installatie in combinatie met SHROUD-LA-P / LF-P
  • Snelle en makkelijke installatie gegarandeerd
  • Voor 40, 50 and 60 mm poortprofielen
  • Afmetingen: H1200mm - B664mm

Aluminium > Eventueel zelf over te laten coaten.

Installatievideo halve maan shroud plaat:

Vragen over dit product of hulp nodig bij je bestelling?
Neem contact op met onze klantenservice via [email protected] of bel +31 40 209 4087.
Wij zijn bereikbaar tussen 08:00 tot 16:00u.

Gerelateerde producten

Vragen over dit product of hulp nodig bij je bestelling?
Neem contact op met onze klantenservice via [email protected] of bel +31 40 209 4087.
Wij zijn bereikbaar tussen 08:00 tot 16:00u.

Recent bekeken

Halve maan Shroud
Halve maan Shroud
€213,95 €176,82
Verlichting dubbelstaafmat hekwerk
Verlichting dubbelstaafmat hekwerk
€154,95 €128,06

Specificaties

0/5
0 sterren op basis van 0 beoordelingen
0 beoordelingen
Kies uw taal
Kies uw valuta

Recent toegevoegd

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

Beoordeel Halve maanplaat - Shroud

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"; // Alleen op deze pagina (robust: met/zonder .html, met trailing slash) if (!location.pathname.includes(TARGET_SLUG)) return; console.log("[HD] init", location.pathname); // --------- kleine CSS fix tegen layout shift ---------- (function injectCss() { const css = ` /* Zorg dat ons blok geen grid/float in de war brengt */ #hd-configurator { display:block; width:100%; clear:both; } #hd-configurator .hd-wrap { width:100%; } #hd-configurator .hd-wrap * { box-sizing:border-box; } `; const s = document.createElement("style"); s.textContent = css; document.head.appendChild(s); })(); function ready(fn) { if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", fn); else fn(); } // --------- Helpers ---------- const fmtEUR = (n) => { try { return new Intl.NumberFormat("nl-NL", { style: "currency", currency: "EUR" }).format(n); } catch { return "€ " + (Math.round(n * 100) / 100).toFixed(2).replace(".", ","); } }; 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 {} const c = document.cookie || ""; if (/vat_type_pref=excl/i.test(c)) return "excl"; if (/vat_type_pref=incl/i.test(c)) return "incl"; return "incl"; } function roundingNote(m) { if (!isFinite(m) || m <= 0) return ""; const vakken = Math.ceil(m / 2.2); const eff = vakken * 2.2; return `Wordt afgerond naar ${vakken} vak(ken) = ${eff.toFixed(1).replace(".", ",")}m`; } // --------- Koopblok vinden & verbergen ---------- function findAddToCartSpan() { // 1) Specifiek op class (jij gaf die door) const candidates = Array.from( document.querySelectorAll("span.flex-grow-1.align-self-center.px-3") ); // 2) Tekst check (niet strict gelijk — includes is veiliger) const hit = candidates.find((s) => (s.textContent || "").trim().toLowerCase().includes("toevoegen aan winkelwagen") ); if (hit) return hit; // fallback: zoek op tekst in alle spans const any = Array.from(document.querySelectorAll("span")).find((s) => (s.textContent || "").trim().toLowerCase().includes("toevoegen aan winkelwagen") ); return any || null; } function findPurchaseContainerFromButton(btn) { // We zoeken de “kleinste” ancestor die: // - een select heeft (variant) // - een qty input/spinner heeft OF een hoeveelheid veld // - de add-to-cart button bevat let el = btn; for (let i = 0; i < 10 && el; i++) { const hasSelect = !!el.querySelector("select"); const hasQty = !!el.querySelector('input[type="number"]') || !!el.querySelector(".qty, .quantity, .quantity-selector, .input-group"); const hasBtn = !!el.querySelector("button, input[type=submit]"); if (hasSelect && hasBtn && hasQty) return el; el = el.parentElement; } // fallback: verberg gewoon het form of parent return btn.closest("form") || btn.parentElement; } function hideBuyBox() { // sticky koopknop (als aanwezig) const sticky = document.querySelector("#addtocart-sticky, .addtocart-sticky, .add-to-cart-sticky"); if (sticky) sticky.style.display = "none"; const span = findAddToCartSpan(); if (!span) return; const btn = span.closest("button") || span.closest('[role="button"]'); if (!btn) return; const container = findPurchaseContainerFromButton(btn); if (container) { container.style.display = "none"; container.setAttribute("data-hd-hidden", "1"); } // Ook de “Maak een keuze” label-block wegdrukken als die elders staat const labels = Array.from(document.querySelectorAll("label, .label")); const choiceLabel = labels.find((l) => (l.textContent || "").toLowerCase().includes("maak een keuze")); if (choiceLabel) { const block = choiceLabel.closest(".form-group, .product-options, .product__options, .row, .field") || choiceLabel.parentElement; if (block) block.style.display = "none"; } } // Houd het weg als Lightspeed her-rendered const mo = new MutationObserver(() => hideBuyBox()); mo.observe(document.documentElement, { childList: true, subtree: true }); // --------- Main ---------- ready(async () => { // 1) koopblok alvast wegdrukken (kan later opnieuw verschijnen) hideBuyBox(); // 2) mount const mount = document.getElementById("hd-configurator"); if (!mount) { console.warn("[HD] #hd-configurator niet gevonden. Zet
in productomschrijving."); return; } // Defaults (later uitbreidbaar met extra velden) const DEFAULTS = { soortSpijlen: "Spijlen 25x25 vlak", hoeken: "0", muuraansluiting: "Geen", soortPalen: "Grondpalen", soortPaaldop: "Paalkap kunststof", }; // 3) opties ophalen let opt; try { opt = await fetch(API_BASE + "/api/options").then((r) => r.json()); } catch (e) { opt = { ok: false, error: String(e) }; } if (!opt.ok) { mount.innerHTML = `
Configurator error
${opt.error || "Opties konden niet geladen worden."}
`; return; } const kleuren = (opt.options.kleuren || []).filter((k) => /7016|9005/.test(k)); const hoogtes = opt.options.hoogtes || []; // 4) UI renderen (neutraal, breekt layout niet) mount.innerHTML = `

Configureer je spijlenpakket

Kleur
Hoogte
Totale lengte (meter)
`; 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))); const updateRound = () => { elRound.textContent = roundingNote(Number(elLengte.value || 0)); }; elLengte.addEventListener("input", updateRound); updateRound(); async function quote() { elBtn.disabled = true; elBtn.style.opacity = "0.7"; const cfg = { ...DEFAULTS, kleur: elKleur.value, hoogte: elHoogte.value, lengthM: Number(elLengte.value || 0), }; let res; try { res = await fetch(API_BASE + "/api/quote", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ config: cfg }), }).then((r) => r.json()); } catch (e) { res = { ok: false, error: String(e) }; } elBtn.disabled = false; elBtn.style.opacity = "1"; if (!res.ok) { elPrice.innerHTML = `
Prijs ophalen mislukt: ${res.error || "onbekend"}
`; return; } const pref = getVatPref(); const main = pref === "excl" ? res.totalExcl : res.totalIncl; elPrice.innerHTML = `
${fmtEUR(main)}
Incl. ${fmtEUR(res.totalIncl)} · Excl. ${fmtEUR(res.totalExcl)} · ${res.lengthLabel}
`; // koopblok nogmaals wegdrukken (LS kan terugzetten) hideBuyBox(); } elBtn.addEventListener("click", quote); quote(); // en nogmaals verbergen na init hideBuyBox(); }); })();