Modules

Timesheets and invoices

Edit page
A production Customer Portal feature for time entry, approvals, supplier collaboration, reporting, and invoicing.

The timesheets layer is a real operational module, not a demonstration scaffold. It combines weekly time entry with the review, reporting, and invoicing workflows needed around it.

Two modules from one layer

The layer registers two PortalModuleContribution entries.

Timesheets

The Timesheets module owns routes under /timesheets and /admin/timesheets. Its menu covers:

  • personal weekly time entry and timers;
  • client review and reviewer configuration;
  • supplier timesheets;
  • internal approvals and approval settings;
  • clients, projects, activities, rates, workspace settings, and reports.

Invoices

The Invoices module owns /timesheets/invoices and /admin/timesheets/invoices. Its menu separates received invoices, client invoice-viewer access, and organization-side sales invoices.

Keeping both contributions in one layer allows them to share timesheet, client, organization, approval, and tariff data while remaining distinct destinations in the shell.

Workflow capabilities

Time entry

Users can record time against projects and activities by week, use timers, update entries, and submit completed weeks.

Approvals

The feature supports internal approval rules and external client reviewers. Client access is scoped so reviewers see only the workspaces and supplier data they are allowed to review.

Supplier collaboration

Organizations can work with supplier timesheets and expose approval or invoice information to linked client organizations without granting broad portal access.

Administration and reporting

Organization administrators configure clients, projects, activities, team rates, capabilities, and workspace settings. Reports aggregate recorded time for operational and financial follow-up.

The current reporting screen can also include draft, submitted, and rejected weeks unless status is filtered through the API. Follow Report on recorded time before using totals for financial decisions.

Invoicing

The invoice workflow includes creation, numbering, line items, issue state, payment records, PDF generation, attachments, organization-specific sender details, email previews and delivery, reminders, and delivery status.

Dashboard integration

The layer contributes focused widgets rather than replacing the portal dashboard:

  • the user’s current week;
  • internal approvals needing attention;
  • client approvals;
  • supplier timesheets;
  • sales invoices;
  • received invoices.

The UI layer places these widgets alongside contributions from other installed features.

Permissions

The typed action set is read, create, update, submit, report, approve, and manage.

Owners and organization administrators receive every action. Members receive read, create, update, and submit; elevated workflows are checked by server handlers and capability-specific rules.

Data ownership

Feature-owned tables and enums live in the timesheets PostgreSQL schema. Cross-schema references connect them to core users and organizations. Timesheets owns an immutable migration stream that the kit applies after its declared dependencies.

Extension lessons

The layer is the best reference for:

  • contributing more than one module from one feature;
  • assembling route-aware module menus;
  • exposing data to another organization safely;
  • modeling multi-stage approvals;
  • generating and delivering documents;
  • splitting a large feature into domain components, composables, APIs, schemas, and shared types.

To use the feature rather than study its implementation, start with workspace setup, time entry, approvals, or invoicing.