Each crew carries full_day_threshold_hours (default 6) and standard_day_hours (default 8). Hours at or over the threshold earn the whole day rate; a shorter day earns hours/standardDay x rate, capped at the day rate. Two shifts on one date collapse into one day.
Also called: short day pay · half day · does he get a full day rate · prorated day
- 1dayRateEarned() returns the full day rate at or above the threshold — a long day earns no more.
- 2Below the threshold it prorates and takes Math.min against the day rate so the threshold stays the only route to a full day.
- 3Time entries are grouped by ISO date before pricing, so two shifts on one day are one day's attendance.
- 4daysCredited is the fraction earned, not a count, so a short day shows as e.g. 0.5.
Paying by the day needs an answer to what counts as a day, or every short shift becomes a negotiation in the yard. Past six hours the day rate is paid in full and it is not capped: a long day does not earn more and a nearly-full day is not docked, while below the threshold it prorates. Both the threshold and the rate are settings, because the next builder does not run a six-hour day.
- Ambiguity about what a partial day earns.
- Long days quietly inflating a fixed-pool model.
- Split shifts double-counting attendance.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →