1Purpose #
- Records HOW MUCH of each attendance type each employee earned on a date — the quantity half of payroll. The rate half comes from the pay template or the attendance type's own rate options.
- Everything the pay bill counts passes through here: attendance days, overtime hours, leave days, production pieces, trips, and any deduction type.
- The leave workflow writes into these same two tables. An approved leave posts its own voucher automatically, so leave you approved elsewhere is already here — you do not key it again.
- A saved entry is the audit trail of a day's work. It is edited, never deleted and re-keyed, so the pay bill and the leave module keep pointing at the same rows.
2Your first entry, step by step #
Suppose you are recording a normal working day for a handful of employees. The page opens in Add mode.
- Check Voucher Type — usually Attendance . It is fixed once saved, so get it right first.
- Set the Date . Unless your user holds the ChangeDate permission, only today is accepted.
- Press Load Employees (F6) — the quickest start. Narrow the workforce by department, designation, group or reporting person, choose the type and a default value, and every match arrives as a finished line. The dialog counts the matches before you commit, so you always know how many lines are coming.
- Optionally press Load Shift Roster after picking a shift: every employee on it arrives with their full-day type and a value of 1, ready to correct.
- Otherwise press Add Line and type the employee's name — the list filters as you type and shows the employee ID and designation beside each name.
- Press Enter , type the attendance type (Attendance, OverTime, a leave type, a production type…). The unit fills in from the type.
- Press Enter and key the value — days, hours, pieces, whatever the unit says. Press Enter again off the last cell and the next line appears.
- Fill Time In / Time Out when the type computes its quantity from punched times; the value cell locks itself in that case.
- Press Save (F5) and confirm. The header and every line save in one transaction — nothing is ever half-saved.
- If your voucher type is set up to notify, the message goes out (or opens for your approval) straight after the save.
3How to use it #
- Find (F2) lists the saved entries newest first, with the employee, the line count and the total; leave-posted ones are tinted amber and cancelled ones red.
- Add (F3) starts a fresh voucher dated today. Modify (F4) reopens the loaded one.
- Add Line appends a row; Remove marks one for deletion on the next save; Clear Lines empties the grid (rows that came from leave or payroll stay).
- Load Employees (F6) filters the workforce and drops one ready-made line per person, all carrying the same type, value and punches. Filters default to [ALL] , and each pick-list offers only the values employees actually have — so a filter can never name a department nobody is in. Inactive employees are never loaded. Choosing a Shift fills In-Time and Out-Time from that shift's timings (and the type, when the shift names a full-day one); both stay editable afterwards.
- Load Shift Roster brings in every employee on a shift. Load Worked Hours summarises punched hours into full-day / half-day / overtime lines — it appears only where the time-management module is installed.
- All three loaders add to what is already there and skip anyone already on the voucher with the same type, so running one twice cannot double-count. The blank starter row is removed once real lines arrive.
- When the chosen type computes its quantity from the punches, Default Value is ignored and the value of each line becomes the hours between In-Time and Out-Time — so both times are required for that kind of type.
- Notify appears only when the Voucher Manager has configured e-mail or SMS for this voucher type. It shows exactly who would be told before anything is sent.
- Save (F5) commits the header and all lines in one transaction and leaves you in view mode.
- Cancel (Esc) leaves edit mode without saving. Editing an existing entry puts it back as it was; a new entry you abandon returns you to an empty screen — press Add (F3) to start another. You are asked to confirm only when something has actually been keyed.
- Change Status (F7) marks a saved entry Approved, Rejected, On Hold, Cancelled — whatever your company defines — with a remark. See Status of an entry below.
- Documents (F8) attaches files from the document store to this voucher. It appears only where the Document Management module is licensed.
- Print (Ctrl+P) prints the loaded entry: the header, every line, and the totals, with the company name and the report head repeated on every sheet.
- Mark Posted / Mark Unposted flips the entry's posting status. It appears only where your database carries the posting columns — see Posting status and division below.
4Field details #
- Division — which division of the company this work belongs to. Reporting only: payroll never reads it, and it is never mandatory. Shown only under the ERP licence with Track Division on.
- Voucher Type — the attendance book this belongs to. It also decides the numbering and whether a notification goes out.
- Voucher ID / Voucher No — the internal number is the system's; the printed number is generated for you unless the type is set to manual numbering, in which case you type it and it must not be blank.
- Date — the day the work happened. It is checked against closed periods and against your back-dating permission.
- Branch (shown in the ERP edition only) — your login branch, stamped on the voucher. It is what closed-period rules and reports are scoped by.
- Narration — free text about the whole voucher. Some voucher types make it mandatory.
- Shift / From / To — the shift and window the lines were taken from. They are only stored when the time-management switch is on, exactly as the legacy form behaved.
- Employee — any ledger account flagged as an employee. Inactive employees still appear so old entries stay readable.
- Type — an attendance/leave/production type. Its base type tells payroll what kind of quantity this is and its unit is what the value counts in.
- Value — the quantity. It may not be zero. When the type computes quantity from punched times, this cell is locked and filled from Time In / Time Out.
- Manual Amount — only types whose Rate Options is Manual accept a keyed amount; for every other type payroll works the amount out itself.
- Manual Amount greyed out on a Manual type — you may not change amounts on this voucher type. That needs Allow Rate Edit on the voucher type in User Manager (Vouchers tab); an administrator may always, unless denied under Tools > Deny Rate / Amount column edit . Hover over the cell for the reason.
- Work Site — where the work happened, when your installation tracks sites. The column is hidden while the work-site master is empty.
- Line Narration — a note about that one line.
5Leave-posted entries #
- When payroll setting 121 is on, approving a leave request posts an attendance voucher automatically . It arrives here stamped Posted by system , with each line badged leave .
- Such a voucher can not be edited at all. That is not this screen being cautious — the database itself refuses every change to a system-created attendance voucher, right down to its status.
- Its lines can not be removed either. The line carries the approval's ID; take it away and the leave module has nothing left to reverse. This screen refuses with the leave request's own number in the message.
- To undo one, cancel the leave request in the Leave module. That is the only supported reversal path, and it reverses the balance utilization with it.
- The link runs both ways: while a live attendance entry exists, the Leave module also refuses to reverse the approval — so neither side can be left dangling.
6Status of an entry #
Every saved entry carries a status, shown as a chip beside the voucher heading with a line under it naming who set it, when, and the remark they typed. Change Status (F7) opens one dialog that asks both questions at once — the new status and the reason.
- The list is yours, not a fixed six. It comes from the Status master filtered by what your user is allowed to set on this voucher type, so a company that defined Under Review or CFO Approval Stage sees those here. If the list is empty, no status has been granted to you — an administrator grants them per user and object.
- Two rights are needed, not one. Setting a status needs the Approve right on the voucher type, and — because the status is written by an update to the voucher — the Alter right as well. The button says which one is missing when it is disabled, rather than failing on the way to the database.
- What it does NOT do. A status is a marker for your own workflow and reporting. It does not post anything, does not lock the entry, and does not unlock a pay-billed one. Nothing in payroll reads it.
- A later edit overwrites it. Saving an entry stamps the status itself — Open when it is first entered, Altered on every later save (this is the legacy's own behaviour, kept deliberately). So set the status after the entry is final; modify it again and you will have to set it again.
- The same guards apply as to any other change. A closed period, a leave-posted (system-created) voucher and a voucher whose line is already in a live pay bill all refuse the status change — the database refuses every change to those rows, a status included. The refusal names the period, the leave request or the pay bill.
- The remark is stored with the entry and printed on it. It is optional, but it is the only record of why the status was set.
7Posting status and division #
Two fields attendance vouchers did not carry until now, added so this screen behaves like the inventory entry screen. Both are optional at the database level: if your database has not been updated for them, the toggle and the field are simply not there — nothing on the screen breaks, and nothing shows a button that could not work.
- Posting status is a workflow marker, shown as a chip beside the voucher heading and flipped with Mark Posted / Mark Unposted . An entry that has never been marked reads as Unposted . Who marked it and when is stamped and shown under the chip, and printed on the entry.
- It posts nothing. Exactly like the inventory screen's toggle, it records that someone considers the entry dealt with. Payroll does not read it, no ledger moves, and marking an entry posted neither locks it nor releases it.
- Two rights again. Flipping it needs the voucher-posting right on the voucher type — the same right the inventory voucher demands — and, because the flip is an update to the voucher, the Alter right as well. The button's tooltip names whichever is missing.
- The same guards apply as everywhere else on this screen: a closed period, a leave-posted (system-created) voucher and a voucher already consumed by a live pay bill all refuse the flip, and say which.
- Division is a header field naming which division of the company the day's work belongs to. It appears only when three things hold: the ERP licence, the company setting Track Division , and the database column. Only divisions applicable to your branch are offered.
- Division is stored for reporting. Payroll does not read it, it is never mandatory, and leaving it blank never blocks a save. Picking one that is no longer valid for your branch is refused before the save with a plain message rather than by the database.
- One caveat when adding. The division is stamped by a second write, which the database guards like any other update — so recording a division on a brand-new entry needs the Alter right as well as the right to create one. You are told before saving, not after; leaving the division blank avoids it entirely, and it can always be set later with Modify.
- If your administrator has not yet run the database update for these two, the screen says so the moment you try, naming the script.
8Documents and printing #
- Documents (F8) links files held in the document store to this voucher — a signed muster roll, a site sheet, a scanned overtime approval. The button appears only where the Document Management module is licensed, and only on a saved entry.
- Attachments are keyed by voucher type and voucher number, exactly as the desktop keys them, so a file attached in the desktop application is the same file here and the other way round.
- Deleting a voucher takes its document links with it — the database's own delete trigger clears them.
- Print (Ctrl+P) prints the loaded entry as a document: a header block (voucher, date, who entered it, branch in the ERP edition, the status and its remark), then one row per line with employee, employee ID, type, value, unit, amount, narration and where the line came from, then the totals.
- The company name and the report head repeat at the top of every printed sheet, and the printing date and the page number sit at the foot — so page three of a long muster is still identifiable. Switch the browser's own "Headers and footers" off in the print dialog so its URL stamp does not overlap that footer.
- The desktop printed a fixed report layout (MSAttendance.rdlc). There is no report engine in the browser, so this prints the entry itself. Nothing is stamped on the voucher when you print — unlike inventory vouchers, an attendance entry is not marked as printed and there is no re-print right to obtain.
9Notifications #
- It is off until Voucher Manager turns it on. Open Voucher Manager, pick the attendance voucher type, and set its E-mail Option and/or SMS Option plus the send events. Until then this screen shows no notification button at all.
- Send events is a list of Add / Modify / Delete. A blank list means Add only — the same default the rest of the product uses.
- The option decides the ceremony. Auto sends silently on save; Confirm shows the message read-only first; Edit Then Send lets you change it; Custom asks which profile to send through.
- Who is told: the employees named on the voucher, at the e-mail address and mobile number on their employee record, plus the standing payroll authority list (setting 197).
- Every attempt is logged in the common notification log, including the ones that never happened — an employee with no e-mail address is written down as skipped, with the reason. Look under module PAY, event Attendance.Add / .Modify .
- A notification can never break a save. Messages go out after the voucher is stored; a dead mail server adds a warning line and nothing more.
- The external API push is deliberately not offered here: it builds its body from an inventory voucher and has nothing to say about an attendance entry.
10Shortcut keys #
- F2 Find · F3 Add · F4 Modify · F5 Save · F6 Load Employees · F9 Print Format · Esc Cancel.
- Inside Load Employees , F5 is its OK button and Esc closes it — while it is open those two keys belong to the dialog, not to the page.
- F7 Change Status · F8 Documents · Ctrl+P Print — all three act on the entry currently loaded, so they do nothing while you are still keying one.
- Two kinds of print. Print (Ctrl+P) prints what is on screen, with the company name and report head repeating on every sheet. Print Format (F9) renders the document design saved for this voucher type in Print Format — the same formats and the same picker the inventory screen uses. Pick a format and Print , or Download to keep the PDF. A format marked as a group prints every member format in priority order and stops on the first failure. Print Format needs the voucher saved first, and nothing is offered when no format is configured against the voucher type.
- Inside the Change Status dialog, F5 applies the status and Esc closes it. While it is open F5 belongs to the dialog, not to Save.
- Enter moves to the next field, and off the last cell of the last line it appends a new line — the whole grid is keyboard-only.
- Ctrl+Enter puts a new line inside Narration (plain Enter moves on).
- Keys belong to the focused copy of the page, so a second tab of this screen keeps its own.
11Why is a pick-list empty? #
- Voucher Type lists the types filed under the Attendance group in Voucher Manager. Empty means none is defined — an administrator creates one there.
- Employee lists ledger accounts whose Is Employee flag is Yes. If it is empty, employees exist only as ledger accounts — set the flag in the Employee master. Inactive employees are included on purpose.
- Type lists the Attendance Type master, minus the seeded System rows (Basic Salary and friends are never keyed by hand). Empty means the master has no user types yet — the + footer creates one without leaving this page.
- Shift comes from the Shift master. Empty means no shift is defined, and the roster loader has nothing to load.
- Work Site comes from the work-site master. The whole column stays hidden while that master is empty — there is no work-site screen in the web app yet.
- Load Worked Hours is missing entirely when the time-management summary function is not installed in your database.
12Rules and integrity #
- Once payroll has used this entry, it is locked. When a pay bill has been prepared from it, the entry can not be deleted , its status or posting status can not be changed, and its lines can not be changed or removed — individually or in bulk. Cancel the pay bill and every one of those is allowed again: a cancelled pay bill releases the attendance it was holding. Lines held by a live bill carry a paid badge and are read-only in every cell; the toolbar buttons say on hover which bill is holding the entry.
- Blank lines are discarded on save. The grid adds an empty row as you tab off the last one, so a trailing blank is normal and is simply dropped — it is never an error. A row you started but did not finish is a different thing and still fails validation by row number.
- Status and posting come from Voucher Manager. A new entry starts in the status set as Default Status for its voucher type, and posted or unposted according to Default Posting Status . Where neither is configured the entry starts Open and posted, which is what this screen always did.
- Everything wrong is reported at once as a numbered checklist, with the line number on every line-level problem — never one error per save attempt.
- A voucher needs at least one line , every line needs an employee, a type and a non-zero value, and the same employee may not appear twice with the same type.
- Closed periods refuse everything. If the date falls inside an active closed period, the entry can not be made, edited or deleted — the message names the period.
- Back-dating needs permission. Without the ChangeDate tools permission only today's date is accepted while adding. The date box refuses it the moment you leave the field and puts today back — you never key a whole voucher and lose it at save. The same rule, in the same words, is enforced by the database and by every other entry screen in the application.
- Voucher type and number are fixed once saved — the database refuses to change either.
- Lines save row by row against their own record ID, never delete-and-reinsert, so the pay bill and the leave approval keep pointing at the same rows through an edit.
- Pay-billed entries are frozen. Once payroll has consumed a line, neither the line nor the voucher may change. Precisely: the lock holds while a posted , non-cancelled pay bill claims the line — an UNPOSTED pay bill claims nothing, because the database links a bill to its attendance only once it is posted.
- System-posted entries are read-only — see the leave-posted section above.
- A status change is an update like any other. It goes through the same trigger, so it needs the Alter right and is refused by a closed period, a system-created row or a live pay bill — and it is overwritten by the next save, which stamps Altered itself.
- Columns this screen does not edit are never touched : the leave-approval link, the pay-bill link and the system flags are written back exactly as they were found.
- Numbering follows the legacy exactly — the next number within the voucher type, and the printed number from the same generator the leave posting uses, so both series stay in step.
13Why this page looks the way it does #
This screen is the reference for entry screens in this application. What makes it one:
- Header above, detail below, nothing else competing. The voucher header is one compact card of four columns; everything below it belongs to the grid, which gets the remaining height.
- A live summary strip between the two — employees, lines, total value — so the number you are checking is never a scroll away.
- Keyboard first. Employee → type → value → Enter, and the next line appears. The function keys are scoped to this copy of the page, so a second tab does not steal them.
- Cells look like cells. Every editor is bordered at rest, numbers are right-aligned, headers wrap instead of truncating, and the grid keeps a working height even when empty.
- Protected rows announce themselves with colour and a badge, and explain themselves on hover — a locked row is never a mystery.
- Every control carries a one-line hint written against what the field actually does, not what its name suggests.
- Nothing is a dead end. A missing employee or attendance type is created from the pick-list footer; a loader that this database can not run is a labelled note, not a button that fails.
14If something does not work #
"You do not have the Find right on any attendance voucher type."
- Why
- Attendance rights are held per voucher type, and you have none of them.
- What to do
- An administrator grants the Find right on the attendance types you work with.
"You do not have the Delete right on ..."
- Why
- Deleting is a right of its own, per voucher type.
- What to do
- An administrator grants it.
"Voucher type is required." / "Empty data !" / "Empty request !"
- Why
- The screen sent nothing, or no voucher type was chosen.
- What to do
- Pick the attendance voucher type and try again.
"'...' computes its quantity from the punches, so In-Time and Out-Time are both required."
- Why
- That attendance type works the hours out from the times; with one missing there is nothing to compute.
- What to do
- Fill both times, or use a type where the quantity is keyed directly.
"Line ...: Time Out is earlier than Time In."
- Why
- The line's times run backwards.
- What to do
- Correct them. A night shift that crosses midnight is keyed the way your company's shift is set up, not by reversing the times.
"Pick the shift the worked hours should be summarised for."
- Why
- The hours have to be attributed to a shift before they mean anything.
- What to do
- Pick the shift; the list comes from the employee's active shifts.
"Attendance entry not found !" / "This attendance entry no longer exists - reload and try again."
- Why
- It was deleted while you had it open.
- What to do
- Press F2 and pick from the refreshed list.
"This voucher was created by another module. Reverse it there rather than deleting it here."
- Why
- Leave processing, settlement and the batch run write attendance of their own.
- What to do
- Undo it in the module that made it, so its own records stay consistent.
"Entry was created by system. You can not alter this entry" / "You can not ALTER this entry since payroll entry was found !"
- Why
- The database refuses: the attendance is system-made, or a pay bill has already claimed it.
- What to do
- Unpost or delete the pay bill first; system entries are undone where they were made.
"You can not delete this entry since payroll entry was generated during this period."
- Why
- Deleting would take away days a pay bill has paid.
- What to do
- Deal with the pay bill first.
"Transaction period was closed. You can not make/edit/delete entries !"
- Why
- The database refused: the date is in a closed period.
- What to do
- Use a date in an open period, or ask an administrator to re-open it.
"This entry is already ... Pick a different status, or close the dialog." / "Pick the status to set." / "Save or cancel the current changes first - a status belongs to a saved entry."
- Why
- Status belongs to a saved entry, and must actually change.
- What to do
- Save first, then pick a different status.
"The status list could not be read: ..."
- Why
- The statuses of this voucher type could not be fetched.
- What to do
- Try again; an administrator checks the type's status list in Voucher Manager.
"The notification could not be sent - the entry is unchanged: ..."
- Why
- The message failed BEFORE anything was written, so nothing changed.
- What to do
- Check the mail or SMS set-up, then try again.
"The notification could not be prepared - the entry is saved: ..."
- Why
- The entry IS saved; only the message failed.
- What to do
- Send it again from the notification screen; the attendance needs nothing.
"Save the entry first - documents attach to a saved voucher." / "Attaching documents needs the Document Management module licence."
- Why
- Attachments hang on a written voucher, and the store is a licensed module.
- What to do
- Save first; for the licence, ask your vendor.
"Load a saved entry to print it." / "Save the entry before printing it with a format." / "The entry could not be printed: ..."
- Why
- Printing reads a written entry, and needs a format attached to the voucher type.
- What to do
- Save, then print; an administrator attaches the formats.
"Unable to load the attendance entry list: ..." / "Reference lists could not be loaded: ..."
- Why
- The API was unreachable, or a lookup query failed.
- What to do
- Try again; the text after the colon is the server's.
This is the help InvoiceNET® ERP shows beside the Attendance / Leave / Production Entry 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.