What records your time
A ZKTeco fingerprint device at the office. It stores every check-in and check-out.
A Windows desktop app reads the device and does the rest. The app is called DawloomAttendance. The code is at github.com/Fidazahid/DawloomAttendance. Anyone on the team can ask to see it.
The app runs on one office PC. Nothing runs in the cloud.
How your check-ins reach the app
Two ways:
- Live. While the app is open and connected, each check-in and check-out arrives straight away.
- Backfill. Every time the app connects or reconnects, it reads the stored records off the device.
The device keeps the records itself. A closed app delays the record. It does not destroy it.
The working week
Monday to Saturday. Sunday is the weekly off day.
Sundays, public holidays, and approved leave are marked as non-working days. You are never counted absent on them.
How your hours are worked out
Your times are paired. Each check-in is matched with the next check-out, and only the paired time counts as work.
The time between a check-out and your next check-in is a gap. The first 30 minutes of gaps each day are forgiven. Anything past that is taken off your hours.
paired work = all your in-to-out times added up gap = time you were checked out during the day forgiven = the first 30 minutes of gap your hours = paired work + forgiven
You do not check out for prayer, so prayer never becomes a gap. If you do check out, it is treated like any other gap.
What else the app works out each day
- Late. Your first check-in is after 9:15 AM.
- Early leaving. Your last check-out is before 7 PM.
- Overtime. Time after 7 PM. On a Sunday or a holiday, all time worked is overtime.
- Half day. You worked less than half your shift, so less than 5 hours.
- Check-in only. You checked in but never checked out.
How days count for pay
| Your hours that day | Counts as |
|---|---|
| 5 hours or more | Full day |
| Less than 5 hours | Half day |
| No check-in at all | Absent |
A day where you checked in but forgot to check out is not cut to a half day straight away. It is flagged on your report as needing correction. Get it fixed inside your 14 days and nothing is lost.
Lateness
Four lates in a month take one day off your annual leave.
If your annual leave is already finished, it comes off your pay instead. The salary slip shows which one was used.
Attendance percentage
expected hours = working days x 10 actual hours = hours worked in the period percentage = actual / expected x 100
Leave, holidays, and Sundays are removed from both sides, so taking approved leave does not lower your percentage.
Reports you get
Weekly. Covers the previous Monday to Saturday, sent as a PDF to your email.
Monthly. Covers the previous calendar month.
The app keeps a log of what it has already sent, so you never get the same report twice.
If something in a report is wrong, you have 14 days to say so. See the check-in and check-out page.
Examples
You go out at 2 PM and come back at 3 PM.
That is a 60 minute gap. The first 30 minutes are forgiven, so 30 minutes are taken off.
If you checked in at 9 AM, you now need to stay until 7:30 PM for a full day.
You go out three times for 15 minutes each.
That is 45 minutes of gap in total. The first 30 minutes are forgiven, so 15 minutes are taken off.
The 30 minutes is a daily total, not a fresh allowance for each trip.
You forgot to check out on Wednesday.
Your report flags Wednesday as needing correction. It is not cut to a half day yet.
Tell the operations lead. They can fix the punch. Do not wait for the weekly report.
The app was closed for two days. Are your times lost?
No. The device stores them. The next time the app connects it reads them back.
You worked on Sunday.
Sunday is a non-working day, so you are not marked absent and all the time you worked counts as overtime.
You took three days of approved leave and your percentage did not drop.
That is correct. Leave days are removed from both the expected hours and the actual hours.
You want to check the maths yourself.
The code is at github.com/Fidazahid/DawloomAttendance.
Services/AttendanceCalculator.cs decides late, overtime, and half day. Services/AttendancePercentage.cs has the percentage. Services/PayrollCalculator.cs turns it into pay.
If something here is wrong
If this does not match how we really work, or you think it should change, email support@dawloom.com.