1. 1. Time Entry Management
When the user has finished a block of work, the NCIA Timesheet shall allow the user to create a time entry specifying a project, a task, a date, and a duration.
When the user recalls work done at an earlier date that was not logged at the time, the NCIA Timesheet shall allow the user to create a time entry by specifying a past date, a start time, and a duration.
When the user's reporting period is due, the NCIA Timesheet shall display all time entries for the selected period in a single view so the user can verify completeness and accuracy before submission.
When the user identifies an error in a time entry, the NCIA Timesheet shall allow the user to edit the project, task, date, start time, or duration of the entry without requiring administrator intervention.
When the user deletes a time entry, the NCIA Timesheet shall remove the entry from the active record and write a deletion record to the audit log before the removal is committed.
When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall append an immutable record to the audit log containing the operation type, the document state before the change, the document state after the change, a UTC timestamp, and the identifier and display name of the active user profile.
When the user opens the audit log view, the NCIA Timesheet shall display all time entry mutations in chronological order, showing for each record the operation type, the previous value, the new value, the timestamp, and the profile that performed the change.
When the user selects an existing time entry and requests a duplicate, the NCIA Timesheet shall create a new draft entry pre-populated with the same project, task, and duration, which the user can adjust before saving.
When the user logs time for a working day, the NCIA Timesheet shall allow the user to record the location from which they are working for that date, selecting from OFFICE, HOME, or REMOTE. One location record shall be stored per profile per calendar date, independent of individual time entries.
2. 2. Timer
When the user selects a project and task and activates the timer, the NCIA Timesheet shall begin tracking elapsed time and display the running duration in real time on the active view.
While a timer is running, the NCIA Timesheet shall persist the timer start timestamp and accumulated duration to the local database at intervals of no more than 30 seconds so that elapsed time is recoverable if the application is closed or the device is restarted.
When the user switches to a different project or task while a timer is running, the NCIA Timesheet shall pause the current timer and start a new timer for the newly selected project and task in a single action.
When the user pauses the active timer, the NCIA Timesheet shall stop incrementing elapsed time, retain the accumulated duration, and display the paused state until the user explicitly resumes or stops the timer.
While a timer is running and the elapsed time since the last recorded user interaction exceeds a configurable inactivity threshold (default: 2 hours), the NCIA Timesheet shall display a notification prompting the user to confirm, adjust, or discard the accumulated time.
When the application starts and a running timer is found whose last heartbeat timestamp is older than the configured inactivity threshold, the NCIA Timesheet shall prompt the user to confirm, adjust, or discard the elapsed time before creating a time entry.
When the user stops the active timer, the NCIA Timesheet shall create a draft time entry pre-populated with the elapsed duration, the project, and the task and present it to the user for review and confirmation before saving.
3. 3. Projects and Tasks
The NCIA Timesheet shall classify all projects as one of three types: FORMAL (defined by the organisation), PROVISIONAL (created by the user), or OVERHEAD (system-defined for non-project time), and shall display this classification visually in all project and task lists.
When the user is working on an initiative without a formal project code, the NCIA Timesheet shall allow the user to create a provisional project with a user-defined name and log time against it immediately.
When a formal project code becomes available, the NCIA Timesheet shall allow the user to select one or more provisional projects and reassign all associated time entries to the formal project in a single operation, retaining the original provisional projects with a resolved timestamp for audit purposes.
The NCIA Timesheet shall provide a set of pre-defined OVERHEAD codes including at minimum: meetings, administration, training, and leave, against which the user can log time that does not belong to a specific project.
When logging time that spans multiple projects, the NCIA Timesheet shall allow the user to split a single time block across multiple projects by specifying a percentage or an explicit duration for each project.
The NCIA Timesheet shall provide a view listing all provisional projects that have time entries and have not yet been reassigned to a formal project, enabling the user to identify and resolve outstanding unallocated time.
When the user creates a custom task, the NCIA Timesheet shall allow the user to optionally map the task to a formal project so that reports can aggregate hours by the formal taxonomy while retaining the custom task detail in drill-down views.
4. 4. Allocations and Budget
When the user creates or edits a project or task, the NCIA Timesheet shall allow the user to record an estimated number of hours and, independently, an allocated number of hours representing the formally approved commitment.
The NCIA Timesheet shall display remaining hours for each project as allocated hours minus hours logged where allocated hours are set, or estimated hours minus hours logged where only estimated hours are set.
When the hours logged against a project reach a configurable warning threshold (default: 80%) of the applicable ceiling, the NCIA Timesheet shall display an in-app notification alerting the user that the budget is approaching its limit.
If the hours logged against a project exceed the applicable allocated or estimated hours ceiling, the NCIA Timesheet shall display a persistent in-app notification indicating that the budget has been exceeded.
When the user requests a capacity status view, the NCIA Timesheet shall display hours consumed and hours remaining for each active project, filterable by day, week, month, or year.
The NCIA Timesheet shall provide a summary showing total remaining hours across all active project allocations so the user can assess overall availability before accepting new work.
When a time entry causes logged hours to exceed the allocated or estimated ceiling for a project, the NCIA Timesheet shall allow the user to attach a note explaining the reason for the overrun, stored with the project record.
If the allocated hours for a project are set lower than the estimated hours, the NCIA Timesheet shall display a visual indicator on the project record alerting the user to the discrepancy between planning intent and approved budget.
5. 5. Leave and Attendance
The NCIA Timesheet shall allow the user to log absence against configurable leave types including at minimum: annual leave, sick leave, training leave, and public holiday.
-
5.9. Extended Absence Code Set TS-FR-066 The NCIA Timesheet shall support the following absence types in addition to annual leave and sick leave already required by TS-FR-031: TDY (T), Special Leave (SL), Home Leave (HL), Unpaid Leave (UL), Compassionate Leave (CL), Family Leave (FL), and Special Administrative Absence (SAA). Each code shall be selectable when recording absence and shall be included in attendance summaries and exports.
The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement minus the days logged against that type in the current leave year.
-
5.12. Annual Leave Entitlement Carry-Forward TS-FR-071 The NCIA Timesheet shall allow the user to record an annual leave entitlement carried forward from the previous leave year, stored in hours per profile per leave year. The displayed leave balance shall be calculated as carried-forward hours plus current-year entitlement hours minus hours logged against annual leave in the current leave year.
-
5.15. Leave Balance Display — Amendment: hours unit TS-FR-032A The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement in hours minus the hours logged against that type in the current leave year, plus any hours carried forward from the previous leave year (TS-FR-071).
The NCIA Timesheet shall display total productive hours worked by the user in the current year alongside the configured annual required hours target, showing the difference as a surplus or deficit.
-
5.10. Flex Time Surplus and Deficit Tracking TS-FR-067 For each calendar month, the Monthly Prescribed Hours Status Dashboard (TS-FR-072) shall display informational flex time values derived from the contracted hours profile (TS-FR-076): - Flex time gained: total hours worked in the month minus required hours for the month (where positive). - Flex time used: total hours recorded against the Flex Leave (FL) absence code in that month. Required hours for the month equals the number of working days (excluding official holidays for the user's duty location per TS-FR-075) multiplied by the standard day length derived from the contracted hours profile (TS-FR-070). The application shall not maintain a managed flex budget, shall not enforce a balance, and shall not prevent recording Flex Leave regardless of surplus. All values are informational.
When the user logs hours that cause the total for a working day to exceed the configured standard working day length, the NCIA Timesheet shall record the excess as overtime, separate from standard hours.
-
5.16. Record Overtime Separately — Amendment: threshold source TS-FR-034A When the total hours logged by the user for a calendar day exceeds the standard day length derived from the contracted hours profile (contracted hours per week divided by workweek days, per TS-FR-070 and TS-FR-076), the NCIA Timesheet shall record and display the excess as overtime, separate from standard hours in all period totals and the monthly status dashboard (TS-FR-072). The overtime threshold is derived solely from the contracted hours profile and is not a separately configurable value. No entry shall be prevented or auto-split on account of the overtime threshold; the classification is for display purposes only.
When the user requests an attendance summary for a selected period, the NCIA Timesheet shall display total standard hours worked, overtime hours, leave taken by type, and public holidays within that period.
The NCIA Timesheet shall maintain a configurable list of public holidays per year and shall automatically reduce the required hours target for any period containing a public holiday by the duration of one standard working day per holiday.
-
5.13. Working Day and Official Holiday Count on Week View TS-FR-073 On the weekly time entry view, the NCIA Timesheet shall display for the selected week: total working days in the week (Monday to Friday, i.e. 5 for a full week), and the number of those days that are official holidays for the user's duty location (TS-FR-075). These counts are informational. They shall not alter, lock, or pre-fill any time entry fields for days that coincide with official holidays.
-
5.14. Official Holiday Indicator on Day TS-FR-074 When a date in the time entry view coincides with an official holiday in the calendar applicable to the user's duty location (TS-FR-075), the NCIA Timesheet shall display a visual indicator (icon or label) next to that date identifying it as an official holiday. Time entries may still be created, edited, and deleted on official holiday dates without restriction. No hours shall be automatically attributed to the day as a result of the official holiday status. Holiday dates are managed by the user in a dedicated Holiday Calendar management UI. Users can add dates one at a time (date picker, year selector) or import from a CSV file (date, name, location columns). Dates are stored per duty location per year. The service provides a lookup API used by the day indicator, week view counts, and required hours derivation.
When the user requests an attendance summary for a selected period, the NCIA Timesheet shall include a count of working days by location type (OFFICE, HOME, REMOTE) for that period, derived from the work location records associated with the user's profile.
Time entries are always entered in hours and minutes (HH:MM). There is no decimal entry mode. When reporting and exporting, the NCIA Timesheet shall allow the user to choose between two display formats via a persistent profile-level preference: Clock format (HH:MM) or Decimal format (hours as a decimal number, e.g. 1.5 for 1h 30m). The selected format shall apply to all duration and total values on the Reports page, the Monthly Prescribed Hours Status Dashboard, and all CSV/Excel exports. Changing the format shall not alter any stored time entry values — only the display representation in reports and exports changes.
-
5.1. Log Leave by Type TS-FR-031 The NCIA Timesheet shall allow the user to log absence against configurable leave types including at minimum: annual leave, sick leave, training leave, and public holiday.
The NCIA Timesheet shall support the following absence types in addition to annual leave and sick leave already required by TS-FR-031: TDY (T), Special Leave (SL), Home Leave (HL), Unpaid Leave (UL), Compassionate Leave (CL), Family Leave (FL), and Special Administrative Absence (SAA). Each code shall be selectable when recording absence and shall be included in attendance summaries and exports.
-
5.3. Annual Hours Progress TS-FR-033 The NCIA Timesheet shall display total productive hours worked by the user in the current year alongside the configured annual required hours target, showing the difference as a surplus or deficit.
For each calendar month, the Monthly Prescribed Hours Status Dashboard (TS-FR-072) shall display informational flex time values derived from the contracted hours profile (TS-FR-076): - Flex time gained: total hours worked in the month minus required hours for the month (where positive). - Flex time used: total hours recorded against the Flex Leave (FL) absence code in that month. Required hours for the month equals the number of working days (excluding official holidays for the user's duty location per TS-FR-075) multiplied by the standard day length derived from the contracted hours profile (TS-FR-070). The application shall not maintain a managed flex budget, shall not enforce a balance, and shall not prevent recording Flex Leave regardless of surplus. All values are informational.
-
9.6. Contracted Hours and Standard Workweek on Profile TS-FR-076 The NCIA Timesheet shall allow each user profile to store the following contract work schedule fields: contracted hours per week (the total number of hours per week specified in the user's contract, default 38) and standard workweek days (the number of working days per week, default 5). Both fields shall be editable in profile settings at any time. Changes take effect immediately on all display totals but do not alter any existing time entries. These fields are informational. The application shall use them solely to derive the standard day length (TS-FR-070) for the purpose of displaying period totals (required hours, overtime, flex surplus/deficit). The application shall not enforce contracted hours, shall not prevent the user from logging more or fewer hours than contracted on any day, and shall not auto-fill or auto-deduct entries.
The NCIA Timesheet shall derive the standard working day length as contracted hours per week (TS-FR-076) divided by standard workweek days (TS-FR-076). This derived value shall be used solely for the display of period totals, including required hours per week, month, and year; flex surplus or deficit (TS-FR-067); and the notional duration subtracted from required hours for each official holiday (TS-FR-036, TS-FR-072). It shall not enforce a cap on daily entries, shall not prevent time logging on any day, and shall not trigger automatic entries.
-
5.2. Leave Balance Display TS-FR-032 The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement minus the days logged against that type in the current leave year.
The NCIA Timesheet shall allow the user to record an annual leave entitlement carried forward from the previous leave year, stored in hours per profile per leave year. The displayed leave balance shall be calculated as carried-forward hours plus current-year entitlement hours minus hours logged against annual leave in the current leave year.
-
5.6. Public Holiday Calendar TS-FR-036 The NCIA Timesheet shall maintain a configurable list of public holidays per year and shall automatically reduce the required hours target for any period containing a public holiday by the duration of one standard working day per holiday.
On the weekly time entry view, the NCIA Timesheet shall display for the selected week: total working days in the week (Monday to Friday, i.e. 5 for a full week), and the number of those days that are official holidays for the user's duty location (TS-FR-075). These counts are informational. They shall not alter, lock, or pre-fill any time entry fields for days that coincide with official holidays.
-
5.6. Public Holiday Calendar TS-FR-036 The NCIA Timesheet shall maintain a configurable list of public holidays per year and shall automatically reduce the required hours target for any period containing a public holiday by the duration of one standard working day per holiday.
When a date in the time entry view coincides with an official holiday in the calendar applicable to the user's duty location (TS-FR-075), the NCIA Timesheet shall display a visual indicator (icon or label) next to that date identifying it as an official holiday. Time entries may still be created, edited, and deleted on official holiday dates without restriction. No hours shall be automatically attributed to the day as a result of the official holiday status. Holiday dates are managed by the user in a dedicated Holiday Calendar management UI. Users can add dates one at a time (date picker, year selector) or import from a CSV file (date, name, location columns). Dates are stored per duty location per year. The service provides a lookup API used by the day indicator, week view counts, and required hours derivation.
-
5.2. Leave Balance Display TS-FR-032 The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement minus the days logged against that type in the current leave year.
The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement in hours minus the hours logged against that type in the current leave year, plus any hours carried forward from the previous leave year (TS-FR-071).
-
5.4. Record Overtime Separately TS-FR-034 When the user logs hours that cause the total for a working day to exceed the configured standard working day length, the NCIA Timesheet shall record the excess as overtime, separate from standard hours.
When the total hours logged by the user for a calendar day exceeds the standard day length derived from the contracted hours profile (contracted hours per week divided by workweek days, per TS-FR-070 and TS-FR-076), the NCIA Timesheet shall record and display the excess as overtime, separate from standard hours in all period totals and the monthly status dashboard (TS-FR-072). The overtime threshold is derived solely from the contracted hours profile and is not a separately configurable value. No entry shall be prevented or auto-split on account of the overtime threshold; the classification is for display purposes only.
The NCIA Timesheet shall require each user profile to specify a duty location, selecting from at minimum: Braine-l'Alleud (Belgium), Brussels (Belgium), Mons (Belgium), The Hague (Netherlands). The selected duty location shall determine which official holiday calendar is applied to that profile for all views and calculations that reference official holidays, including the day indicator (TS-FR-074), the working day counts (TS-FR-073), required hours derivation (TS-FR-070), and the monthly status dashboard (TS-FR-072).
6. 6. Reporting and Analysis
When the user selects a period type (day, week, month, or year) and a period value, the NCIA Timesheet shall display hours logged per project and task for that period.
-
8.11. Weekly Report View in Reports Screen TS-FR-078 When the user selects "Week" as the period type on the Reports screen and chooses an ISO week, the NCIA Timesheet shall render a read-only weekly summary table showing: one row per project-and-task combination that has at least one logged hour in the selected week; seven day columns (Mon–Sun) with the calendar date beneath the day name; each cell showing the decimal hours logged to that project on that day; a "Week total" column showing the row sum; a "Day total" row at the bottom of the table summing all project hours per day; a "Week grand total" cell at the intersection of the day total row and the week total column. Below the project rows the table shall show a separate leave-and-absence section with one row per leave type (annual leave, sick leave, overtime, flex leave taken, TDY, other absence) for any type that has a non-zero value in the selected week. The full table shall be exportable to CSV via the existing export mechanism (TS-FR-044).
The NCIA Timesheet shall display actual hours alongside estimated hours and allocated hours for each project on the period report without requiring the user to navigate to a separate view.
When the variance between actual hours and the applicable ceiling for a project exceeds a configurable threshold, the NCIA Timesheet shall notify the user with an in-app alert identifying the project and the variance amount.
When the user requests a project status report, the NCIA Timesheet shall generate a CSV file containing one row per project with columns for project name, estimated hours, allocated hours, actual hours logged, and variance.
The NCIA Timesheet shall retain actual-versus-planned data for all past periods and make it accessible in a historical view so the user can reference it when estimating future work.
When the user updates the estimated or allocated hours for a project, the NCIA Timesheet shall record the previous and new values in the project history and recalculate all variance figures from the point of the update.
When the user selects multiple periods, the NCIA Timesheet shall aggregate the time data across all selected periods into a single consolidated view showing totals per project and a period-by-period breakdown.
The NCIA Timesheet shall provide an annual status dashboard showing, for each calendar month of the selected year, the following columns: required hours (working days in the month, excluding official holidays for the user's duty location per TS-FR-075, multiplied by the standard day length derived from the contracted hours profile per TS-FR-070); hours worked (sum of all productive non-absence hours logged in that month); percentage (hours worked divided by required hours); surplus or deficit (hours worked minus required hours in decimal hours). The dashboard shall also display per month: standard hours total, overtime hours, flex leave taken, annual leave taken, sick leave taken, and other absence. The dashboard shall show an annual totals row beneath the twelve monthly rows. All values are informational and derived from logged entries. The application shall not prevent the user from logging entries that would produce unexpected totals.
7. 7. Export and Import
When the NCIA Timesheet generates any CSV export file, it shall encode the file as UTF-8 with a byte-order mark, format all dates as ISO 8601 (YYYY-MM-DD), and include column headers in English.
When the user selects a period and requests a time entries export, the NCIA Timesheet shall generate a CSV file containing one row per time entry for the selected period with all entry fields included.
When the user requests a period summary export, the NCIA Timesheet shall generate a CSV file aggregating total hours per project per day for the selected period, suitable for direct entry into an HR or payroll system.
When the user applies a project or task filter before exporting, the NCIA Timesheet shall restrict the exported records to entries matching that filter.
When the user selects a period, the NCIA Timesheet shall display a chart showing time distribution by project and task for that period alongside the tabular data.
When the user selects a CSV file for import, the NCIA Timesheet shall parse the file, display a preview of all records to be imported, report any rows that cannot be imported with the reason for rejection, and require explicit user confirmation before committing any changes.
The NCIA Timesheet shall provide a full-backup export option that produces a set of CSV files covering all data collections: time entries, projects, allocations, leave records, user profiles, and the audit log.
8. 8. Desktop Application Shell
The NCIA Timesheet shall run as a native desktop application on Windows 10 version 1803 or later and Windows 11, displaying in a dedicated native window without a browser address bar, navigation controls, or tab strip.
The NCIA Timesheet application window shall support standard Windows window operations: minimise to taskbar, maximise to full screen, restore to previous size and position, free resize by dragging edges, and close.
When the user activates the keep-on-top control, the NCIA Timesheet window shall remain in front of all other application windows until the user explicitly deactivates the control.
When the user restores the NCIA Timesheet window after minimising it, the application shall restore the window to the same screen position and dimensions it occupied before minimisation.
The NCIA Timesheet shall be distributable as a single portable executable file that runs on Windows without requiring installation, an installer package, or administrator privileges.
The NCIA Timesheet shall provide a quick-add entry mode accessible from any view, allowing the user to select a project and task and enter a duration in a single compact form without navigating away from the current view.
When the user wants to review or edit multiple entries, the NCIA Timesheet shall provide a day view and a week view that display all time entries for the selected period in an editable grid. The week view shall present seven columns (Monday through Sunday) for the selected ISO week, one row per project-and-task combination, with an editable decimal-hours cell at each day intersection. A daily subtotal row shall appear beneath all project rows showing the sum of hours logged per day. A weekly subtotal cell shall appear at the right of the daily subtotal row showing the sum across all seven days. The user may add a new project-and-task row at any time during the week session. Saving any cell shall persist the change immediately without requiring a separate submit action. Official holiday dates shall be visually indicated on their column header per TS-FR-074 and working-day and holiday counts shall be shown per TS-FR-073.
-
8.10. Weekly Time Entry Grid Route TS-FR-077 The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.
When the user opens a week view that contains no time entries, the NCIA Timesheet shall offer the option to copy all projects and tasks from the immediately preceding week or from a user-specified week number.
-
8.10. Weekly Time Entry Grid Route TS-FR-077 The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.
When the user copies projects and tasks from a previous week, the NCIA Timesheet shall allow the user to choose between copying the structure only with zero hours for all entries, or copying the full entries inclusive of the hours recorded in the source week.
-
8.10. Weekly Time Entry Grid Route TS-FR-077 The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.
-
8.7. Day View and Week View for Multi-Entry Editing TS-FR-057 When the user wants to review or edit multiple entries, the NCIA Timesheet shall provide a day view and a week view that display all time entries for the selected period in an editable grid. The week view shall present seven columns (Monday through Sunday) for the selected ISO week, one row per project-and-task combination, with an editable decimal-hours cell at each day intersection. A daily subtotal row shall appear beneath all project rows showing the sum of hours logged per day. A weekly subtotal cell shall appear at the right of the daily subtotal row showing the sum across all seven days. The user may add a new project-and-task row at any time during the week session. Saving any cell shall persist the change immediately without requiring a separate submit action. Official holiday dates shall be visually indicated on their column header per TS-FR-074 and working-day and holiday counts shall be shown per TS-FR-073.
-
8.8. Copy Projects and Tasks from a Previous Week TS-FR-058 When the user opens a week view that contains no time entries, the NCIA Timesheet shall offer the option to copy all projects and tasks from the immediately preceding week or from a user-specified week number.
-
8.9. Copy Week — Structural or Inclusive of Hours TS-FR-059 When the user copies projects and tasks from a previous week, the NCIA Timesheet shall allow the user to choose between copying the structure only with zero hours for all entries, or copying the full entries inclusive of the hours recorded in the source week.
The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.
-
6.1. Period Report TS-FR-037 When the user selects a period type (day, week, month, or year) and a period value, the NCIA Timesheet shall display hours logged per project and task for that period.
When the user selects "Week" as the period type on the Reports screen and chooses an ISO week, the NCIA Timesheet shall render a read-only weekly summary table showing: one row per project-and-task combination that has at least one logged hour in the selected week; seven day columns (Mon–Sun) with the calendar date beneath the day name; each cell showing the decimal hours logged to that project on that day; a "Week total" column showing the row sum; a "Day total" row at the bottom of the table summing all project hours per day; a "Week grand total" cell at the intersection of the day total row and the week total column. Below the project rows the table shall show a separate leave-and-absence section with one row per leave type (annual leave, sick leave, overtime, flex leave taken, TDY, other absence) for any type that has a non-zero value in the selected week. The full table shall be exportable to CSV via the existing export mechanism (TS-FR-044).
The NCIA Timesheet shall organise its primary navigation into five top-level sections as follows:
- Dashboard — the summary landing page (TS-FR-003).
- Time Entries — contains: List view (day view and week list), Weekly Grid (TS-FR-077, TS-FR-057), and Leave & Attendance (TS-FR-031 to TS-FR-036, TS-FR-063). Leave logging is a time-valued activity and shall not require navigating outside the time entry area.
- Projects — contains: Project Overview and Overhead Codes (TS-FR-016 to TS-FR-022), and Project Allocations (TS-FR-023 to TS-FR-030). Allocations are a property of projects and shall be accessible from within the Projects section.
- Reports — contains: Period Report (TS-FR-037), Weekly Report (TS-FR-078), Multi-Period Consolidation (TS-FR-043), Monthly Prescribed Hours Status Dashboard (TS-FR-072), Audit Log (TS-FR-006 to TS-FR-007), and Export & Import (TS-FR-044 to TS-FR-050). Export is a reporting output and the audit log is a reporting view; both shall be accessible from within the Reports section.
- Settings — contains: User Profile settings (TS-FR-060 to TS-FR-076) and Official Holiday Calendar management (TS-FR-075). The holiday calendar is a configuration input and shall be managed in Settings, not as a standalone top-level page.
The application shall not expose /allocations, /leave, /holiday-calendar, /status-dashboard, /audit-log, or /export as independent top-level navigation items. These destinations shall be reachable only through their parent section described above.
9. 9. User Profiles
The NCIA Timesheet shall allow the user to create one or more named local user profiles without requiring a password, a network connection, or an external account.
-
9.4. Personnel Submission Metadata (Supervisor, Sponsor, Area) TS-FR-068 The NCIA Timesheet shall allow each user profile to store the following submission metadata fields: Supervisor name, Sponsor name, and Area. These fields shall be pre-populated on any exported monthly timesheet report and shall be editable within the profile settings without affecting time entry data.
-
9.5. Employment and Contract Type Classification TS-FR-069 The NCIA Timesheet shall allow each user profile to be classified with a contract or employment type, selecting from at minimum: IWC (Individual Wage Contractor), PBC (Performance-Based Contractor), NIC (NATO International Civilian). The selected type shall be stored in the profile and displayed on exported timesheet reports.
The NCIA Timesheet shall display the active user profile at all times in the application shell and shall allow the user to switch to a different profile with a single action.
When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall tag the resulting audit log record with the identifier and display name of the active user profile at the time of the operation.
-
9.1. Create Local User Profile TS-FR-060 The NCIA Timesheet shall allow the user to create one or more named local user profiles without requiring a password, a network connection, or an external account.
The NCIA Timesheet shall allow each user profile to store the following submission metadata fields: Supervisor name, Sponsor name, and Area. These fields shall be pre-populated on any exported monthly timesheet report and shall be editable within the profile settings without affecting time entry data.
-
9.1. Create Local User Profile TS-FR-060 The NCIA Timesheet shall allow the user to create one or more named local user profiles without requiring a password, a network connection, or an external account.
The NCIA Timesheet shall allow each user profile to be classified with a contract or employment type, selecting from at minimum: IWC (Individual Wage Contractor), PBC (Performance-Based Contractor), NIC (NATO International Civilian). The selected type shall be stored in the profile and displayed on exported timesheet reports.
The NCIA Timesheet shall allow each user profile to store the following contract work schedule fields: contracted hours per week (the total number of hours per week specified in the user's contract, default 38) and standard workweek days (the number of working days per week, default 5). Both fields shall be editable in profile settings at any time. Changes take effect immediately on all display totals but do not alter any existing time entries. These fields are informational. The application shall use them solely to derive the standard day length (TS-FR-070) for the purpose of displaying period totals (required hours, overtime, flex surplus/deficit). The application shall not enforce contracted hours, shall not prevent the user from logging more or fewer hours than contracted on any day, and shall not auto-fill or auto-deduct entries.
-
5.11. Standard Day Length Derived from Contracted Hours TS-FR-070 The NCIA Timesheet shall derive the standard working day length as contracted hours per week (TS-FR-076) divided by standard workweek days (TS-FR-076). This derived value shall be used solely for the display of period totals, including required hours per week, month, and year; flex surplus or deficit (TS-FR-067); and the notional duration subtracted from required hours for each official holiday (TS-FR-036, TS-FR-072). It shall not enforce a cap on daily entries, shall not prevent time logging on any day, and shall not trigger automatic entries.
10. 10. Non-Functional Requirements
The NCIA Timesheet shall operate fully without a network connection. No feature shall require internet access or contact any external server at runtime.
The NCIA Timesheet shall retain all user data across application restarts and device reboots without requiring any manual save action from the user.
The NCIA Timesheet shall store all application data in the operating system user data directory independent of the location of the executable file, so that moving or renaming the executable does not result in data loss or inaccessibility.
The NCIA Timesheet shall run on Windows 10 version 1803 or later and Windows 11 without requiring the user or an administrator to run an installer, register the application with the operating system, or modify system configuration.
All CSV files exported by the NCIA Timesheet shall open correctly in Microsoft Excel on Windows without requiring the user to perform an import wizard, adjust encoding settings, or apply any manual transformation.
When the NCIA Timesheet is updated to a version with a changed local database schema, the application shall automatically migrate all existing data to the new schema on first launch without data loss and without requiring user action.