Skip to content
CogniYukti

Doing the work

Change the rate card and every past project silently re-costs itself.

Which means the margin you reported last quarter is not the margin the system will show you next quarter, and nobody can say which was right.

Pinning the rate at approval fixes it, and the fix has to survive the correction path too.

Pinning

Resolved at approval, from the booking that covered that week.

Not from today's card, and not from the person's default alone — from the booking that actually covered the work date, falling back to their default, falling back to nothing rather than to a guess.

And the finance correction that can edit an approved line deliberately does not reset them. That is the part most systems get wrong: they pin the rate, then quietly unpin it the moment somebody fixes a typo.

One consultant, one project
  • Week of 4 Augapproved · rate pinned then€95/hr
  • Week of 11 Augapproved · rate pinned then€95/hr
  • 1 Septhe rate card changes→ €110/hr
  • Week of 8 Sepapproved at the new rate€110/hr
August is still costed at August's rate. Change the card tomorrow and last quarter's margin does not move — which is the only version of a margin anybody can defend.
Illustrative
  • The correction is a separate right, fully audited

    Before and after, on a line somebody else already approved.

  • And it still keeps the totals honest

    The parent's figures are recomputed, because a corrected line that leaves a stale total is worse than no correction.

Entering it

Four rules enforced twice — in the code and in the database.

Quarter-hour granularity. A sane daily maximum. And an exclusive choice between a project and an overhead bucket, so time is never both and never neither — which is the rule that makes utilisation mean anything.

Editing a line builds the hypothetical merged line and validates that before changing anything, so a partial edit cannot produce a combination the rules would have refused.

  • Attendance drift is a warning, never a block

    Hours logged are compared against hours clocked, and a large gap is reported with the percentage — and the submission goes through. Blocking it would teach people to log what the system expects.

  • Approval routes to the reporting manager

    With a check before submission, so a workspace with nobody configured is told at submission rather than leaving a timesheet stuck.

  • Billable requires a billable project

    Two separate refusals, each naming its own reason.

  • A second approval click is refused, not an error page

    With the comment naming the bug it prevents.

How is capacity calculated?

Weekly capacity minus approved leave minus any override — and an override replaces the nominal day rather than adding to it. Over-allocation is advisory and names the exact weeks that are over; it never blocks a booking.

Can a project manager approve their own project's time?

Only if they are the person's reporting manager. Approval routes by the reporting line rather than by project role — worth knowing before designing a process around it.

Is there a timer?

No. Hours are entered against a date.

How does finding somebody by skill rank results?

Skills matched first, then availability, then cost ascending — the cheapest qualified person first.