Dashboard
Maandoverzicht · {{ fmt(null,'month') }}
CEO Dashboard
Managementcockpit · de volledige gezondheid van GOOD GUYS IT in één oogopslag
Business Intelligence
Automatische managementinzichten op basis van bestaande data · realtime
Prognose
Omzet-runway, contract-tijdlijn en bench-kosten · detachering + bemiddeling gecombineerd
| 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) }} |
| 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 }} |
| 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' : '—' }} |
Consultants
Klik op een rij om te bewerken
| Naam / Rol | In dienst | Uren/w | Tarief/uur | Kosten/uur | Marge/uur | Maandmarge | Maandomzet | Marge % | |
|---|---|---|---|---|---|---|---|---|---|
|
{{ c.naam }}
👋 Uit dienst · {{ c.uitDienstReden }}
🛋️ Op de bank · {{ dagenOpBank(c) }} dgn
🤒 Ziek · {{ dagenZiek(c) }} dgn
🚀 In dienst {{ c.indienstDatum }}
{{ c.rol }}
· uit dienst {{ c.uitDienstDatum }}
|
{{ 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 · {{ dagenOpBank(selectedConsultant) }} dgn 🤒 Langdurig ziek · {{ dagenZiek(selectedConsultant) }} dgn 🚀 In dienst {{ selectedConsultant.indienstDatum }} · over {{ startOverDagen(selectedConsultant) }} dgn 👋 Uit dienst · {{ selectedConsultant.uitDienstReden }}{{ selectedConsultant.rol }}
Scenario Calculator
Simuleer het effect van tarief- of salarisverlaging
| 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
| 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
| Opdracht | Verwacht | Ontvangen | Urenstaat | Factuur | Status | Docs |
|---|---|---|---|---|---|---|
| {{ bemFacOpdrachtNaam(f) }} | {{ f.urenVerwacht }}u | {{ f.status }} | {{ f.uploads?.length || 0 }} |
Bemiddeling — Overzicht
Lopende opdrachten, marges en contractmomenten
Opdrachten
Alle bemiddelingsopdrachten · klik rij voor detail
| 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 }}
Klanten
Eindklanten voor bemiddelingsopdrachten
| Klant | Opdrachten | Status |
|---|---|---|
|
{{ k.klantnaam }}
{{ k.contactpersoon }}
|
{{ bemOpdrachten.filter(o=>o.eindklantId===k.id).length }} | {{ k.status }} |
Leveranciers
Externe partijen die consultants leveren
| Leverancier | Inkoop/u | Status |
|---|---|---|
|
{{ l.bedrijfsnaam }}
{{ l.contactpersoon }}
|
€{{ l.standaardInkooptarief }} | {{ l.status }} |
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 }} |
Mijn Acties
{{ bemActiesRood }} urgent · {{ bemActiesOranje }} aandacht nodig · Bemiddeling
Scenario Calculator
Bereken marge voor een nieuwe bemiddelingsopdracht
Detachering Hub
Contracten · Facturatie · Actielijst
Contracten
Klik een medewerker om zijn contract direct in te klappen en te bewerken
| Consultant | Eindklant · Broker | Accountmanager | Einddatum | Uren/week | Status | Alert | |
|---|---|---|---|---|---|---|---|
|
{{ c.naam }}
{{ c.rol }}
|
{{ c.eindklant || '—' }}
↺ {{ opdrachtHistorie(c).length }}
{{ c.broker || '' }}
|
{{ c.accountmanager || '—' }} | {{ c.einddatum || '—' }} | {{ c.urenPerWeek }}u | {{ c.contractStatus || 'actief' }} | {{ getContractAlertLevel(c.einddatum, new Date()).label }} — | {{ selectedContractCId===c.id ? '⌄' : '›' }} |
|
Contractgegevens
⏱Eindklant, tarief, uren en contractdatums worden beheerd via Opdrachten & planning hieronder — de opdracht die vandaag loopt telt als huidige waarde.
Opdrachten & planning
De huidige opdracht staat hierboven. Klik Opdracht toevoegen om alvast een volgende opdracht in te plannen (bijv. per 1 september) — je hoeft niet te wachten tot het huidige contract afloopt.
{{ periodeStatus(p)==='actief' ? '● Actief' : periodeStatus(p)==='toekomstig' ? 'Gepland' : 'Afgerond' }}
{{ p.contractPdf.naam }}
{{ p.contractPdf.grootte }}
Geen contract bijgevoegd
Laat "Tot" leeg voor een doorlopende opdracht. Elk opdracht heeft zijn eigen contract-PDF — samen vormen ze het archief. De opdracht die vandaag loopt is "Actief"; een toekomstige is "Gepland".
|
|||||||
| Geen medewerkers gevonden. | |||||||
Facturatie & Urencontrole — Detachering
Alleen eigen GOOD GUYS IT consultants · {{ opsOpenUrenstaten }} open urenstaten · {{ opsOpenFacturen }} open facturen
| Consultant | Broker | Verwacht | Ontvangen | Afwijking | Urenstaat | Factuur | Status | |
|---|---|---|---|---|---|---|---|---|
|
{{ facRecordName(f) }}
{{ facRecordEindklant(f) }}
|
{{ facRecordBroker(f) }} | {{ f.urenVerwacht }}u | {{ f.urenOntvangen }}u | {{ f.urenOntvangen >= f.urenVerwacht ? '+' : '' }}{{ f.urenOntvangen - f.urenVerwacht }}u — | {{ f.status }} | |||
|
Documenten
📎 {{ u.naam }}
{{ u.datum }} · {{ u.grootte }}
Geen documenten geüpload
|
||||||||
| Geen records voor deze periode | ||||||||
Mijn Acties
{{ opsActiesRood }} urgent · {{ opsActiesOranje }} aandacht nodig
Factureerbare Urenbonus
Prognose van de jaarlijkse urenbonus per eigen GOOD GUYS IT consultant · uitsluitend loondienst
| 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 }} ontvangt een management fee van {{ fmtCur(bonusModalConsultant.managementFee) }}/mnd (ex btw) en geen loon. De urenbonusregeling geldt alleen voor consultants in loondienst.
Laat leeg = standaard uit instellingen/consultant. Alles rekent live door.
Kostprijs medewerkers
Werkgeverskosten, pensioen (met franchise 2026) en marge per consultant · Detachering
| 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
| Datum | Bruto | Uren | Totaal/mnd | Kostpr./u | Tarief | Marge/u | Marge % | Opmerking |
|---|---|---|---|---|---|---|---|---|
| {{ s.datum }} | {{ fmtCur(s.bruto) }} | {{ s.contracturen }}u | {{ fmtCur(s.totaalMaandkosten) }} | {{ fmtEur(s.kostprijsPerUur) }} | {{ fmtEur(s.verkooptarief) }} | {{ fmtEur(s.margePerUur) }} | {{ fmtPct(s.margePct) }} | {{ s.opmerking || '—' }} |
| Nog geen snapshots. Klik "Snapshot opslaan". | ||||||||
Productiviteit & Capaciteit Forecast
Voorspelde productieve en factureerbare uren per consultant en organisatiebreed · Detachering
| Consultant | u/wk | Beschikbaar | Vakantie | Ziekte | Overig n.p. | Productief | Contract | Factureerbaar | Decl. | Omzet | Potentieel | Gemist | Marge | Status |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ d.naam }} | {{ d.contracturen }}u | {{ Math.round(d.beschikbaar) }} | {{ Math.round(d.vakantie) }} | {{ Math.round(d.ziekte) }} | {{ Math.round(d.opleiding + d.interne + d.overige) }} | {{ Math.round(d.productief) }} | {{ d.gerealiseerd ? '—' : (d.actiefContract ? '✓' : '✗') }} | {{ Math.round(d.factureerbaar) }} | {{ fmtPct(d.declarabiliteit) }} | {{ fmtCur(d.omzet) }} | {{ fmtCur(d.potentieleOmzet) }} | {{ d.gemisteOmzet>0.5 ? fmtCur(d.gemisteOmzet) : '—' }} | {{ fmtCur(d.marge) }} | {{ d.status==='gerealiseerd'?'real':d.status==='geen opdracht'?'geen opdr.':'forecast' }} override |
| Consultant | Vakantie (HRM) | Ziekte u | Opleiding u | Interne u | Overige u | Decl. (0-1) | Correctie u | Notitie | |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.naam }}override |
Gelijkwaardige Beloning
Toetsing per consultant/opdracht aan referentiepakket eindklant of CAO
| 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 }}
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 }}