1Purpose #
- Defines a working-day pattern that employees are assigned to; attendance processing compares each day's punches against it.
- Decides what a day earns — the full-day, half-day and overtime attendance types — and the rules that qualify them.
- It does not assign anyone to a shift; that is done in shift assignment. It also does not hold the holiday list, which is the Holiday Settings master.
2Your first shift, step by step #
Before starting here, make sure attendance types exist (the Attendance Type master) — a shift's whole point is to award them, and the pickers on this page read from that master.
Suppose the office works 9:00 to 17:30 with a half-hour lunch, Sundays off. The page opens in Add mode.
- Type General Shift into Shift Name and GEN into Short Name . Both are required, both must be unique — the short name is what compact attendance registers print.
- Under Working Hours, set In Time 09:00 and Out Time 17:30, then Break Out 13:00 and Break In 13:30 (out to lunch, back from lunch). Watch Min Full-day Hrs : the page works it out as you type — 8 hours here — and half-day as half of that. Type over either if your rule differs.
- Give In Grace and Out Grace in minutes — say 10 and 10 — meaning a 9:08 arrival is not yet late.
- Leave Week Off as Sunday , or name another day.
- Under Attendance Types Awarded, pick what a completed day earns — typically Present for full day, Half Day for half, and an OT type for overtime.
- Punch windows can wait on day one: they matter once a punching device feeds the system, and an empty window simply means no restriction yet.
- If overtime applies, switch OT eligible ON and set its window and conversion hours; otherwise skip the whole section.
- Rules can also wait: Add Rule is for advanced per-attendance-type formulas, and most shifts run without any.
- Press Save (F5) and confirm. The shift and any rules are saved together — if anything is wrong, nothing is half-saved.
A night shift is the same except Crosses midnight must be ON, so a 21:00 in and a 05:30 out are understood as one night's work rather than nonsense.
Employees meet this shift through shift assignment; nothing on this page assigns anyone. When a shift is being replaced, switch Is Inactive ON rather than deleting it — attendance already processed against it keeps its history, and the shift just stops appearing in pickers.
3How to use it #
- Find (F2) lists every shift; pick one to load it with its rules.
- Add (F3) starts a new shift with the cursor in Shift Name.
- Fill Working Hours first — full-day and half-day hours are calculated as you type and can then be overridden.
- Add Rule appends an attendance-type rule; Remove marks one for deletion on the next save.
- Save (F5) commits the shift and its rules together in one transaction.
4Field details #
- Shift Name and Short Name are both required and both must be unique — the short name is what compact attendance reports print.
- In / Out Time bound the working day; Break Out / Break In is the unpaid break deducted from it.
- In / Out Grace are minutes of lateness or early leaving forgiven before a mark is raised.
- Min Full-day / Half-day Hrs decide what a day earns. They are derived from the times and grace minutes, and stay editable.
- Week Off names the weekly non-working day for this shift. It is per shift, which is why it is not in the holiday calendar. A NEW shift pre-fills it from the payroll Week-Off Days setting (first day) while the Default Week Off for new shifts setting is on; otherwise it starts as Sunday. Either way it stays editable.
- In/Out Marking is how punches arrive — device based by default.
- Crosses midnight marks a shift whose out punch falls on the next calendar day; without it those punches cannot be paired.
- Punch Windows are the spans in which a punch counts as that event. Device Open / Close bound when the reader accepts punches at all.
- Overtime : OT eligible turns it on, the OT window and times bound it, the conversion-hours fields set how attendance converts to OT, and the two max-hours fields cap week-off and holiday work.
- Is Inactive retires a shift — it stops appearing in pickers while its history is kept.
- Rules : each row names an attendance type, how its value is worked out, and the condition under which it applies.
5Shortcut keys #
- F2 Find · F3 Add · F4 Modify · F5 Save · Esc Cancel.
- Enter moves to the next field; from the last one it lands on Save.
- Keys belong to the focused copy of the page; a dialog's own keys win while it is open.
6Why is a pick-list empty? #
- In/Out Marking offers the usual capture methods and also accepts a typed value.
7Rules and integrity #
- Two unique names. Shift Name is the table's primary key and Short Name has its own unique index, so both are checked before saving and again on the server.
- Time sanity. Out Time can never equal In Time; the break (Break Out to Break In) must lie inside the shift's In-Out window; and Min Half-day Hrs can not exceed the shift's In-to-Out span. All three are overnight-aware — an overnight shift is measured across midnight — and all three are checked on the page first and repeated by the server with the same message.
- Payroll settings add shift rules (Payroll Settings page, Attendance & Shift group): Allow overnight shifts — when off, an Out Time not later than the In Time (and the Crosses-midnight switch) is refused; when on, an earlier Out Time simply means the shift crosses midnight. Maximum shift duration caps the In-to-Out span in hours (0 = no cap). Warn on duplicate shift timings makes saving a shift whose In/Out equal an existing shift's ask for confirmation — a warning, not a block. These rows appear after the shift-rules settings seed script has run; a database without them behaves as before (everything allowed, no warnings).
- Every rule row must name an attendance type; blank rows are refused rather than silently dropped.
- Rules save row by row. Editing a shift does not delete and re-insert its rules, so their identities survive — anything referencing a rule stays valid.
- The shift and its rules save in one transaction : if a rule fails, the shift changes roll back with it.
- Deleting a shift removes its rules too. Attendance already processed against it keeps the result it was given, so retire a shift with Is Inactive rather than deleting it once it has history.
- Permission triggers record who created and changed each row, and a delete-cleanup trigger removes linked documents.
This is the help InvoiceNET® ERP shows beside the Shift Details screen. Whether you have the screen depends on the modules of your licence and the rights your administrator has given you.
See this screen for yourself
The demo is the real product, with a company of your own.