Files
Tectum/js/cost/cost-defaults.js
T

238 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*!
* Tectum
* Copyright © 2026 Machiel Heinen.
* Alle rechten voorbehouden. Gebruik uitsluitend met schriftelijke toestemming.
* Zie LICENTIE.md.
*/
// ============================================================
// cost/cost-defaults.js — STANDAARD kosten en tijden (datafile).
//
// Dit zijn de fabrieksinstellingen. Aanpassen kan op twee manieren:
// 1. in de app: menu Instellingen > Kosten & tijden (opgeslagen in deze
// browser, exporteren/importeren als JSON);
// 2. hier in dit bestand (geldt dan voor iedereen als nieuwe standaard).
// Tip: exporteer in de app en neem de waarden hier over.
//
// Een JS-bestand i.p.v. JSON omdat de app ook via file:// draait (fetch van
// lokale bestanden werkt daar niet).
//
// Opbouw: groep -> items. Elk item: { label, unit, value } of met
// options: { sleutel: 'tekst' } voor een keuze. Nieuwe items verschijnen
// vanzelf in het instellingenvenster; de berekening (CostModel) moet ze
// natuurlijk wel gebruiken. Bedragen excl. btw. Tijden in seconden tenzij
// anders vermeld. LET OP: de getallen zijn voorlopige schattingen.
// ============================================================
window.COST_DEFAULTS = {
arbeid: {
label: 'Arbeid',
items: {
uurloon: { label: 'Uurloon productie (all-in)', unit: '€/u', value: 45 },
bezetting: { label: 'Bezetting per productiestap (heftruck, vegen, aangeven): gemiddeld personeel', unit: 'man', value: 2.2 },
toeslagUren: { label: 'Toeslag indirecte uren (klaarleggen, opruimen, intern transport)', unit: '%', value: 10 },
qa: { label: 'QA (laatste aanpassingen, klantcontact) over de totale werktijd', unit: '%', value: 4 }
}
},
zagen: {
label: 'Zagen',
items: {
methode: { label: 'Zaagmethode', options: { robot: 'Zaagrobot', hand: 'Handmatig' }, value: 'robot' },
// Machinetijd testontwerp (409 stuks, 818 sneden): ~2 u 55 min.
robotSnede: { label: 'Robot: tijd per haakse snede', unit: 's', value: 5 },
robotSchuin: { label: 'Robot: extra tijd per schuine snede', unit: 's', value: 2.5 },
robotStuk: { label: 'Robot: handling per stuk (invoer, uitvoer, etiket)', unit: 's', value: 15 },
handFactor: { label: 'Handmatig: factor op de robottijd', unit: '×', value: 7 }
}
},
verbinden: {
label: 'Verbindingen (regelwerk)',
items: {
schroevenPerVerbinding: { label: 'Schroeven per verbinding (stijl/dorpel op regel)', unit: 'st.', value: 3 },
eersteSchroef: { label: 'Tijd eerste schroef (gat + schroef + uitlijnen)', unit: 's', value: 10 },
volgendeSchroef: { label: 'Tijd volgende schroef (gat + schroef)', unit: 's', value: 5 },
prijsPer1000: { label: 'Inkoop constructieschroeven (6×120)', unit: '€/1000', value: 45 },
verbindingenPerVloerbalk: { label: 'Verbindingen per vloer-/dakbalk', unit: 'st.', value: 2 },
dubbelAfstand: { label: 'Dubbele stijl (deur, hoek): schroef verticaal elke', unit: 'mm', value: 100 },
monteerFactor: { label: 'Monteren: factor op de schroeftijd (incl. lijmen, positioneren)', unit: '×', value: 6 },
personeel: { label: 'Personeel bij monteren constructie (vloer, wand, dak; i.p.v. de bezetting)', unit: 'man', value: 2 },
dakFactor: { label: 'Dak: factor op de tijd per schroef (moeilijker werken)', unit: '×', value: 4 }
}
},
montage: {
label: 'Montage',
items: {
muurVastzetten: { label: 'Muursectie plaatsen en vastzetten', unit: 'min', value: 10 },
muurPersoneel: { label: 'Personeel bij plaatsen muursectie (i.p.v. de bezetting)', unit: 'man', value: 3 }
}
},
hout: {
label: 'Hout',
items: {
constructieM3: { label: 'Constructiehout vuren C24 (regelwerk, balken)', unit: '€/m³', value: 550 },
latwerkM: { label: 'Latwerk (kruislat)', unit: '€/m', value: 0.9 },
latStukMontage: { label: 'Latwerk: per gezaagd stuk (meten, zagen op locatie, passen)', unit: 's', value: 240 },
latMeterMontage: { label: 'Latwerk: bevestigen per strekkende meter', unit: 's/m', value: 30 }
}
},
plaat: {
label: 'Plaatwerk',
items: {
spaanplaatM2: { label: 'Spaanplaat', unit: '€/m²', value: 9 },
spaanplaatMontage: { label: 'Montage spaanplaat (passen, zagen, plaatsen)', unit: 's/m²', value: 120 },
osbM2: { label: 'OSB (vloeren, plafonds dak)', unit: '€/m²', value: 12 },
osbMontage: { label: 'Montage OSB', unit: 's/m²', value: 90 },
cementplaatM2: { label: 'Cementgebonden plaat (gevel, trasraam)', unit: '€/m²', value: 28 },
cementplaatMontage: { label: 'Montage cementplaat', unit: 's/m²', value: 240 },
schroevenPerM2: { label: 'Plaatschroeven per m²', unit: 'st./m²', value: 15 },
tijdPerPlaatschroef: { label: 'Tijd per plaatschroef', unit: 's', value: 4 },
plaatschroefPer1000: { label: 'Inkoop plaatschroeven (4×40)', unit: '€/1000', value: 15 }
}
},
isolatie: {
label: 'Isolatie',
items: {
glaswolM3: { label: 'Glaswol', unit: '€/m³', value: 40 },
glaswolMontage: { label: 'Montage glaswol', unit: 's/m³', value: 900 },
steenIsolatieM3: { label: 'Isolatieblok steengevel', unit: '€/m³', value: 120 }
}
},
gevel: {
label: 'Gevel',
items: {
vochtdoekM2: { label: 'Vochtdoek', unit: '€/m²', value: 1.5 },
vochtdoekMontageM: { label: 'Montage vochtdoek per strekkende meter wand', unit: 's/m', value: 600 },
rabatM2: { label: 'Rabat (gevelbekleding)', unit: '€/m²', value: 35 },
rabatMontage: { label: 'Montage rabat', unit: 's/m²', value: 600 },
steenM2: { label: 'Steenstrips (gevel + trasraam)', unit: '€/m²', value: 60 },
steenMontage: { label: 'Montage steenstrips', unit: 's/m²', value: 1800 }
}
},
dak: {
label: 'Dak & dakrand',
items: {
dakleerM2: { label: 'Dakleer (EPDM)', unit: '€/m²', value: 18 },
dakleerMontage: { label: 'Montage dakleer', unit: 's/m²', value: 600 },
rietM2: { label: 'Riet', unit: '€/m²', value: 90 },
rietMontage: { label: 'Montage riet', unit: 's/m²', value: 3600 },
beschotM2: { label: 'Dakbeschot OSB 18 mm (bovenop de sporen)', unit: '€/m²', value: 14 },
beschotMontage: { label: 'Montage dakbeschot', unit: 's/m²', value: 150 },
felsM2: { label: 'Felsplaten staande naad (zink/staal, klangen, scheidingslaag)', unit: '€/m²', value: 65 },
felsMontage: { label: 'Montage felsplaten', unit: 's/m²', value: 1800 },
boeideelM: { label: 'Boeideel', unit: '€/m', value: 25 },
boeideelMontage: { label: 'Montage boeideel', unit: 's/m', value: 600 },
onderplaatM2: { label: 'Onderplaat boeideel', unit: '€/m²', value: 30 },
onderplaatMontage: { label: 'Montage onderplaat', unit: 's/m²', value: 900 },
daktrimM: { label: 'Daktrim', unit: '€/m', value: 12 },
daktrimMontage: { label: 'Montage daktrim', unit: 's/m', value: 300 }
}
},
vloer: {
label: 'Vloer & fundering',
items: {
afwerkingM2: { label: 'Vloerafwerking', unit: '€/m²', value: 35 },
afwerkingMontage: { label: 'Montage vloerafwerking', unit: 's/m²', value: 1200 },
sandwichM2: { label: 'Sandwichpaneel', unit: '€/m²', value: 35 },
sandwichMontage: { label: 'Montage per sandwichpaneel', unit: 's', value: 600 }
}
},
kozijnen: {
label: 'Kozijnen',
items: {
raamM2: { label: 'Raamkozijn incl. glas', unit: '€/m²', value: 450 },
deur: { label: 'Binnen-/buitendeur incl. kozijn', unit: '€/st.', value: 900 },
voordeur: { label: 'Voordeur incl. kozijn', unit: '€/st.', value: 1800 },
montage: { label: 'Montage per kozijn', unit: 's', value: 5400 }
}
},
verlichting: {
label: 'Verlichting',
items: {
gevellamp: { label: 'Gevellamp', unit: '€/st.', value: 45 },
boeideelSpot: { label: 'Boeideel-spot', unit: '€/st.', value: 25 },
binnenspot: { label: 'Binnenspot', unit: '€/st.', value: 20 },
montage: { label: 'Montage per lamp/spot (armatuur plaatsen en aansluiten; leidingen en dozen onder Elektra)', unit: 's', value: 300 }
}
},
// Indicatieve groothandelsprijzen (excl. btw) en tijden; zie ElektraModel
// voor de hoeveelheden (strekkende meters per leidingtype, boorgaten, dozen).
elektra: {
label: 'Elektra',
items: {
personeel: { label: 'Personeel bij elektra (i.p.v. de bezetting)', unit: 'man', value: 1 },
boorgat: { label: 'Boorgat door stijl, regel of balk (aftekenen, boren, ontbramen)', unit: 's', value: 90 },
buisLeggen: { label: 'Installatiebuis leggen en bevestigen', unit: 's/m', value: 60 },
draadTrekken: { label: 'Draad trekken (per meter buis, alle aders)', unit: 's/m', value: 20 },
kabelLeggen: { label: 'XMvK-kabel leggen en bevestigen (buiten)', unit: 's/m', value: 40 },
doosPlaatsen: { label: 'Inbouwdoos plaatsen (luchtdicht, hollewand)', unit: 's', value: 240 },
verdeeldoos: { label: 'Verdeeldoos plaatsen en verbinden', unit: 's', value: 600 },
spotdoos: { label: 'Spotdoos plaatsen (luchtdicht plafond)', unit: 's', value: 300 },
vloerdoos: { label: 'Vloerdoos plaatsen (gat in vloer, aansluiten)', unit: 's', value: 1800 },
afmonteren: { label: 'Afmonteren schakelaar/wcd/apparaataansluiting', unit: 's', value: 300 },
steekverbinderMontage: { label: 'Steekverbinder module-naad monteren (set m/v)', unit: 's', value: 300 },
kastMontage: { label: 'Groepenkast plaatsen (kast, hoofdschakelaar, aardlek)', unit: 's', value: 3600 },
groepMontage: { label: 'Per groep: automaat plaatsen, bedraden, labelen', unit: 's', value: 900 },
keuring: { label: 'Meten, testen en opleveren (NEN 1010 / NEN 3140)', unit: 's', value: 10800 },
buis16M: { label: 'Installatiebuis flexibel Ø16', unit: '€/m', value: 0.35 },
buis19M: { label: 'Installatiebuis flexibel Ø19', unit: '€/m', value: 0.45 },
buis25M: { label: 'Installatiebuis flexibel Ø25', unit: '€/m', value: 0.8 },
draad15M: { label: 'VD-draad 1,5 mm² (per ader)', unit: '€/m', value: 0.28 },
draad25M: { label: 'VD-draad 2,5 mm² (per ader)', unit: '€/m', value: 0.45 },
xmvkM: { label: 'XMvK 3×1,5 mm²', unit: '€/m', value: 1.25 },
inbouwdoos: { label: 'Luchtdichte hollewanddoos', unit: '€/st.', value: 1.6 },
verdeeldoosSt: { label: 'Luchtdichte verdeeldoos', unit: '€/st.', value: 4.5 },
spotdoosSt: { label: 'Luchtdichte spotdoos', unit: '€/st.', value: 7.5 },
vloerdoosSt: { label: 'Vloerdoos met dubbele wcd', unit: '€/st.', value: 95 },
schakelaar: { label: 'Schakelaar enkelpolig (inbouw)', unit: '€/st.', value: 9 },
afdekraam1: { label: 'Afdekraam 1-voudig', unit: '€/st.', value: 3 },
afdekraam2: { label: 'Afdekraam 2-voudig', unit: '€/st.', value: 5 },
wcdDubbel: { label: 'Wandcontactdoos dubbel met randaarde', unit: '€/st.', value: 10 },
wcdEnkel: { label: 'Wandcontactdoos enkel met randaarde', unit: '€/st.', value: 6 },
perilex: { label: 'Perilex-wandcontactdoos (kookgroep)', unit: '€/st.', value: 18 },
werkschakelaar: { label: 'Werkschakelaar (warmtepomp)', unit: '€/st.', value: 28 },
lasklem: { label: 'Lasklem 3-voudig', unit: '€/st.', value: 0.35 },
steekverbinder3: { label: 'Steekverbinder 3-polig (set m/v)', unit: '€/set', value: 9 },
steekverbinder5: { label: 'Steekverbinder 5-polig (set m/v)', unit: '€/set', value: 14 },
doorvoer: { label: 'Luchtdichte kabeldoorvoer naar buiten', unit: '€/st.', value: 3.5 },
kast: { label: 'Groepenkast 3-fase leeg (behuizing, kammen, aansluitmateriaal)', unit: '€/st.', value: 180 },
hoofdschakelaar: { label: 'Hoofdschakelaar 4-polig 40 A', unit: '€/st.', value: 55 },
aardlek: { label: 'Aardlekschakelaar 2-polig 40 A / 30 mA', unit: '€/st.', value: 40 },
automaat: { label: 'Installatieautomaat 1P+N (B10/B16)', unit: '€/st.', value: 14 },
automaat2f: { label: 'Installatieautomaat 2-fase (kookgroep)', unit: '€/st.', value: 30 }
}
},
bedrijf: {
label: 'Afschrijving & bedrijfskosten',
items: {
machines: { label: 'Afschrijving machines (zaagrobot, gereedschap, inrichting) per productie-uur', unit: '€/u', value: 8 },
slijtage: { label: 'Slijtage en verbruik gereedschap (zaagbladen, bits, accu’s) per productie-uur', unit: '€/u', value: 2 },
huisvesting: { label: 'Huisvesting productiehal (huur, energie) per productie-uur', unit: '€/u', value: 6 },
transportUnit: { label: 'Transport per unit naar de bouwplaats', unit: '€/unit', value: 750 },
kraan: { label: 'Kraan voor plaatsen woning', unit: '€', value: 1200 }
}
},
opslag: {
label: 'Opslagen',
items: {
verlies: { label: 'Materiaalverlies (beschadiging, misgezaagd, restmateriaal; naast het berekende snijverlies balken)', unit: '%', value: 5 },
klein: { label: 'Klein materiaal (lijm, kit, tape, nieten)', unit: '%', value: 3 },
algemeen: { label: 'Algemene kosten (kantoor, verzekering, garantie) over de kostprijs', unit: '%', value: 5 },
marge: { label: 'Winstmarge', unit: '%', value: 15 },
btw: { label: 'Btw', unit: '%', value: 21 }
}
}
};