KLEUR_POOLS).| Plooi | Factor |
|---|---|
| Wave default | 2.00 |
| Dubbel retour | 2.50 |
| Enkel retour | 2.10 |
| Dubbel | 2.35 |
| Enkel | 1.80 |
Volgorde in dropdown: Wave → Dubbel retour → Enkel retour → Dubbel → Enkel.
Geen invloed op effectieve breedte: alle drie dekken de volledige rail. Wel invloed op zijzomen-toeslag (§5) en op de retour-marge (§4).
Bij Enkel retour of Dubbel retour wordt de klaarbreedte kunstmatig aangepast — voor zowel Stel als 1 deel links/rechts:
klaarbreedte ≥ 300 cm → retourMarge = 10% × klaarbreedte klaarbreedte < 300 cm → retourMarge = 30 cm effectieveBreedte = klaarbreedte + retourMarge
Reden — bij een retour-/zigzag-plooi steekt de stof naar achteren uit; zonder slack worden de plooien plat getrokken bij sluiten en ontstaan kieren bij de zijkanten of in het midden (bij Stel).
Inmeet-tip: rail moet minimaal 7–10 cm van de wand om te voorkomen dat de plooien tegen de muur schuren.
Banenstof krijgt geen zijzoomtoeslag in breedte (per baan zit de zijzoom binnen de rolbreedte).
benodigdeStofbreedte (kamerhoog) = effectieveBreedte × plooi + aantalDelen × 24 benodigdeStofbreedte (banenstof) = effectieveBreedte × plooi
rawSnijhoogte = klaarhoogte + vliesband + onderzoom
Keuze: 8 / 10 / 12 / 15 cm. Default 10 cm.
| Conditie | Onderzoom |
|---|---|
| Lock = Ja | 0 cm (afgelockt) |
| Verzwaaringskoord = Ja | 2 cm |
| anders | 15 cm (gestoomde onderzoom) |
Het hoofdje is het smalle strookje stof bovenop de plooiband. Het is een configurator-keuze in Stap 6 — Plooi & verdeling die de atelier-afwerking documenteert. Beïnvloedt de snijhoogte niet — het komt niet voor in rawSnijhoogte of in het coupageverlies.
| Plooi-keuze | Toegestane hoofdje-waarden |
|---|---|
| Wave | 0 (vastgezet, veld gedeactiveerd) |
| Enkel retour | 0 (vastgezet, veld gedeactiveerd) |
| Dubbel retour | 0 (vastgezet, veld gedeactiveerd) |
| Enkel | 0 of 2,5 mm |
| Dubbel | 0 of 2,5 mm |
De UI deactiveert het veld automatisch zodra de plooi op een retour- of Wave-keuze staat. Bij plooiwijziging naar Wave/retour wordt een eerder gekozen 2,5 mm teruggezet naar 0.
patroonhoogte is een artikel-eigenschap die het verticale rapport in cm documenteert, maar telt niet mee in rawSnijhoogte. De configurator rondt de snijhoogte niet af op een heel rapport — het atelier beoordeelt patroon-rapport bij verwerking en bestelt zo nodig extra stof.
Patroon-stof kantelt nooit: kantelbaar wordt geforceerd op Nee (zou het patroon 90° draaien). Deze regel hangt aan het Patroon = Patroon veld, niet aan de waarde van patroonhoogte. Bij feasibility en compute() wordt de kantelbaar-fallback dus uitgeschakeld voor patroon-artikelen, ongeacht de rapport-waarde.
Stof rolt verticaal: hoogte van de rol = hoogte_stof (max ~300 cm), roleinden-richting (originele "breedte_stof") is onbeperkt → opgeslagen als 10000 cm.
Past wanneer rawSnijhoogte ≤ hoogte_stof.
aantalBanen = 1 totaalMetrage = benodigdeStofbreedte ÷ 100
Bij rawSnijhoogte > hoogte_stof met kantelbare uni-stof wordt de stof 90° gedraaid; de oorspronkelijke hoogte wordt baan-breedte.
koordVerlies = (verzwaaringskoord = Ja) ? 2 cm : 0 baanBreedteEff = hoogte_stof − koordVerlies aantalBanen = ⌈benodigdeStofbreedte ÷ baanBreedteEff⌉ totaalMetrage = aantalBanen × rawSnijhoogte ÷ 100
Verzwaaringskoord bij kanteling: koord wordt weggesneden (−2 cm in baan-breedte).
rawSnijhoogte > hoogte_stof én (kantelbaar = Nee óf patroon = Patroon) → artikel als "Niet mogelijk" gemarkeerd.
Stof rolt horizontaal: rolbreedte = breedte_stof (typisch 140 cm), lengte (originele "hoogte_stof") onbeperkt → opgeslagen als 10000 cm.
aantalBanen = ⌈benodigdeStofbreedte ÷ breedte_stof⌉ lengtePerBaan = rawSnijhoogte totaalCm = aantalBanen × lengtePerBaan totaalMetrage_m = totaalCm ÷ 100
Geen hoogte-begrenzing, geen kanteling.
Opties: Geen voering / Semi-transparant / Verduisterend. Voering-prijs en -kleur verschijnen alleen wanneer voering ≠ Geen voering.
voeringPrijs/m¹ = (voering_prijs_per_m1 > 0)
? voering_prijs_per_m1
: prijs_per_m1 × 0.60 (60%-fallback)
voeringKosten = totaalMetrage × voeringPrijs/m¹
Voering-kleuren (5 fictief): Wit, Beige, Taupe, Grijs, Antraciet.
Stofprijs is gebaseerd op verkoopprijs incl. btw, niet op inkoop:
stofPrijs = totaalMetrage × verkoopPrijs/m¹ totaalPrijs = stofPrijs (+ voeringKosten als van toepassing)
verkoopprijs_per_m1 veld) — door Victor ingevuld in productie. Dit veld heeft altijd voorrang.verkoopprijs_per_m1 leeg of 0 is:
verkoopPrijs/m¹ = inkoop × 3, omhoog afgerond naar xx.95Voorbeeld auto: inkoop € 12,34 → verkoop € 37,95.
Implementatie: verkoopPrijs95(inkoop) + getVerkoopPrijs(article) in db.js. In de breakdown wordt expliciet vermeld of de prijs handmatig of auto is.
Voering rekent nog op inkoop-basis (custom prijs of 60% fallback van inkoop).
Bij elke load wordt via seedAfmetingenPlaceholders():
| Type | Veld | Waarde |
|---|---|---|
| Kamerhoog (Ja) | breedte_stof | 10000 (= onbeperkte rol-lengte) |
| Banenstof (Nee) | hoogte_stof | 10000 (= onbeperkte rol-lengte) |
In de aside (Artikel specificaties) tonen we voor de onbeperkte richting "Niet relevant" in plaats van het getal.
als effectieveBreedte > 600 cm → waarschuwing: "verdeel het gordijn in 1 deel links + 1 deel rechts"
Vaste, alleen-lezen weergave per gekozen artikel:
Inkoopprijs is niet zichtbaar (alleen verkoopprijs incl. btw). Selects in de aside tonen geen dropdown-pijl meer (puur waarde-display).
3 actieve filters:
klaarhoogte + vliesband + onderzoom ≤ hoogte_stof.| Bestand | Rol |
|---|---|
index.html | Configurator (stappen 1–9, berekening, artikel-aside). |
import.html | CSV/Excel-import + opgeslagen artikelen-overzicht. |
db.js | Read-laag op de artikelbron (build-time data/artikelen.json) + localStorage-cache, kleuren-pools, seed-migraties, esc(), verkoopPrijs95(). |
gordijn_configurator.deluge | Zoho Creator script — gespiegeld op index.html logica. |
start.sh | Lokale server (Python http.server of Node fallback). |
berekeningsregels.html | Deze pagina — samenvatting van alle regels. |
Opgeslagen artikelen-tabel (import.html) toont per artikel: Artikelnr, Type, Omschrijving, H stof, B stof (= 10000 voor kamerhoog), Patroon, Patroonhoogte (= 0 bij Uni), Inkoop/m¹, Verkoop/m¹ incl. btw, Krimp%, KH, Licht, Voeren, Voer.prijs, Kantelbaar, D.face, BR, Akoest, Verzw, Samenstelling, Kleuren.
index.html is leidend voor de business-logica. Bij elke wijziging in:
→ gordijn_configurator.deluge ook bijwerken in dezelfde commit.
De configurator wordt aangesloten op Zoho CRM (module: Products). Onderstaande tabel mapt onze interne veld-keys op de Zoho API-namen en het Zoho-veldtype dat in CRM aangemaakt moet worden. Het master-overzicht staat in db.js (ARTIKEL_FIELDS) en wordt in import.html automatisch getoond bij elke veld-uitleg.
| Interne key | Label | Zoho API (Products) | Zoho veldtype |
|---|---|---|---|
artikelnummer | Artikelnummer | Product_Code | Single Line |
gordijn_type | Gordijn type | Gordijn_Type | Picklist |
omschrijving | Omschrijving | Product_Name | Single Line |
hoogte_stof | Hoogte stof (cm) | Hoogte_Stof | Number |
breedte_stof | Breedte stof (cm) | Breedte_Stof | Number |
patroon | Patroon | Patroon | Picklist |
patroonhoogte | Patroonhoogte (cm) | Patroonhoogte | Decimal |
patroonbreedte | Patroonbreedte (cm) | Patroonbreedte | Decimal |
prijs_per_m1 | Inkoopprijs (€) + Eenheid | Inkoopprijs | Currency |
verkoopprijs_per_m1 | Verkoopprijs incl. btw (€) + Eenheid | Verkoopprijs | Currency |
krimpercentage | Krimpercentage (%) | Krimpercentage | Percent |
kamerhoog | Kamerhoog | Kamerhoog | Checkbox |
lichtdoorlatenheid | Lichtdoorlatenheid | Lichtdoorlatenheid | Picklist |
voeren | Voeren (default) | Voering_Default | Picklist |
voering_prijs_per_m1 | Voering prijs per m¹ | Voering_Prijs_M1 | Currency |
kantelbaar | Kantelbaar | Kantelbaar | Checkbox |
doubleface | Doubleface | Doubleface | Checkbox |
brandvertragend | Brandvertragend | Brandvertragend | Checkbox |
akoestiek | Akoestiek klasse | Akoestiek | Picklist |
verzwaaringskoord | Verzwaaringskoord (legacy) | Verzwaaringskoord | Checkbox |
geschikt_voor_verzwaringskoord | Geschikt met verzwaringskoord | Geschikt_Met_Verzwaringskoord | Checkbox |
eenheid | Eenheid (default m¹) | Eenheid | Picklist |
samenstelling | Samenstelling | Samenstelling | Single Line |
geschikte_plooi | Geschikte plooi | Geschikte_Plooi | Multi-Select Picklist |
geschikt_vouwgordijn | Geschikt als vouwgordijnen | Geschikt_Vouwgordijn | Picklist |
kleuren | Kleuren | local-only | — |
Geschikte_Plooi en Geschikt_Vouwgordijn zijn local-only (alleen localStorage); ze hebben geen kolom in de centrale articles-bron.
Het Zoho Creator script gordijn_configurator.deluge verwacht dezelfde API-namen op het input-formulier (input.Inkoopprijs, input.Verkoopprijs, input.Hoogte_Stof, …). Configuratie-keuzes (KlaarBreedte, KlaarHoogte, Plooi, Stuk, Voering, Verzwaringskoord, Band) zijn formulier-velden, geen Products-velden.
Twee artikel-velden bepalen welke verwerkingen voor een stof zijn toegestaan; ze zijn niet in de metrage- of prijsberekening, maar sturen wel UI-waarschuwingen.
geschikte_plooi — Multi-Select Picklist met de waarden uit dropdown Plooi: Wave, Dubbel retour, Enkel retour, Dubbel, Enkel."Wave, Enkel, Dubbel").geschikt_vouwgordijn — Picklist met waarden Ja, Nee, Ja (ongevoerd).Volgorde plooi-dropdown matcht PLOOI_OPTIES in db.js; deze wordt gedeeld door index.html en de seed-helpers. Synchroon houden met gordijn_configurator.deluge (constanten plooi_*).