HR & Payroll
Note — desktop feature. This chapter describes the TechieCRM desktop application. HR & Payroll is not yet available in the web portal: the web shows a read-only list of any records synced from the desktop, and none of the dialogs, toolbars, right-click actions or automations described below exist there yet.
A self-contained HR suite inside TechieCRM: people (departments, positions, teams, employees), time & attendance (punches, shifts, roster, overtime rules), leave (types, balances, requests with approval) and payroll (pay cycles, effective-dated pay, holiday pay, pay runs). (No source-CRM equivalent; distilled from the ERP22 HR module.)
In this chapter - The HR & Payroll board and its four views - HR Setup: departments, positions, teams, shifts, leave types, pay cycles, holidays, rules - Employees - Time & attendance: punches, roll-up, approving days - Leave: balances, requests, approvals - Payroll: pay cycles, running payroll, approving and paying
The board
Icon bar ▸ HR & Payroll. The first dropdown switches views: | View | Rows | Filters | |---|---|---| | Employees | one row per employee — status icon (active / applicant / on leave / terminated / retired), department, position, employment, pay, hired | Active / each status / All | | Timesheets | one row per employee-day — worked, regular, overtime, leave, late/early, status | To approve / Open / Approved / Rejected / Last 30 days | | Leave | requests — type, dates, days, status | Open / Approved / Rejected / Cancelled / All | | Payroll | pay lines — period, hours by kind, gross, pay date, status | Draft / Approved / Paid / Void / All | Toolbar: New (employee, or leave request on the Leave view), Run payroll…, HR Setup…, Column Setup (one setup per view — Employees / Timesheets / Leave / Payroll; see Chapter 20), Refresh. The header counts employees, pending leave, days to approve, draft pay lines. Right-click a row for the view's actions (approve/reject a day, approve/reject a request, approve/pay a line).
HR Setup (do this first)
HR Setup… — tabs, each a list with a form:
- Departments, Positions, Teams (a team can carry its source-CRM team code so HR teams and
CRM teams are one set).
- Shifts — name, from/to times, break minutes (paid or not), working weekdays (0,1,2,3,4 = Mon–Fri),
location.
- Leave types — name, code, unit (days/hours), annual entitlement, paid, tracks a balance, allow
negative, needs manager approval / HR approval, half days.
- Pay cycles — name, hourly or salary, period (weekly / bi-weekly / semi-monthly / monthly), a
known period start date, pay N days after the period ends, currency.
- Holidays — name, date, country/province, paid, optional pay multiplier.
- Rules — daily overtime after N hours (× multiplier), double-time after N hours, weekly overtime
after N hours, ignore overtime slivers under N minutes, late / early-out grace, automatic unpaid
break (shifts over 5 h without break punches), holiday multiplier, rounding.
Employees
New on the Employees view (or right-click ▸ New employee) → the employee dialog: | Tab | Contents | |---|---| | Basic | name, display name, employee number (assigned on create: EMP-00001…), email/phone/cell, department, position, manager, employment type, status, hire / termination dates, country/province, work location, standard hours per day and days per week, links (source-CRM user id, the person's client record, the partner record if the person is also a field partner), emergency contact, notes. | | Pay | pay cycle, hourly or salary, rate/amount, effective date → Assign / change pay (effective-dated history); commission %, currency; the pay history and this employee's pay lines. | | Time | recent days (worked / regular / OT / leave / late), Record punch (in, out, break start/end at a chosen time), Open day…. | | Leave | this year's balances (entitled / used / adjusted / available), New leave request…, Adjust balance…, the requests with Approve (manager) / Approve (HR) / Reject / Cancel. | | Teams | tick the teams the employee belongs to. |
Time & attendance
Employees punch in / out / break start / break end (from the employee dialog, or a manager records them; kiosk/mobile devices are recorded the same way). Each day rolls up automatically: worked time = in→out minus breaks (an unpaid break is deducted automatically on long days without break punches, per Rules), split into regular / overtime / double-time by the daily thresholds; late and early-out minutes come from the employee's scheduled shift (the roster — a shift assigned from a date, optionally to a date). Days with punches are open until the last punch out, then complete. Open day… shows the punches (add/delete manual ones with a note) and the roll-up; Approve day freezes the pay rate on the day; Reject flags it. Approved (or, if you choose, complete) days feed payroll.
Leave
New leave request… (employee dialog, Leave view, or right-click): leave type, from/to, part day (half / quarter for a single day), reason; the dialog shows the available balance and refuses a request that would go negative unless the type allows it. Working days exclude weekends and paid holidays. Approval follows the type: manager, then HR when required (or none — auto-approved). On final approval the balance is deducted (with an audit log) and the leave hours are booked onto each day's timesheet, so payroll pays them (paid types) automatically. Cancel a pending request from the same place.
Applying an approval is one transaction. The balance deduction, its audit-log entry, the leave hours on each day and the request's "applied" mark are written together. If any part fails, none of it is applied — the balance is not deducted and the approval can be retried — and two people approving the same request at the same moment cannot deduct it twice.
Days that are already approved or rejected are left alone. Approve day is a checkpoint — payroll may already have run against that day — so a later leave approval does not rewrite its leave hours. The request is still approved and the balance still deducted; the confirmation message names the days it could not change (for example "1 day(s) (2026-01-05) were already approved/rejected, so their leave hours were not changed — reconcile those days manually"). Open each of those days from the Timesheets view (double-click the row, or right-click ▸ Open) and adjust it yourself if the leave should be paid.
Payroll
Run payroll…: choose the pay cycle and the period (the list is built from the cycle's start date and
kind), optionally include unapproved (complete) days, Run / refresh. Each employee on that cycle
gets a line: regular / overtime (daily rules plus the weekly threshold) / leave / holiday hours, the
rate in force at period end, pay by kind, and gross. Salaried employees get the period amount.
Gross is pay by kind + commission + allowances - deductions, so a line whose deductions exceed its
pay shows a negative gross — written -$50.00 CAD, with the minus sign before the dollar sign
(Chapter 7, How money is written). A pay line whose currency has never been set shows the amount
with no currency code rather than a placeholder.
Select a line to add commission / allowances / deductions; Approve (or Approve all drafts);
Mark paid (+ AP bill) stamps the pay date and, when Financials is on, raises a bill for the employee;
Void cancels a line. Approved, paid and voided lines are all left untouched by later runs — a
voided line keeps the figures it had when you voided it, and a rerun reports it as already
approved/paid/void rather than recalculating it. Only draft lines are recomputed.
Voiding a line that was already paid and already billed asks first — "This pay line was already paid and billed (Bill #n). Void it anyway?" — because voiding does not reverse or cancel the bill in Financials: the bill stays exactly as it is and must be dealt with there (Chapter 7). Any other line (draft, approved, or paid but never billed) voids straight away with no extra question.
Who gets recorded. Approving/rejecting a day, deciding a leave request, and approving or paying a pay line all record the logged-in user in the record's approval columns — the same id whether you use the dialog buttons or the right-click menu on the board.