Uren

Opmerking toevoegen

Je kunt opmerkingen plaatsen via Opmerking toevoegen aan de rechterkant van de pagina.

Overzicht

Zodra een contract getekend is en de opdracht loopt, ontstaan gewerkte uren die periodiek moeten worden geregistreerd, goedgekeurd en omgezet in een factuur richting opdrachtgever. Bij DPP komen die uren langs twee intake-routes binnen, met een per-broker cadance die verschilt van weekelijks tot maandelijks. Onder de motorkap leggen we uren vast op dagniveau zodat weken die een maandgrens kruisen correct kunnen worden gefactureerd.

Deze pagina beschrijft hoe uren binnenkomen, hoe ze worden goedgekeurd, en waarom de dagniveau-keuze noodzakelijk is voor zowel facturatie als uitbetaling.

Positie in de keten

flowchart LR
  Z[Gunning] --> A[Dossier opbouw]
  subgraph BH[Beheer]
    direction LR
    B[Contracten] --> U[Uren]
    U --> F[Facturatie]
    F --> P[Uitbetalingen]
    P -.->|periodiek| U
  end
  A --> BH
  BH --> G[Offboarding]
  classDef ph fill:none,stroke:#94a3b8,stroke-dasharray:5 5,color:#475569
  classDef act stroke:#059669,stroke-width:3px
  class BH ph
  class U act

MVP-scope (besluit 2026-05-27) — 90% wordt geautomatiseerd, 10% (uitzonderingen) houden we voorlopig handmatig. Eerste flow die we bouwen is de semi-self-billing route van Flextender; dagniveau-uren landen direct in Supabase, niet in een Google Sheet met permissies. Per-broker uitbreidingen volgen daarna.


Procesflow

Generiek verloop van een urencyclus, onafhankelijk van broker of contractvorm. Twee intake-routes convergeren op één controle- en goedkeuringspad; afgekeurde periodes gaan terug naar de bron.

flowchart TD
  S([Periodewissel of opdrachtcyclus tikt])
  S --> R{Welke intake-route?}
  R -->|Eigen / ZZP| EP[Kandidatenportaal dagniveau-invoer]
  R -->|Broker| BP[Inhuurdesk-mail of broker-portaal]
  EP --> C[Backoffice controleert tegen contract en bron]
  BP --> C
  C --> D{Binnen contractuele bandbreedte en zonder afwijking?}
  D -->|Nee| T[Terug naar kandidaat of broker met reden]
  T --> S
  D -->|Ja| G[Goedkeuring]
  G --> SB[(Dagniveau-records vastgelegd in Supabase)]
  SB --> F([Doorzet naar Facturatie])
  classDef startNode fill:#ecfeff,stroke:#0891b2,color:#0e7490
  classDef finishNode fill:#ecfdf5,stroke:#059669,color:#065f46
  classDef decisionNode fill:#fefce8,stroke:#ca8a04,color:#854d0e
  class S startNode
  class F finishNode
  class R,D decisionNode

Twee intake-routes

Bij DPP komen uren niet uit één bron. Welke route geldt, hangt af van het type opdracht en de bemiddelaar.

Bij eigen facturatie en bij ZZP-opdrachten zonder broker registreert de kandidaat zelf in het kandidatenportaal van DPP. Dit is de bron die onder DPPs eigen controle valt en die we het eerst willen koppelen aan Supabase op dagniveau.

  • Kandidaat opent de urenmodule en selecteert de periode (maand of vier weken, afhankelijk van het contract).
  • Per dag worden gewerkte uren ingevuld; bij detachering eventueel ook kilometer- of OV-vergoeding, parkeerkosten en thuiswerkdagen.
  • Totaal wordt gecontroleerd tegen het contractuele aantal uren per week (zie hieronder bij Goedkeuring).

Broker-ritmes

De cadance per broker bepaalt wanneer uren binnenkomen en wanneer facturatie + uitbetaling triggert. Onze interne kalender moet hier mee om kunnen.

Cadance per broker (DPP-praktijk)

Wanneer welke broker uitbetaalt

Broker
  • FlextenderSemi-self
    Naima (Eghal) - WelcombinatieMVP-startpunt: semi-self-billing met factuurnr terug naar portal
    W4WM
  • HeadFirstSelf-billing
    Monica SimonisSelf-billing PDF per 4-wkn, dagniveau gegroepeerd per maand
    W4WM
  • bliqSelf-billing
    Kees NieuwenhuizenBeide ritmes komen voor; full self-billing
    W4WM
  • MagnitSelf-billing
    Hanteert in de praktijk alle drie de ritmes
    W4WM
  • YachtKickback
    Kickback: kandidaat op payroll broker, DPP krijgt fee (bv. EUR 12,50/uur bij ZCP-aanbrengingen)
    W4WM
W = week, 4W = vier weken, M = maandEigenSelf-billingSemi-selfKickback

Dagniveau, niet weekniveau

Een week kan over een maandgrens vallen. Wie alleen weeknummers vasthoudt, kan niet correct factureren wanneer een opdrachtgever per maand betaalt of wanneer een broker (zoals HeadFirst) zijn PDF per maand-blok groepeert. Daarom registreren we uren op dagniveau in Supabase.

Casus Monica Simonis - HeadFirst 4-wekenperiode

Week 17 ligt in april, week 18 in mei. Self-billing-PDF (factuur 2567722505) groepeert per maand.

April 2026 (wk17): 20 uurMei 2026 (wk18): 16 uurTotaal periode: 36 uur
ma 20-4
3
di 21-4
3
wo 22-4
3
do 23-4
3
vr 24-4
3
ma 27-4
0
di 28-4
5
wo 29-4
5
do 30-4
5
vr 1-5
0
ma 4-5
6
di 5-5
0
Totaal week 17 = 15u en week 18 = 21u; HeadFirst self-billing PDF (factuurnr 2567722505, tarief €110/u). De exacte dagverdeling hierboven is een plausibele invulling - de werkelijke registratie volgt uit het kandidatenportaal of de broker-PDF. Wat telt is dat we dagen opslaan, niet alleen weeknummers.

Waarom dit voor jou belangrijk is — Zonder dagniveau ontstaat het voorschiet-risico: DPP betaalt de kandidaat op een maandritme uit, maar krijgt voor diezelfde periode pas geld binnen via een 4-wekenfactuur of andersom. Dagniveau maakt het mogelijk om per kalendermaand exact te bepalen welk deel naar welke factuur of loonstrook hoort, en hoeveel werkkapitaal er tijdelijk wordt voorgeschoten.


Goedkeuring door backoffice

1

Inkomst signaleren

Uren komen binnen via het kandidatenportaal (eigen) of via de Inhuurdesk-mail / broker-portal (bemiddelaar). Tot de IMAP-integratie staat, controleert backoffice de mailbox handmatig elke werkdag.
2

Controleren op contract

Periode binnen de contractperiode? Totaal per week binnen de contractuele bandbreedte (geen onverklaarbare onder- of overuren)? Geen overlap met een andere actieve opdracht van dezelfde kandidaat?
3

Controleren tegen broker-bron

Bij broker-route: vergelijk de aangeleverde PDF of portal-staat met wat in onze administratie staat. Verschillen direct terugkoppelen voordat goedkeuring plaatsvindt.
4

Goedkeuren of afwijzen

Bij goedkeuring schuift de urenregistratie door naar Facturatie. Bij afwijzing terug naar kandidaat of broker met expliciete reden (te veel uren, ontbrekende dag, verkeerd contract).
5

Vastleggen op dagniveau in Supabase

Onder de motorkap landt elke goedgekeurde dag als een record in Supabase. Zo blijven maandgrenzen, weekgrenzen en facturatieritmes onafhankelijk hanteerbaar.

Bij detachering: meer dan alleen uren — Goedkeuring omvat naast gewerkte uren ook eventuele kilometer- of OV-vergoeding, parkeerkosten en thuiswerkdagen als die contractueel zijn afgesproken. Deze regels lopen mee in dezelfde urenstaat zodat ze in één keer kunnen worden meegefactureerd.


Statusflow

StatusBetekenis
ConceptKandidaat is bezig met invullen (eigen route) of broker-mail binnen maar nog niet ingelezen
IngediendCompleet, wachtend op backoffice-goedkeuring
GoedgekeurdDoorgezet naar Facturatie; dagniveau-regels staan vast in Supabase
AfgekeurdTerug naar kandidaat of broker met reden
NaverwerktAchteraf bijgesteld na correctie of nagezonden uren (vermijden waar mogelijk)

Vastgelegde besluiten

BesluitDatumToelichting
Registratie op dagniveau in Supabase2026-05-27Voorwaarde voor correct factureren bij split-weeks
Geen Google Sheet als bron-of-truth2026-05-27Permissies en concurrent-edits zijn te broos voor een betrouwbare pijplijn
MVP start met semi-self-billing Flextender2026-05-27Simpelste flow met directe terugkoppeling van factuurnummer
App-password Inhuurdesk geactiveerd voor IMAP2026-05-27Bram akkoord; credential in Infisical
Backoffice keurt uren goed2026-01Admin kan goedkeuring overrulen

Technisch

Implementatiedetails voor het ontwikkelteam. Functioneel-gebruikers van de Beheer-cyclus hoeven hier niet doorheen; de inhoud hierboven beschrijft het proces volledig.

De inkomende stroom van broker-mails (self-billing-PDFs, semi-self-billing-notificaties, accordering-vragen) loopt naar één centrale mailbox die we via IMAP automatiseren.

ItemWaarde
Mailboxinhuurdesk@depubliekepartner.nl
PlatformGoogle Workspace
ProtocolIMAP over TLS (imap.gmail.com:993)
Toegang voor automatiseringApp-password (2FA-bypass per service)
Opslag van credentialInfisical /platforms/google/app-passwords/INHUURDESK
StatusApp-password uitgegeven; parser nog in ontwikkeling

Credential-beheer

App-passwords leven uitsluitend in Infisical. Niet in code, niet in .env-files committen. Rotatie alleen na expliciete go van de eigenaar van de mailbox (Bram).

Links en referenties