GOOD GUYS IT
Meld je aan met je Microsoft-account om verder te gaan.
👤 {{ authUser.name }}
{{ savedStatus === 'saved' ? (lastSavedAt ? 'Opgeslagen om ' + lastSavedAt : 'Opgeslagen') : 'Niet opgeslagen…' }}

Dashboard

Maandoverzicht · {{ fmt(null,'month') }}

Totale Omzet / mnd
{{ fmtCur(combinedOmzet) }}
{{ fmtCur(totaleOmzet) }} {{ fmtCur(bemOmzetPm) }}
Totale Brutomarge / mnd
{{ fmtCur(combinedMarge) }}
{{ fmtPct(combinedMargePct) }} gemiddelde marge
Actieve Eenheden
{{ consultants.length }}
consultants
·
{{ bemLopend.length }}
opdrachten
Totale Open Acties
{{ totaleOpenActies }}
Det: {{ opsActies.length }} Bem: {{ bemActies.length }}
Detachering Hub Eigen medewerkers in loondienst
Omzet / mnd
{{ fmtCur(totaleOmzet) }}
{{ fmtUren(totaleDeclarabeleUren) }} declarabel
Brutomarge / mnd
{{ fmtCur(totaleMarge) }}
Gem. Marge %
{{ fmtPct(gemMargePct) }}
Doel >25% · Min 20%
Marge Alerts
{{ slechteConsultants }}
↗ {{ c.naam }} · {{ fmtPct(c.calc.margePct) }}
🛋️ Op de bank
{{ consultants.filter(c=>c.opDeBank).length }}
zonder opdracht
Contract Alerts
{{ opsContractAlerts.length }}
{{ consultants.filter(c=>c.contractStatus==='actief').length }} actief
Open Urenstaten
{{ opsOpenUrenstaten }}
Open Facturen
{{ opsOpenFacturen }}
Te Factureren
{{ fmtCur(opsTeFactureren) }}
Verwachte Urenbonus / jaar
{{ fmtCurKort(bonusKpis.totaalBonusKostenJaar) }}
{{ bonusKpis.aantalBovenDrempel }} boven drempel
Gelijkwaardige Beloning
Getoetst
{{ gbAantalGetoetst }} / {{ gbOpdrachten.length }}
Voldoet
{{ gbAantalVoldoet }}
Aanvullen nodig
{{ gbAantalAanvullen }}
Aanvulling / jaar
{{ fmtCurKort(gbTotaalAanvullingPj) }}
⚠ controleer pakketdata
Bemiddeling Hub Externe opdrachten via leveranciers
Actieve Opdrachten
{{ bemLopend.length }}
van {{ bemOpdrachten.length }} totaal
Omzet / mnd
{{ fmtCur(bemOmzetPm) }}
Brutomarge / mnd
{{ fmtCur(bemMargePm) }}
{{ fmtPct(bemGemMarge) }} gem. marge
Contract Alerts
{{ bemContractAlerts.length }}
{{ bemLopend.length }} lopend
Open Urenstaten
{{ bemOpenUrenstaten }}
Open Facturen
{{ bemOpenFacturen }}
Te Factureren
{{ fmtCur(bemTeFactureren) }}
Open Acties
{{ bemActies.length }}
Bekijk →
Marge % per Consultant
Omzet vs Kosten per maand

CEO Dashboard

Managementcockpit · de volledige gezondheid van GOOD GUYS IT in één oogopslag

Omzet & Marge
Omzet deze maand
{{ fmtCur(ceoOmzetMaand) }}
Omzet YTD (schatting)
{{ fmtCur(ceoOmzetYTD) }}
Verwachte omzet 12 mnd
{{ fmtCurKort(runwaySummary.jaarOmzet) }}
Bekijk prognose →
Totale brutomarge / mnd
{{ fmtCur(ceoBrutomarge) }}
Gemiddelde marge %
{{ fmtPct(ceoGemMargePct) }}
Netto marge (Exact volgt)
{{ fmtCur(ceoNettoMarge) }}
− overhead/mnd
Detachering
Actieve consultants
{{ ceoActieveConsultants }}
🛋️ Op de bank
{{ ceoOpDeBank }}
🚀 Binnenkort start
{{ ceoBinnenkortStart }}
Contract loopt af
{{ ceoContractAfloop }}
Omzetverlies ≤90 dgn
{{ fmtCur(ceoOmzetverlies90) }}/mnd
Extra omzet starters
+{{ fmtCur(ceoExtraOmzetStarters) }}/mnd
Gem. declarabiliteit
{{ fmtPct(productivityKpis.gemDeclarabiliteit) }}
Grootste klant: {{ ceoGrootsteKlantDet.naam }} · {{ fmtCur(ceoGrootsteKlantDet.omzet) }}/mnd
Bemiddeling
Actieve opdrachten
{{ bemLopend.length }}
Omzet / mnd
{{ fmtCur(bemOmzetPm) }}
Brutomarge / mnd
{{ fmtCur(bemMargePm) }}
{{ fmtPct(bemGemMarge) }}
Grootste klant
{{ ceoBemGrootsteKlant ? ceoBemGrootsteKlant.naam : '—' }}
{{ fmtCur(ceoBemGrootsteKlant.omzet) }}/mnd
Grootste leverancier
{{ ceoBemGrootsteLeverancier ? ceoBemGrootsteLeverancier.naam : '—' }}
{{ fmtCur(ceoBemGrootsteLeverancier.omzet) }}/mnd
Alerts
{{ ceoAlerts.b30.length }}
≤ 30 dagen
{{ ceoAlerts.b60.length }}
≤ 60 dagen
{{ ceoAlerts.b90.length }}
≤ 90 dagen
{{ ceoAlerts.laag.length }}
Lage marge <20%
Contracten die aandacht nodig hebben
{{ c.naam }}
{{ c.eindklant || '—' }}
{{ getContractAlertLevel(c.einddatum,new Date()).label }}
Geen aflopende contracten binnen 90 dagen ✓
Lage marges
{{ x.c.naam }}
{{ x.c.eindklant || '—' }}
{{ fmtPct(x.marge) }}
Alle marges ≥ 20% ✓

Business Intelligence

Automatische managementinzichten op basis van bestaande data · realtime

Wat moet de directie vandaag weten?
{{ p.icon }}{{ p.tekst }}
Automatische inzichten
{{ ins.icon }} {{ ins.tekst }}
Geen bijzonderheden — alle signalen groen.
Prioriteiten ({{ biPriorities.count }})
{{ grp.l }} ({{ biPriorities.groups[grp.k].length }})
{{ it.categorie }} · {{ it.tekst }}
Geen openstaande prioriteiten.
1 · Omzet
Omzet/mnd (nu)
{{ fmtCurKort(biOmzet.maandOmzetNu) }}
Omzet YTD (run-rate)
{{ fmtCurKort(biOmzet.omzetYTD) }}
Forecast jaaromzet
{{ fmtCurKort((biOmzet.summary&&biOmzet.summary.jaarOmzet)||0) }}
Maandomzet over 12 mnd
{{ fmtCurKort((biOmzet.summary&&biOmzet.summary.over12)||0) }}
Omzet & marge per maand
Omzet per klant (top 8)
📈Grootste groei: {{ biOmzet.grootsteGroei.naam }} +{{ fmtCur(biOmzet.grootsteGroei.maandomzet) }}/mnd
📉Grootste daling: {{ biOmzet.grootsteDaling.label }} −{{ fmtCur(biOmzet.grootsteDaling.omzet) }} ({{ biOmzet.grootsteDaling.count }} contracten aflopend)
Omzetcliffs (contracten aflopend per maand)
{{ a.label }}: {{ a.count }} contract(en){{ a.zonderVerlenging?' ('+a.zonderVerlenging+' zonder verlenging)':'' }} −{{ fmtCur(a.omzet) }}/mnd
2 · Marge
Gem. marge
{{ fmtPct(biMarge.gemMargePct) }}
Gemist rendement/mnd
{{ fmtCur(biMarge.gemistMnd) }}
Gemist rendement/jaar
{{ fmtCur(biMarge.gemistJaar) }}
Hoogste marge
{{ c.naam }}{{ fmtPct(c.margePct) }}
Laagste marge / onder 20%
{{ c.naam }}{{ fmtPct(c.margePct) }}
⚠ {{ biMarge.onder20.length }} consultant(s) onder 20% marge{{ biMarge.negatief.length?' · '+biMarge.negatief.length+' met negatieve marge':'' }}.
Kostprijsstijging zonder tariefsverhoging
{{ l.naam }}−{{ fmtCur(l.gemisteMargeJaar) }}/jr
3 · Contracten
Aflopend ≤120d
{{ biContracten.aflopend.length }}
Zonder opvolging
{{ biContracten.zonderOpvolging.length }}
Binnenkort op de bank
{{ biContracten.binnenkortBank.length }}
Verwacht omzetverlies
{{ fmtCurKort(biContracten.omzetverliesMnd) }}/mnd
{{ c.naam }} · {{ c.eindklant }} · {{ c.einddatum }} {{ c.dagen }} dgn{{ c.heeftVerlenging?'verlengd':'geen opvolging' }}
Geen contracten binnen 120 dagen aflopend.
4 · Productiviteit
Hoogste declarabiliteit
{{ r.naam||'—' }}{{ fmtPct(r.declarabiliteit||0) }}
Laagste declarabiliteit
{{ r.naam||'—' }}{{ fmtPct(r.declarabiliteit||0) }}
Hoog ziekteverzuim
{{ r.naam||'—' }}{{ fmtUren(r.ziekteUren||0) }}
5 · Facturatie
Openstaande urenstaten
{{ biFacturatie.openUrenCount }}
Openstaande facturen
{{ biFacturatie.openFacCount }}
Uren-afwijkingen
{{ biFacturatie.afwijkingen.length }}
Nog geen facturatiedata beschikbaar in Operations.
Consultant #{{ a.consultantId }} · {{ a.maand }}/{{ a.jaar }}{{ a.delta>0?'+':'' }}{{ a.delta.toFixed(1) }}u (verwacht {{ a.verwacht }}, ontvangen {{ a.ontvangen }})
6 · Kostprijs
Nog te weinig snapshots voor trendanalyse. Leg snapshots vast op de pagina Kostprijs Historie.
Stijgende kostprijs
{{ c.naam }}+{{ fmtEur(c.delta) }}/u
Geen.
Dalende kostprijs
{{ c.naam }}{{ fmtEur(c.delta) }}/u
Geen.
💰 {{ biKostprijs.pensioenWijz.length }} pensioenwijziging(en) 🚗 {{ biKostprijs.leaseWijz.length }} leasewijziging(en) 🏥 {{ biKostprijs.ziekteWijz.length }} ziektekostenwijziging(en)
7 · Bench
Op de bank
{{ biBench.count }}
Benchkosten/mnd
{{ fmtCur(biBench.maand) }}
Gemiste omzet/mnd
{{ fmtCur(biBench.gemisteOmzetMnd) }}
Gemiste omzet/jaar
{{ fmtCurKort(biBench.gemisteOmzetJaar) }}
{{ r.naam }} · {{ r.dagen }} dagen op de bank{{ fmtCur(r.maandKosten||0) }}/mnd
✅ Niemand op de bank.

Prognose

Omzet-runway, contract-tijdlijn en bench-kosten · detachering + bemiddeling gecombineerd

Productiviteit & capaciteit
Gem. declarabiliteit {{ fmtPct(productivityKpis.gemDeclarabiliteit) }} · {{ Math.round(productivityKpis.totFactureerbaar).toLocaleString('nl-NL') }} factureerbare uren/jaar
Bekijk forecast →
🛋️🔥
Bench-burn
{{ benchBurn.count }} consultant(s) op de bank — kosten zonder omzet
Totaal verbrand (sinds bank)
{{ fmtCur(benchBurn.totaalVerbrand) }}
Per week
{{ fmtCur(benchBurn.perWeek) }}
Per maand
{{ fmtCur(benchBurn.maand) }}
Op jaarbasis
{{ fmtCurKort(benchBurn.perJaar) }}
{{ r.naam }} {{ r.dagen }} dgn {{ fmtCur(r.maand) }}/mnd · {{ fmtCur(r.verbrand) }} verbrand
✅ Niemand op de bank — iedereen genereert omzet.
🚀
Aankomende starters
{{ aankomendeStarters.length }} nieuwe medewerker(s) — extra omzet vanaf hun startdatum
Extra omzet / mnd
+{{ fmtCur(aankomendeStarters.reduce((a,s)=>a+s.maandomzet,0)) }}
{{ s.naam }} over {{ s.overDagen }} dgn
Start {{ s.start }} · {{ s.rol }}
Omzet {{ fmtCur(s.maandomzet) }}/mnd Marge {{ fmtCur(s.maandmarge) }}/mnd
Omzet-runway · 12 maanden
Verwachte maandomzet o.b.v. lopende contracten en einddata
Deze maand
{{ fmtCur(runwaySummary.nu) }}
Over 12 mnd
{{ fmtCur(runwaySummary.over12) }}
Terugval
−{{ fmtCur(runwaySummary.terugval) }}
Cliff in {{ runwaySummary.valMaand.label }}: omzet zakt met {{ fmtCur(Math.abs(runwaySummary.grootsteVal)) }} — {{ runwaySummary.valMaand.totCount }} opdracht(en) lopen dan nog.
Jaartotaal · komende 12 maanden
verwacht o.b.v. lopende contracten
Detachering / jaar
{{ fmtCur(runwaySummary.jaarDetOmzet) }}
omzet · {{ fmtCur(runwaySummary.jaarDetMarge) }} marge
Bemiddeling / jaar
{{ fmtCur(runwaySummary.jaarBemOmzet) }}
omzet · {{ fmtCur(runwaySummary.jaarBemMarge) }} marge
Totale kosten / jaar
{{ fmtCur(runwaySummary.jaarKosten) }}
Gemiddeld / maand
{{ fmtCur(runwaySummary.gemMaandOmzet) }}
omzet · {{ fmtCur(runwaySummary.gemMaandMarge) }} marge
Totale omzet / jaar
{{ fmtCur(runwaySummary.jaarOmzet) }}
Totale brutomarge / jaar (winst)
{{ fmtCur(runwaySummary.jaarMarge) }}
{{ fmtPct(runwaySummary.jaarMargePct) }}
Maand {{ mo.label }} Jaar
Detachering {{ fmtCurKort(mo.detOmzet) }} {{ fmtCur(runwaySummary.jaarDetOmzet) }}
Bemiddeling {{ fmtCurKort(mo.bemOmzet) }} {{ fmtCur(runwaySummary.jaarBemOmzet) }}
Totaal omzet {{ fmtCurKort(mo.totOmzet) }} {{ fmtCur(runwaySummary.jaarOmzet) }}
Brutomarge {{ fmtCurKort(mo.totMarge) }} {{ fmtCur(runwaySummary.jaarMarge) }}
Contract-tijdlijn
Looptijd per consultant · bank = geen opdracht
Lopend Loopt af Urgent Op de bank Langdurig ziek Gaat starten
{{ ml.label }}
nu
{{ row.naam }}
🤒 langdurig ziek
🛋️ op de bank
{{ row.eindLabel }}
Geen consultants
Contract Cliffs
Wanneer valt omzet weg doordat contracten aflopen — alleen eigen consultants
{{ mo.label }}
{{ mo.count }} consultant(s) uit opdracht
−{{ fmtCur(mo.omzetVerlies) }} omzet · −{{ fmtCur(mo.margeVerlies) }} marge
{{ mo.namen.join(', ') }}
Geen aflopende contracten in de komende 12 maanden ✓
Top 10 · eerst aandacht nodig
{{ t.naam }}{{ t.eindklant || '—' }}
{{ fmtCur(t.omzet) }}/mnd {{ t.label }}
Margin Leakage
Consultants met marge onder doel (25%) of ver onder gemiddelde — gemist rendement
Gemist rendement / jaar
{{ fmtCur(margeLekTotaal) }}
Geen margelekkage — alle consultants gezond ✓
Consultant Eindklant Huidige marge Doel Gemist/mnd Gemist/jaar Prioriteit
{{ r.naam }} {{ r.eindklant }} {{ fmtPct(r.marge) }} {{ fmtPct(r.doelMarge) }} {{ fmtCur(r.gemistPmnd) }} {{ fmtCur(r.gemistPjr) }} {{ r.prio }}
Profit per klant
Detachering · per eindklant
Eindklant Omzet/mnd Marge/mnd Marge % # Cons. # Contr. Gem. duur
{{ g.klant }} {{ fmtCur(g.omzet) }} {{ fmtCur(g.marge) }} {{ fmtPct(g.margePct) }} {{ g.consultants }} {{ g.contracten }} {{ g.gemLooptijd ? g.gemLooptijd.toFixed(0)+' mnd' : '—' }}
Top 10 winstgevend
{{ g.klant }}{{ fmtCur(g.marge) }}
Top 10 minst winstgevend
{{ g.klant }}{{ fmtCur(g.marge) }}
Detachering Pressure
Risico dat consultants zonder opdracht komen te zitten
{{ detacheringPressure.score }}
Binnen 45 dgn uit opdracht
{{ detacheringPressure.binnen45.length }}
Nu op de bank
{{ detacheringPressure.opBank.length }}
Verwacht omzetverlies
{{ fmtCur(detacheringPressure.omzetverlies) }}/mnd
Binnen 45 dagen lopen {{ detacheringPressure.binnen45.length }} consultant(s) uit opdracht. Verwacht omzetverlies: {{ fmtCur(detacheringPressure.omzetverlies) }} per maand. Advies: start tijdig acquisitie voor deze consultants.
Geen directe druk — alle consultants hebben voorlopig een opdracht ✓
Cashflow Forecast
Handmatige invoer · later automatisch via Exact Online (bron: {{ 'handmatig' }})
⚠ Waarschuwing: banksaldo wordt negatief in {{ cashflowForecast.laagsteMaand }} ({{ fmtCur(cashflowForecast.laagsteSaldo) }}).
Laagste banksaldo
{{ fmtCur(cashflowForecast.laagsteSaldo) }}
{{ cashflowForecast.laagsteMaand }}
Verwacht eindsaldo (12 mnd)
{{ fmtCur(cashflowForecast.eindsaldo) }}
Status
{{ cashflowForecast.negatief ? 'Risico' : 'Gezond' }}
Scenario Planner
Speel met aannames en zie live het effect op omzet, marge en cashflow
Nieuwe opdrachten{{ scenParams.nieuweOpdrachten }}
Contractverlengingen{{ scenParams.verlengingen }}
Consultants op de bank{{ scenParams.opBank }}
Gem. tariefaanpassing{{ scenParams.gemTarief }}%
Ziekteverzuim{{ scenParams.ziekteverzuim }}%
Omzet/mnd
{{ fmtCur(scenarioUitkomst.omzet) }}
Brutomarge/mnd
{{ fmtCur(scenarioUitkomst.marge) }}
Marge %
{{ fmtPct(scenarioUitkomst.margePct) }}
Contractverlies
{{ fmtCur(scenarioUitkomst.contractverlies) }}

Consultants

Klik op een rij om te bewerken

Sorteer:
🛋️
{{ consultants.filter(c=>c.opDeBank).length }} consultant(s) op de bank {{ consultants.filter(c=>c.opDeBank).map(c=>c.naam).join(' · ') }}
🤒
{{ consultants.filter(c=>c.langdurigZiek).length }} medewerker(s) langdurig ziek {{ consultants.filter(c=>c.langdurigZiek).map(c=>c.naam).join(' · ') }}
🚀
{{ consultants.filter(c=>isAankomend(c)).length }} aankomende starter(s) {{ consultants.filter(c=>isAankomend(c)).map(c=>c.naam+' ('+c.indienstDatum+')').join(' · ') }}
Naam / Rol In dienst Uren/w Tarief/uur Kosten/uur Marge/uur Maandmarge Maandomzet Marge %
{{ c.naam }} 👋 Uit dienst 🛋️ Op de bank 🤒 Ziek 🚀 In dienst {{ c.indienstDatum }}
{{ c.rol }}
{{ c.indienstDatum }} — {{ c.urenPerWeek }}u €{{ c.verkooptarief }} {{ fmtEur(c.calc.kostenPerUur) }} {{ fmtEur(c.calc.margePerUur) }} {{ fmtCur(c.nu ? c.nu.marge : c.calc.maandelijksBrutomarge) }} {{ fmtCur(c.nu ? c.nu.omzet : c.calc.maandomzet) }} {{ fmtPct(c.calc.margePct) }}
Totaal {{ fmtCur(totaleMarge) }} {{ fmtCur(totaleOmzet) }} {{ fmtPct(gemMargePct) }}

{{ selectedConsultant.naam || 'Nieuwe Consultant' }}

Aandeelhouder · management fee 🛋️ Op de bank 🤒 Langdurig ziek 🚀 In dienst {{ selectedConsultant.indienstDatum }} 👋 Uit dienst

{{ selectedConsultant.rol }}

👋
Deze medewerker is uit dienst
Telt niet meer mee in omzet, marge, prognose of acties. Blijft bewaard voor historie.
🛋️
Deze consultant zit op de bank
Geen actieve opdracht — genereert kosten zonder omzet.
🤒
Deze medewerker is langdurig ziek
Niet beschikbaar voor opdrachten. Denk aan verzuimbegeleiding en Wet verbetering poortwachter.
🚀
Deze medewerker gaat starten
Nog niet actief — telt vanaf de startdatum mee in omzet en prognose. Denk aan onboarding en middelen.
Planning / tijdlijn
Wissel opdracht ↔ bank ↔ ziek af met van–tot datums. Huidige status + prognose volgen hieruit.
Nog geen planning. Zonder periodes gebruikt het systeem de losse velden (startdatum opdracht, op de bank, ziek) hieronder. Voeg periodes toe zodra iemand meerdere opdracht- en bankfases heeft.
Type
Van
Tot
Eindklant / opmerking
Tarief
Uren/w
Volgorde
Laat "Tot" leeg voor een doorlopende periode. Voor de status (opdracht/bank/ziek) telt bij overlap de laatst gestarte periode; gelijktijdige opdrachten tellen wél samen op in omzet & marge (bijv. 36u bij klant A + 8u bij klant B).
Periode {{ laatstVerwijderdePeriode.periode.eindklant || laatstVerwijderdePeriode.periode.opmerking || laatstVerwijderdePeriode.periode.type }} verwijderd uit de bewerking (nog niet definitief).
Marge-prognose · komende 12 maanden
Volgt de tijdlijn hierboven — gelijktijdige opdrachten worden opgeteld.
Deze maand
{{ consultantForecastSummary.nuActief ? fmtCur(consultantForecastSummary.nuMarge) : '—' }}
{{ consultantForecastSummary.nuActief ? fmtPct(consultantForecastSummary.nuPct)+' marge' : 'geen opdracht' }}
Gem. / mnd (12 mnd)
{{ fmtCur(consultantForecastSummary.gemMarge) }}
omzet {{ fmtCur(consultantForecastSummary.gemOmzet) }}
↗ Marge wordt positief vanaf {{ consultantForecastSummary.positiefVanaf }}
✓ Nu al winstgevend
⚠ Komende 12 maanden negatief — tarief of bezetting bijstellen
{{ mnd.actief ? fmtPct(mnd.margePct) : '—' }}
●{{ mnd.label }}
Elk vakje = één maand met het marge-% · groen = positief · roze = negatief · grijs = geen opdracht · cyaan kader = huidige maand · ● = werkelijk ingeklopte uren (anders prognose). Hover voor bedragen.
Basisgegevens
⏱Tarief & uren worden beheerd via Planning / Tijdlijn hierboven.
Management Fee Aandeelhouder / DGA
Geen loondienst — deze consultant kent geen bruto salaris, vakantiegeld, werkgeverslasten of pensioen. De management fee geldt als volledige maandkost. Factureerbare urenbonus en gelijkwaardige beloning zijn niet van toepassing.
Salaris & Premies
{{ fmtPct(selectedConsultant.vakantiegeldPct) }}
{{ fmtPct(selectedConsultant.werkgeversLastenPct) }}
{{ fmtPct(selectedConsultant.pensioenpremie) }}
Overige Kosten / maand
€
Declarabele Uren
{{ detailCalc.declarabeleUren?.toFixed(1) }}u
per maand · formule: 145/40 × {{ selectedConsultant.urenPerWeek }}u
Kostprijs-breakdown / maand
Bruto salaris{{ fmtCur(selectedConsultant.brutoSalaris) }}
Vakantiegeld{{ fmtCur(detailCalc.vakantiegeld) }}
Bonus{{ fmtCur(selectedConsultant.bonus) }}
Overuren{{ fmtCur(selectedConsultant.overuren) }}
Werkgeverslasten{{ fmtCur(detailCalc.werkgeverslasten) }}
Extra WW/WAB{{ fmtCur(detailCalc.extraWWWAB) }}
Pensioenpremie{{ fmtCur(detailCalc.pensioen) }}
Ziekteverz.verzekering{{ fmtCur(detailCalc.ziekteVerzekering) }}
Lease / OV{{ fmtCur(detailCalc.mobiliteit.lease) }}
Kilometers{{ fmtCur(detailCalc.mobiliteit.kilometers) }}
Brandstof{{ fmtCur(detailCalc.mobiliteit.brandstof) }}
Opleidingen{{ fmtCur(selectedConsultant.opleiding) }}
Onkostenvergoeding{{ fmtCur(selectedConsultant.onkostenvergoeding) }}
Totaal maandkosten{{ fmtCur(detailCalc.totaalMaandkosten) }}
Kostprijs / uur{{ fmtEur(detailCalc.kostenPerUur) }}
Verkooptarief{{ fmtEur(selectedConsultant.verkooptarief) }}
Marge / uur{{ fmtEur(detailCalc.margePerUur) }} ({{ fmtPct(detailCalc.margePct) }})
Pensioenberekening
Grondslag (bruto+vak × 12){{ fmtCur(detailCalc.pensioenDetail.grondslag) }}
− Franchise pro rata ({{ selectedConsultant.urenPerWeek }}/40){{ fmtCur(detailCalc.pensioenDetail.franchisePro) }}
Pensioengrondslag{{ fmtCur(detailCalc.pensioenDetail.pensioengrondslag) }}
× {{ fmtPct(detailCalc.pensioenDetail.pensPct) }} / 12{{ fmtCur(detailCalc.pensioen) }}/mnd
Factureerbare Urenbonus
{{ Math.round(selectedConsultantBonus.bonusUren) }}u
verwachte bonusuren
{{ fmtCur(selectedConsultantBonus.jaarbonus) }}
verwachte jaarbonus
{{ Math.round(selectedConsultantBonus.verwachteFactUren) }}u verwacht factureerbaar · drempel {{ selectedConsultantBonus.drempel }}u
Contract & Opdracht
Compliance
Live Berekening
{{ fmtPct(detailCalc.margePct) }}
Margepercentage
{{ margeLabel(detailCalc.margePct) }}
Kosten / uur {{ fmtEur(detailCalc.kostenPerUur) }}
Marge / uur {{ fmtEur(detailCalc.margePerUur) }}
Maandomzet {{ fmtCur(detailNu.omzet) }}
Maandmarge {{ detailNu.bron==='werkelijk'?'werkelijk':'prognose' }} {{ fmtCur(detailNu.marge) }}
Minimale tarieven
Voor 20% marge:{{ fmtEur(detailCalc.kostenPerUur / 0.80) }}
Voor 25% marge:{{ fmtEur(detailCalc.kostenPerUur / 0.75) }}
Voor 30% marge:{{ fmtEur(detailCalc.kostenPerUur / 0.70) }}
Kostenopbouw
{{ item.label }} {{ fmtCur(item.value) }}
Totaal / mnd {{ fmtCur(detailCalc.totaalMaandkosten) }}

Scenario Calculator

Simuleer het effect van tarief- of salarisverlaging

Consultant
€{{ scenarioTarief }}/uur
€{{ Math.max(30, Math.ceil((scenarioBase?.calc?.kostenPerUur||40)*0.7)) }} €200
€{{ scenarioSalaris.toLocaleString('nl-NL') }}
€2.000€12.000
Huidig
{{ fmtPct(scenarioBase?.calc?.margePct||0) }}
{{ fmtCur(scenarioBase?.calc?.maandelijksBrutomarge||0) }}/mnd
Tarief€{{ scenarioBase?.verkooptarief }}
Salaris€{{ scenarioBase?.brutoSalaris?.toLocaleString('nl-NL') }}
Kosten/uur{{ fmtEur(scenarioBase?.calc?.kostenPerUur||0) }}
Scenario
{{ fmtPct(scenarioCalc.margePct||0) }}
{{ fmtCur(scenarioCalc.maandelijksBrutomarge||0) }}/mnd
Tarief€{{ scenarioTarief }}
Salaris€{{ scenarioSalaris.toLocaleString('nl-NL') }}
Kosten/uur{{ fmtEur(scenarioCalc.kostenPerUur||0) }}
Impact vs Huidig
Marge %
{{ deltaMargeP>=0?'+':'' }}{{ fmtPct(deltaMargeP) }}
Maandmarge
{{ deltaMarge>=0?'+':'' }}{{ fmtCur(deltaMarge) }}
Kosten / uur
{{ fmtEur(scenarioCalc.kostenPerUur||0) }}
{{ scenarioCalc.margePct>=0.25?'✅':scenarioCalc.margePct>=0.20?'⚠️':'🚨' }}
{{ margeLabel(scenarioCalc.margePct||0) }}
{{ scenarioAdvies }}
Tarief-marge tabel · {{ scenarioBase?.naam }} (salaris €{{ scenarioSalaris.toLocaleString('nl-NL') }}/mnd)
Tarief/uur Kosten/uur Marge/uur Maandmarge Status
€{{ row.tarief }} {{ fmtEur(row.kostenPerUur) }} {{ fmtEur(row.marge) }} {{ fmtCur(row.maandmarge) }} {{ fmtPct(row.margePct) }}

Bemiddeling — Contracten

Overzicht van alle lopende bemiddelingsopdrachten · Klik om contractdetails te bekijken

{{ bemContractAlerts.length }} opdracht(en) vereisen aandacht
Opdracht / Consultant Eindklant Leverancier Einddatum Inkoop / Verkoop Status Alert
{{ o.naam }}
{{ (bemExtern.find(e=>e.id===o.externConsultantId)||{}).naam || '—' }}
{{ (bemKlanten.find(k=>k.id===o.eindklantId)||{}).klantnaam || '—' }} {{ (bemLeveranciers.find(l=>l.id===o.leverancierId)||{}).naam || '—' }} {{ o.einddatum || '—' }} €{{ o.inkooptarief }}/u → €{{ o.verkooptarief }}/u {{ o.status }} {{ getContractAlertLevel(o.einddatum, new Date()).label }} —

Facturatie & Urencontrole — Bemiddeling

Alleen externe bemiddelingsopdrachten · {{ bemOpenUrenstaten }} open urenstaten · {{ bemOpenFacturen }} open facturen

Selecteer maand
Open urenstaten
{{ bemOpenUrenstaten }}
Open facturen
{{ bemOpenFacturen }}
Te factureren
{{ fmtCur(bemTeFactureren) }}
Geen records voor deze maand.
Opdracht Verwacht Ontvangen Urenstaat Factuur Status Docs
{{ bemFacOpdrachtNaam(f) }} {{ f.urenVerwacht }}u {{ f.status }} {{ f.uploads?.length || 0 }}
{{ bemFacOpdrachtNaam(bemSelectedFacRecord) }} — Details
Documenten
📎 {{ u.naam }} {{ u.datum }} · {{ u.grootte }}

Bemiddeling — Overzicht

Lopende opdrachten, marges en contractmomenten

Lopende opdrachten
{{ bemLopend.length }}
van {{ bemOpdrachten.length }} totaal
Omzet / mnd
{{ fmtCur(bemOmzetPm) }}
Brutomarge / mnd
{{ fmtCur(bemMargePm) }}
{{ fmtPct(bemGemMarge) }} gemiddeld
Urgente Alerts
{{ bemAlertsAll.filter(a=>a.type==='urgent').length }}
Klanten
{{ bemKlanten.length }}
{{ bemKlanten.filter(k=>k.status==='actief').length }} actief
Leveranciers
{{ bemLeveranciers.length }}
{{ bemExtern.filter(e=>e.status==='ingezet').length }} consultants ingezet
Top 5 Winstgevend (marge/mnd)
{{ o.naam }}
{{ bemKlanten.find(k=>k.id===o.eindklantId)?.klantnaam || '—' }}
{{ fmtCur(o.calc.brutomargePm) }}
{{ fmtPct(o.calc.margePct) }}
Geen opdrachten
Recente Alerts
{{ al.naam }}
{{ al.msg }}
Geen actieve alerts

Opdrachten

Alle bemiddelingsopdrachten · klik rij voor detail

Sorteer:
Opdracht Klant Verkoop/u Inkoop/u Marge/mnd Marge % Einddatum Status
{{ o.naam }}
{{ o.functie }}
{{ bemKlanten.find(k=>k.id===o.eindklantId)?.klantnaam || '—' }} €{{ o.verkooptarief }} €{{ o.inkooptarief }} {{ fmtCur(o.calc.brutomargePm) }} {{ fmtPct(o.calc.margePct) }} {{ o.einddatum || '—' }} {{ o.status }}
Geen opdrachten gevonden

{{ selectedBemOpdr.naam }}

{{ selectedBemOpdr.status }} {{ bemKlanten.find(k=>k.id===selectedBemOpdr.eindklantId)?.klantnaam || '—' }}
Marge / mnd
{{ fmtCur(selectedBemOpdrCalc.brutomargePm) }}
{{ fmtPct(selectedBemOpdrCalc.margePct) }} marge
Omzet / mnd
{{ fmtCur(selectedBemOpdrCalc.omzetPm) }}
Totale marge (looptijd)
{{ fmtCur(selectedBemOpdrCalc.totaalMarge) }}
{{ selectedBemOpdrCalc.looptijdMnd }} maanden
Algemeen
Tarieven & Uren
Marge per uur{{ fmtEur(selectedBemOpdrCalc.margePerUur) }}
Declarabele uren/mnd{{ selectedBemOpdrCalc.decUren.toFixed(1) }}u
Tariefstaffel · vanaf-datum
Elke regel geldt vanaf zijn datum tot de volgende. Forecast én facturatie gebruiken automatisch het tarief dat in die maand gold. Zonder regels geldt het vaste tarief hierboven voor de hele looptijd.
VanafVerkoop €/uInkoop €/uUren/wk
Nog geen staffel — het vaste tarief hierboven geldt voor de hele looptijd.
Contractperiode
Contracten & GB

Klanten

Eindklanten voor bemiddelingsopdrachten

Klant Opdrachten Status
{{ k.klantnaam }}
{{ k.contactpersoon }}
{{ bemOpdrachten.filter(o=>o.eindklantId===k.id).length }} {{ k.status }}
Detail
Selecteer een klant

Leveranciers

Externe partijen die consultants leveren

Leverancier Inkoop/u Status
{{ l.bedrijfsnaam }}
{{ l.contactpersoon }}
€{{ l.standaardInkooptarief }} {{ l.status }}
Detail
Selecteer een leverancier

Externe Consultants

Ingekochte consultants van leveranciers

Naam / Rol Leverancier Inkoop/u Status
{{ e.naam }}
{{ e.rol }} · {{ e.senioriteit }}
{{ bemLeveranciers.find(l=>l.id===e.leverancierId)?.bedrijfsnaam || '—' }} €{{ e.inkooptarief }} {{ e.status }}
Detail
Selecteer een consultant

Mijn Acties

{{ bemActiesRood }} urgent · {{ bemActiesOranje }} aandacht nodig · Bemiddeling

Direct actie Binnenkort actie In orde
{{ a.categorie }} {{ a.prio === 'rood' ? 'Urgent' : 'Let op' }}
{{ a.titel }}
{{ a.omschrijving }}
Ga naar →
✅
Geen openstaande acties
Alles is up-to-date

Scenario Calculator

Bereken marge voor een nieuwe bemiddelingsopdracht

€{{ bemScenVerkoop }}
€40€200
€{{ bemScenInkoop }}
€30€180
{{ bemScenUren }}u
8u40u
{{ bemScenLooptijd }} mnd
1 mnd36 mnd
{{ fmtPct(bemScenTargetMarge) }}
5%50%
Marge per uur
{{ fmtEur(bemScenCalc.margePerUur) }}
{{ fmtPct(bemScenCalc.margePct) }}
Brutomarge / mnd
{{ fmtCur(bemScenCalc.brutomargePm) }}
Totale marge
{{ fmtCur(bemScenCalc.totaalMarge) }}
Totale omzet
{{ fmtCur(bemScenCalc.totaalOmzet) }}
Min. verkoop voor {{ fmtPct(bemScenTargetMarge) }}
{{ fmtEur(bemScenCalc.minVerkoop) }}
{{ bemScenCalc.margePct >= bemScenTargetMarge ? 'Doelmarge gehaald' : 'Doelmarge NIET gehaald' }}
Verhoog verkooptarief naar minimaal {{ fmtEur(bemScenCalc.minVerkoop) }} voor {{ fmtPct(bemScenTargetMarge) }} marge. Marge van {{ fmtPct(bemScenCalc.margePct) }} overschrijdt doelstelling van {{ fmtPct(bemScenTargetMarge) }}.

Detachering Hub

Contracten · Facturatie · Actielijst

Lopende Contracten
{{ consultants.filter(c=>c.contractStatus==='actief'||c.contractStatus==='loopt-af'||c.contractStatus==='verlenging-aangevraagd'||c.contractStatus==='verlenging-akkoord').length }}
Contract Alerts
{{ opsContractAlerts.length }}
Bekijk →
Open Urenstaten
{{ opsOpenUrenstaten }}
Open Facturen
{{ opsOpenFacturen }}
Te Factureren
{{ fmtCur(opsTeFactureren) }}
Gefactureerd
{{ fmtCur(opsGefactureerd) }}
Urgente Acties
{{ opsActiesRood }}
Totaal Acties
{{ opsActies.length }}
Bekijk →
Contract Alerts
{{ c.naam }}
{{ c.eindklant }} · {{ c.broker }}
{{ c.alert.label }}
Recente Acties
{{ a.categorie }}
{{ a.titel }}
{{ a.omschrijving }}
✓ Geen openstaande acties

Contracten

Klik een medewerker om zijn contract direct in te klappen en te bewerken

{{ opsContractAlerts.length }} contract(en) vereisen aandacht
Consultant Eindklant · Broker Accountmanager Einddatum Uren/week Status Alert
Geen medewerkers gevonden.
Nieuw facturatierecord — Detachering
Alleen eigen GOOD GUYS IT consultants
⚠ {{ detFacModalError }}

Facturatie & Urencontrole — Detachering

Alleen eigen GOOD GUYS IT consultants · {{ opsOpenUrenstaten }} open urenstaten · {{ opsOpenFacturen }} open facturen

{{ MAANDEN_NL[opsFacMaand] }} {{ opsFacJaar }}
Consultant Broker Verwacht Ontvangen Afwijking Urenstaat Factuur Status
Geen records voor deze periode

Mijn Acties

{{ opsActiesRood }} urgent · {{ opsActiesOranje }} aandacht nodig

Direct actie Binnenkort actie In orde
{{ a.categorie }} {{ a.prio === 'rood' ? 'Urgent' : 'Let op' }}
{{ a.titel }}
{{ a.omschrijving }}
Ga naar →
✅
Geen openstaande acties
Alles is up-to-date

Factureerbare Urenbonus

Prognose van de jaarlijkse urenbonus per eigen GOOD GUYS IT consultant · uitsluitend loondienst

Bonusregeling — standaardinstellingen
{{ fmtPct(bonusSettings.bonusPercentage) }}
{{ fmtPct(bonusSettings.ziekteverzuimPct) }}
Verwachte bonuskosten / jaar
{{ fmtCurKort(bonusKpis.totaalBonusKostenJaar) }}
Consultants boven {{ bonusSettings.bonusDrempelUren }}u
{{ bonusKpis.aantalBovenDrempel }} / {{ consultants.length }}
Hoogste bonusrisico
{{ bonusKpis.hoogsteRisico.naam }}
{{ fmtCur(bonusKpis.hoogsteRisico.jaarbonus) }}/jaar
Geen bonusrisico
Gem. verwachte fact. uren
{{ Math.round(bonusKpis.gemVerwachteFactUren) }}u
Totale bonusuren
{{ Math.round(bonusKpis.totaleBonusUren) }}u
Werkgeverskosten incl. bonus
{{ fmtCurKort(bonusKpis.totaleWerkgeverskostenInclBonus) }}
Consultant u/wk Bruto jaaruren Vakantie Ziekte Overig n.f. Verw. fact. Bonusuren Intern uurloon Bonus/uur Jaarbonus Status
{{ c.naam }} {{ c.urenPerWeek || '—' }} {{ Math.round(c.bonus.brutoJaaruren) }} {{ Math.round(c.bonus.vakantieUren) }} {{ Math.round(c.bonus.ziekteUren) }} {{ Math.round(c.bonus.feestUren + c.bonus.overige) }} {{ Math.round(c.bonus.verwachteFactUren) }} {{ Math.round(c.bonus.bonusUren) }} {{ fmtEur(c.bonus.internUurloon) }} {{ fmtEur(c.bonus.bonusPerUur) }} {{ c.bonus.jaarbonus>0 ? fmtCur(c.bonus.jaarbonus) : '—' }} {{ c.bonus.status }}
{{ bonusModalConsultant.naam }}
{{ bonusModalConsultant.rol }} · {{ bonusModalConsultant.urenPerWeek }}u/week
{{ bonusModalCalc.status }}
Aandeelhouder · management fee
Factureerbare urenbonus niet van toepassing

{{ bonusModalConsultant.naam }} ontvangt een management fee van {{ fmtCur(bonusModalConsultant.managementFee) }}/mnd (ex btw) en geen loon. De urenbonusregeling geldt alleen voor consultants in loondienst.

Uren per week{{ bonusModalConsultant.urenPerWeek }}u Verwachte factureerbare uren{{ Math.round(bonusModalCalc.verwachteFactUren) }}u Management fee / jaar{{ fmtCur(bonusModalCalc.kosten.managementFeeJaar) }}
Werkgeverskosten / jaar
Bruto salaris (12×){{ fmtCur(bonusModalCalc.kosten.brutoJaar) }}
Vakantiegeld{{ fmtCur(bonusModalCalc.kosten.vakantiegeld) }}
Vaste beloning / bonus{{ fmtCur(bonusModalCalc.kosten.bonusJaar) }}
Werkgeverslasten{{ fmtCur(bonusModalCalc.kosten.werkgeverslasten) }}
Pensioen{{ fmtCur(bonusModalCalc.kosten.pensioen) }}
Overige vaste kosten{{ fmtCur(bonusModalCalc.kosten.overigeVast + bonusModalCalc.kosten.onkJaar) }}
Totale werkgeverskosten{{ fmtCur(bonusModalCalc.kosten.totaal) }}
÷ werkbare uren{{ Math.round(bonusModalCalc.beschikbaar) }}u
Intern uurloon{{ fmtEur(bonusModalCalc.internUurloon) }}
Urenprognose / jaar
Bruto jaaruren ({{ bonusModalConsultant.urenPerWeek }}×52){{ Math.round(bonusModalCalc.brutoJaaruren) }}u
− Vakantie-uren{{ Math.round(bonusModalCalc.vakantieUren) }}u
− Ziekte-uren{{ Math.round(bonusModalCalc.ziekteUren) }}u
− Feestdagen{{ Math.round(bonusModalCalc.feestUren) }}u
− Overige niet-fact.{{ Math.round(bonusModalCalc.overige) }}u
− Handmatige correctie{{ Math.round(bonusModalCalc.correctie) }}u
Beschikbaar × {{ fmtPct(bonusModalCalc.input.declarabiliteit) }} declarabiliteit{{ Math.round(bonusModalCalc.beschikbaar) }}u
Verwachte factureerbare uren{{ Math.round(bonusModalCalc.verwachteFactUren) }}u
Bonusberekening
Verwachte uren − drempel ({{ bonusModalCalc.drempel }}){{ Math.round(bonusModalCalc.bonusUren) }}u
Bonus/uur ({{ fmtPct(bonusModalCalc.input.bonusPct) }} × {{ fmtEur(bonusModalCalc.internUurloon) }}){{ fmtEur(bonusModalCalc.bonusPerUur) }}
Jaarlijkse bonus{{ fmtCur(bonusModalCalc.jaarbonus) }}
Scenario aanpassen

Laat leeg = standaard uit instellingen/consultant. Alles rekent live door.

Verwachte jaarbonus
{{ fmtCur(bonusModalCalc.jaarbonus) }}
{{ Math.round(bonusModalCalc.bonusUren) }} bonusuren × {{ fmtEur(bonusModalCalc.bonusPerUur) }}

Kostprijs medewerkers

Werkgeverskosten, pensioen (met franchise 2026) en marge per consultant · Detachering

⚠ {{ kostprijsWaarschuwingen.length }} aandachtspunt(en):
Werkgeverskosten-instellingen
{{ fmtPct(employerCostSettings.werkgeverslastenPct) }}
{{ fmtPct(employerCostSettings.extraWWWABPct) }}
{{ fmtPct(employerCostSettings.pensioenPct) }}
Ziekteverzuimverzekering
{{ fmtPct(employerCostSettings.ziektePct) }}
Toegerekend bedrag per consultant is zichtbaar in de tabel hieronder ("Ziekteverz."). Klik "Verdeel" om het in elke consultant vast te leggen.
Consultant Bruto Vak.geld WG-lasten Pensioen Ziekteverz. Mobiliteit Totaal/mnd Kostpr./u Tarief Marge/u Marge %
{{ c.naam }} {{ fmtCur(c.brutoSalaris) }} {{ fmtCur(c.calc.vakantiegeld) }} {{ fmtCur(c.calc.werkgeverslasten + c.calc.extraWWWAB) }} {{ fmtCur(c.calc.pensioen) }} {{ fmtCur(c.calc.ziekteVerzekering) }} {{ fmtCur(c.calc.mobiliteit.totaal) }} {{ fmtCur(c.calc.totaalMaandkosten) }} {{ fmtEur(c.calc.kostenPerUur) }} {{ fmtEur(c.verkooptarief) }} {{ fmtEur(c.calc.margePerUur) }} {{ fmtPct(c.calc.margePct) }}

Kostprijs Historie

Verloop van personeelskosten en marge door de tijd · Detachering

⚠ Kostprijs gestegen zonder tariefaanpassing
{{ l.naam }}{{ l.van }} → {{ l.tot }} · {{ fmtEur(l.kostprijsVan) }} → {{ fmtEur(l.kostprijsTot) }}
+{{ fmtCur(l.extraKostenMnd) }}/mnd kosten −{{ fmtCur(l.gemisteMargeMnd) }}/mnd marge −{{ fmtCur(l.gemisteMargeJaar) }}/jaar
Kostprijs {{ kphDiff.kostprijsGestegen?'gestegen ↑':'gedaald ↓' }} {{ fmtEur(Math.abs(kphDiff.kostprijsDelta)) }} · Marge {{ kphDiff.margeVerbeterd?'verbeterd ↑':'verslechterd ↓' }} {{ fmtPct(Math.abs(kphDiff.margePctDelta)) }}
Kies een consultant om het kostprijsverloop te bekijken. Tip: elke wijziging van salaris, uren, tarief of lease legt automatisch een snapshot vast.
Excel-import (kostprijs medewerkers)
Kolom-mapping vanuit "Kostprijs medewerkers.xlsx" naar consultants[]. Plak tab-gescheiden rijen (naam + waarden) om later te importeren.
Excel-kolom → consultant-veld:
Rol of naam → naam
Uren per week → urenPerWeek
Salaris bruto → brutoSalaris
Overuren → overuren
Lease/OV → leaseOV
Kilometers → kilometers
Brandstof → brandstof
Opleidingen → opleiding
Onkostenvergoeding → onkostenvergoeding
Verkooptarief → verkooptarief
Werkgeverslasten, pensioen en ziekteverzuimverzekering worden automatisch berekend uit de instellingen — die hoef je niet te importeren.

Productiviteit & Capaciteit Forecast

Voorspelde productieve en factureerbare uren per consultant en organisatiebreed · Detachering

{{ prodBoekjaarKpis.gerealiseerdeMaanden }} gerealiseerd · {{ prodBoekjaarKpis.forecastMaanden }} forecast
⚠ Seizoensfactor telt op tot {{ seizoensSom.toFixed(2) }} (moet 12,00 zijn / gemiddeld 1,00). Corrigeer in de instellingen hieronder.
⚠ Ontbrekende data: . Vul dit aan bij de consultant voor een betrouwbare prognose.
Gerealiseerde omzet YTD
{{ fmtCur(prodBoekjaarKpis.omzetYTD) }}
Gerealiseerde marge YTD
{{ fmtCur(prodBoekjaarKpis.margeYTD) }}
Forecast omzet resterend
{{ fmtCur(prodBoekjaarKpis.omzetForecast) }}
Forecast marge resterend
{{ fmtCur(prodBoekjaarKpis.margeForecast) }}
Totaal omzet boekjaar {{ prodBoekjaar }}
{{ fmtCurKort(prodBoekjaarKpis.omzetBoekjaar) }}
Totaal marge boekjaar
{{ fmtCurKort(prodBoekjaarKpis.margeBoekjaar) }}
Gem. declarabiliteit
{{ fmtPct(prodBoekjaarKpis.gemDeclarabiliteit) }}
Potentiële omzet resterend
{{ fmtCurKort(prodBoekjaarKpis.potentieelForecast) }}
Gemiste omzet (geen opdracht)
{{ fmtCurKort(prodBoekjaarKpis.gemisteOmzetForecast) }}
Consultants zonder opdracht
{{ prodBoekjaarKpis.zonderContract }}
in ≥1 forecast-maand
Productieve uren / jaar
{{ Math.round(productivityKpis.totProductief).toLocaleString('nl-NL') }}
Factureerbare uren / jaar
{{ Math.round(productivityKpis.totFactureerbaar).toLocaleString('nl-NL') }}
Gem. declarabiliteit
{{ fmtPct(productivityKpis.gemDeclarabiliteit) }}
Verwachte omzet / jaar
{{ fmtCurKort(productivityKpis.omzet) }}
Verwachte brutomarge / jaar
{{ fmtCurKort(productivityKpis.marge) }}
Niet-productieve uren
{{ Math.round(productivityKpis.totNietProductief).toLocaleString('nl-NL') }}
Ziekte-uren / jaar
{{ Math.round(productivityKpis.ziekteUren).toLocaleString('nl-NL') }}
Vakantie-uren / jaar
{{ Math.round(productivityKpis.vakantieUren).toLocaleString('nl-NL') }}
Maandprognose · productiviteit {{ prodBoekjaar }}
Gerealiseerd (vol) vs forecast (licht) · jan t/m dec
{{ mo.label }}
{{ fmtPct(mo.declarabiliteit) }}
Maanddetails · {{ prodBoekjaar }}
Klik een maand uit om de prognose per consultant te controleren
Productiviteit-instellingen
⚠ Declarabiliteit moet tussen 0 en 1 liggen.
Seizoensfactor per maand
Som: {{ seizoensSom.toFixed(2) }} / 12,00 {{ prodValidatie.seizoensOk ? '✓' : '⚠ moet 12,00 zijn' }}
{{ MAAND_KORT2[mi] }}
Ziekteverzuim % per maand
{{ MAAND_KORT2[mi] }}
Medewerker-instellingen per maand
Leeg = standaard · vul een getal in om deze consultant + maand te overschrijven · wijzigingen worden automatisch opgeslagen
Consultant Vakantie (HRM) Ziekte u Opleiding u Interne u Overige u Decl. (0-1) Correctie u Notitie
{{ r.naam }}override
Scenario · productiviteit
Effect van aannames op productieve uren, omzet en marge
Ziekteverzuim extra{{ prodScenario.ziekteDelta }}%
Vakantie extra (u/jaar p.p.){{ prodScenario.vakantieDelta }}
Extra vrije dagen p.p.{{ prodScenario.extraVrijeDagen }}
Opleidingsuren extra (u/jaar p.p.){{ prodScenario.opleidingDelta }}
Interne projecten extra (u/jaar p.p.){{ prodScenario.interneDelta }}
Factureerbare uren
{{ Math.round(prodScenarioResultaat.factureerbaar).toLocaleString('nl-NL') }}
Declarabiliteit
{{ fmtPct(prodScenarioResultaat.declarabiliteit) }}
Omzet/jaar
{{ fmtCurKort(prodScenarioResultaat.omzet) }}
{{ prodScenarioResultaat.deltaOmzet<0?'':'+' }}{{ fmtCur(prodScenarioResultaat.deltaOmzet) }}
Marge/jaar
{{ fmtCurKort(prodScenarioResultaat.marge) }}
{{ prodScenarioResultaat.deltaMarge<0?'':'+' }}{{ fmtCur(prodScenarioResultaat.deltaMarge) }}
Verlies aan productiviteit
Waardoor uren niet-factureerbaar zijn · geschatte omzetderving
Totale omzetderving
{{ fmtCur(kansenverlies.totaalDerving) }}
{{ p.naam }}{{ Math.round(p.uren).toLocaleString('nl-NL') }} uur · {{ fmtCur(p.omzetDerving) }}
Totaal {{ Math.round(kansenverlies.totaalUren).toLocaleString('nl-NL') }} niet-factureerbare uren/jaar · gem. tarief {{ fmtCur(kansenverlies.gemTarief) }}/u
Bench Impact
Gemiste productiviteit door consultants op de bank
Niemand op de bank ✓
Waar verliezen we omzet?
Automatische analyse · top 5 grootste oorzaken (jaarbasis)
{{ oi+1 }}
{{ o.oorzaak }}{{ fmtCur(o.bedrag) }}
{{ o.detail }}
Geen significante omzetlekken gedetecteerd ✓

Gelijkwaardige Beloning

Toetsing per consultant/opdracht aan referentiepakket eindklant of CAO

Let op: Dit is een interne rekentool en géén juridisch advies. Raadpleeg altijd een juridisch adviseur voor bindende uitspraken over gelijkwaardige beloning (Waadi art. 8).
Case ID Medewerker Eindklant Broker Uren/w Tarief GG p/j Ref p/j Verschil p/j Status
{{ o.caseId }} {{ o.medewerkerNaam || '—' }} {{ o.calc.pakket?.eindklant || o.pakketcode || '—' }} {{ o.opdrachtgever || '—' }} {{ o.urenPerWeekOpdracht || '—' }} {{ o.uurtarief ? '€'+o.uurtarief : '—' }} {{ o.calc.ggTotaalPj ? fmtCur(o.calc.ggTotaalPj) : '—' }} {{ o.calc.klantTotaalPj ? fmtCur(o.calc.klantTotaalPj) : '—' }} {{ o.calc.verschilPj !== 0 ? (o.calc.verschilPj > 0 ? '+' : '') + fmtCur(o.calc.verschilPj) : '—' }} {{ o.calc.status }}

{{ selectedOpdracht.medewerkerNaam || 'Nieuwe opdracht' }}

{{ selectedOpdracht.caseId }}

{{ selectedOpdrachtCalc?.status || '—' }}
Let op: Interne rekentool — géén juridisch advies.
✓ Deze consultant voldoet aan gelijkwaardige beloning · GG-pakket ligt {{ fmtCur(selectedOpdrachtCalc.verschilPj) }} per jaar boven het referentiepakket.
⚠ Aanvulling nodig: {{ fmtCur(Math.abs(selectedOpdrachtCalc.verschilPj)) }} per jaar / {{ fmtCur(selectedOpdrachtCalc.compensatieNodigPm) }} per maand
○ Input incompleet — vul bruto salaris en referentiepakket aan.
Referentiepakket staat op '{{ selectedOpdrachtCalc.status }}' — vergelijking niet beschikbaar.
Opdrachtgegevens
GOOD GUYS IT Arbeidsvoorwaarden
GOOD GUYS IT Pakket — breakdown p/j
Bruto salaris (12×){{ fmtCur((selectedOpdracht.gg_brutoMaandloon||0)*12) }}
Vakantiegeld ({{ fmtPct(selectedOpdracht.gg_vakgeldPct||0) }}){{ fmtCur((selectedOpdracht.gg_brutoMaandloon||0)*12*(selectedOpdracht.gg_vakgeldPct||0)) }}
13e maand{{ fmtCur(selectedOpdracht.gg_dertiendeMaandPj) }}
Jaarbonus / urenbonus{{ fmtCur(selectedOpdracht.gg_jaarbonus) }}
Pensioen WG (12×){{ fmtCur((selectedOpdracht.gg_pensioenWgPm||0)*12) }}
Mobiliteit ({{ selectedOpdracht.gg_mobiliteitstype }}){{ fmtCur(selectedOpdrachtCalc.mobWaarde||0) }}
Netto vergoeding (12×){{ fmtCur((selectedOpdracht.gg_nettoVergoeding||0)*12) }}
Opleiding (12×){{ fmtCur((selectedOpdracht.gg_opleiding||0)*12) }}
Overige benefits (12×){{ fmtCur((selectedOpdracht.gg_overige||0)*12) }}
GG Totaal per jaar{{ fmtCur(selectedOpdrachtCalc.ggTotaalPj) }}
Referentiepakket — {{ selectedOpdrachtCalc.pakket.eindklant }}
Pro rata {{ selectedOpdracht.urenPerWeekOpdracht }}u / {{ selectedOpdrachtCalc.pakket.ftNormUren }}u = {{ ((selectedOpdrachtCalc.proRata||1)*100).toFixed(0) }}%
Ref. salaris (12×){{ fmtCur(selectedOpdrachtCalc.pakket.refSalaris*12) }}
Vakantiegeld ({{ fmtPct(selectedOpdrachtCalc.pakket.vakantiegeldPct||0) }}){{ fmtCur(selectedOpdrachtCalc.pakket.refSalaris*12*(selectedOpdrachtCalc.pakket.vakantiegeldPct||0)) }}
IKB / DI ({{ fmtPct(selectedOpdrachtCalc.pakket.ikbDiPct) }}){{ fmtCur(selectedOpdrachtCalc.pakket.refSalaris*12*selectedOpdrachtCalc.pakket.ikbDiPct) }}
13e maand ({{ fmtPct(selectedOpdrachtCalc.pakket.dertiendeMaandPct) }}){{ fmtCur(selectedOpdrachtCalc.pakket.refSalaris*12*selectedOpdrachtCalc.pakket.dertiendeMaandPct) }}
Pensioen WG (12×){{ fmtCur((selectedOpdrachtCalc.pensioenKlantPm||0)*12) }}
Reiskosten (12×){{ fmtCur(selectedOpdrachtCalc.pakket.reiskostenPm*12) }}
Zorgvergoeding (12×){{ fmtCur(selectedOpdrachtCalc.pakket.zorgPm*12) }}
Toeslagen (12×){{ fmtCur(selectedOpdrachtCalc.pakket.toeslagenPm*12) }}
Basis (fulltime){{ fmtCur(selectedOpdrachtCalc.klantTotaalPj / (selectedOpdrachtCalc.proRata||1)) }}
Ref. Totaal pro rata p/j{{ fmtCur(selectedOpdrachtCalc.klantTotaalPj) }}
Verschil per jaar {{ selectedOpdrachtCalc.verschilPj >= 0 ? '+' : '' }}{{ fmtCur(selectedOpdrachtCalc.verschilPj) }}
Verschil per maand {{ selectedOpdrachtCalc.verschilPj >= 0 ? '+' : '' }}{{ fmtCur(selectedOpdrachtCalc.verschilPj/12) }}
📋
Kies een referentiepakket om de vergelijking te zien

Referentiepakketten

Eindklant- en CAO-pakketten voor gelijkwaardige beloning

Code Eindklant / CAO Functie FT norm Ref. salaris Vakgeld IKB/DI Status
{{ p.id }} {{ p.eindklant || '—' }} {{ p.referentiefunctie || '—' }} {{ p.ftNormUren }}u {{ p.refSalaris ? fmtCur(p.refSalaris) : '—' }} {{ fmtPct(p.vakantiegeldPct||0) }} {{ p.ikbDiPct ? fmtPct(p.ikbDiPct) : '—' }} {{ p.status }}

{{ selectedPakket.eindklant || 'Nieuw pakket' }}

{{ selectedPakket.id }}

{{ selectedPakket.status }}
Pakketidentificatie
Beloningscomponenten
Pensioen WG p/m (berekend): {{ fmtCur(selectedPakket.refSalaris && selectedPakket.pensioenDrempel && selectedPakket.pensioenWgPct ? Math.max(0,(selectedPakket.refSalaris*12-selectedPakket.pensioenDrempel)*selectedPakket.pensioenWgPct)/12 : 0) }}