MTLHK Attendance Portal
Daily Employee Timesheet
V15-style effective attendance: duplicates → corrections → punch mapping → schedule → reasons → status.
Monthly All Employees
One effective calculated record per employee/date. Changing the year or month loads automatically.
Monthly Attendance Editor
Bulk edit one employee’s entire month. Selecting an employee, year or month loads automatically. Only changed rows are saved as corrections.
Correction History
Audit history for the selected employee/month.
Need Reasons
Only genuinely unresolved exceptions appear here. Select a reason and save; there is no approval queue.
Leave Entitlements
HR must explicitly enter each employee’s entitlement for every calendar year. Previous-year entitlement is not reused; only the negative opening balance from the prior December PAID snapshot is applied.
Enter / Update Employee Entitlement
Saving confirms this employee’s entitlement for the selected year.
Yearly Leave Dashboard
Future Pre-approved leave reserves the remaining balance immediately; Used reflects actual leave dates in the selected year.
Schedule-aware half-day rules
Half-day values are derived from each employee’s assigned schedule. The prior December PAID snapshot freezes the year-end result: a negative balance becomes next-year opening carry, while a positive balance is paid through the January Annual Leave Bonus and is not carried forward.
Holiday Management
Add Public Holidays or Company Approved Holidays. For a single day, use the same start and end date.
Configured Holidays
Overlapping holiday ranges are not allowed.
Payroll Attendance Summary
Calculated from PostgreSQL using V15 payroll rules plus V16 incomplete-month proration and snapshot-based monetary YTD. FINAL employee payroll can be marked PAID and frozen as an immutable compact snapshot.
Payroll Inputs
Enter overtime hours, incentive, advance payment and PCB / Tax. Incentive is treated as earnings for statutory contribution calculations. Attendance overtime evidence is advisory only; HR confirms the final overtime hours.
Overtime Evidence Review
A likely company OT day is flagged when at least 60% of employees with a clock-out are between 17:45 and 18:15, with at least 3 employees present. This is evidence only.
Current Month Input Overview
Loaded in one PostgreSQL request for the selected month.
Add or update employee
Employee master data used by Attendance, Leave and Payroll. * Required
Statutory Contribution Tables
Automatic is the verified default. A person with an October birthday remains below 60 for October and changes to the 60+ category from November.
Import employees from attendance records
Adds only employees not already registered by Employee ID or normalized name.
Employees
Employee master list, ordered by Employee ID.
Add or update schedule
Schedule times are used directly by Attendance, half-day Leave fractions and Payroll.
Schedules
Existing schedules. Editing a schedule immediately affects employees assigned to it.
Reason Records
Saved attendance decisions. Edit a reason or remove it. A removed reason can return to Need Reasons when the attendance exception still applies.
System Administration
Protected System Health, Attendance Importer, Gmail automation, logs and print testing.
Administrator verification required
Re-enter the password for the signed-in Supabase account. The password is verified directly by Supabase Auth and is never stored by this portal.
System Check
Live PostgreSQL counts, build version and calculation-engine status. Open this page when you want a fresh health check.
Parity checkpoints
Use these dates when comparing V15 and V16. They contain the known legacy duplicate-row cases.
Print Testing
Audit the landscape Monthly Payroll Summary without marking real employees PAID. Synthetic rows are never written to PostgreSQL.
Attendance Importer
V15-compatible NGteco CSV import. Re-imports preserve the strongest employee/date punch record.
Run Gmail Import
Searches the same attendance Gmail query used by V15, skips Processed Email IDs, imports all CSV attachments, then marks successful Gmail messages read.
Manual CSV Upload
Fallback/import-test path. Select one or more NGteco CSV exports directly from this computer.
Recent Import History
Latest PostgreSQL ImportLog entries. Full administration/audit browsing comes in Phase 3K.
Automatic Gmail Attendance Import
Server-side Gmail access continues even when this portal is closed.
Automatic Import Runs
Latest scheduled/manual server-side Gmail checks.
Import Log
Attendance file import results and errors.
Processed Emails
Gmail message IDs already handled by V15/V16 duplicate protection.
Audit Log
Latest business-data and administration changes.
Performance Log
Fresh V16 telemetry only. Rows older than 90 days are automatically removed.
Pre-approved Reasons
Use Single Entry for one employee on one date, or Bulk Entry for the same reason across several dates.
Single Pre-approved Entry
Creates or updates the matching employee/date/category storage slot.
Activity
Ready.