Working Time

ERPNext v16 time tracking, Work Cockpit and billing review

Install Working Time

bench get-app https://github.com/jitis-io/working-time

Tags

  • billing
  • erpnext
  • frappe
  • project-management
  • time-tracking

Add the Frappe Gems badge to your README

Maintain Working Time? Paste this into your README:

[![Listed on Frappe Gems](https://frappegems.com/api/method/frappe_gems.seo.badge?app=jitis-io%2Fworking-time)](https://frappegems.com/gems/apps/jitis-io/working-time)

About Working Time

JITIS Work

Work management, time tracking and billing review for ERPNext v16.

The technical app and Python package remain named working_time for upgrade compatibility. The user-facing product is JITIS Work because its scope now covers daily work, projects, tickets, tasks, time and billing rather than time tracking alone.

Who is this for?

Teams that use ERPNext Projects and Tasks as the single work-management and billing source.

The app is independent of the JITIS customer portal. Optional integrations can add external work items through the documented work_cockpit_providers hook; portal identity and customer isolation remain outside this app.

Features

  • Provides one complete daily form with start, end, required/indicated break and unallocated time
  • Books duration-first entries against Projects, Tasks and ERPNext Issues
  • Keeps customer-facing descriptions separate from internal notes
  • Allows to set a percentage of working time as billable time in a Working Time Log
  • Preserves actual and raw billable time without rounding
  • Rounds billable time upward to 15-minute increments only after daily customer/project/task aggregation
  • Uses ERPNext Tasks and local customer notes for Timesheet descriptions
  • Provides a permission-safe Work Cockpit for assigned ERPNext Issues and Tasks with Today, Blocked, Waiting for Customer and Unbilled views
  • Provides the responsive My Work home for a personal backlog, descriptions, search, filters, due-date groups, quick task creation, task completion and direct time booking
  • Promotes an Issue to one idempotently linked Task while retaining the Issue as the attachment source
  • Shows commercial Project context from Contract, Sales Order, Billing Review and Sales Invoice
  • Creates and submits one ERPNext Timesheet per employee/day/project after the complete day is validated
  • Creates ERPNext Attendances
  • Report of actual vs. expected working time per Employee
  • Sends email reminders to employees for submitting their draft working time entries
    • If a draft working time entry is older than 3 days, and
    • on the last working day of the month
  • Working Time Policy enforcement per employee, including:
    • Maximum working time per day
    • Mandatory break requirements based on working time thresholds
    • Minimum rest time between days
    • Blocked weekdays
    • Holiday blocking (based on the employee's holiday list)

Setup

  • Install this app

    bench get-app working_time https://github.com/jitis-io/working-time.git
    bench install-app working_time
    
  • Enable Ignore Employee Time Overlap and Ignore User Time Overlap in Projects Settings

  • Link each employee login in Employee > User ID. Except for System Managers, Working Time lists, documents and reports fail closed when this mapping is missing and are restricted to that Employee.
  • Open or create an ERPNext Project
    • Link it to its customer and source Sales Order
    • Set the Billing Rate per Hour
  • Create ERPNext Tasks for traceable customer and internal work
  • Create Activity Cost records for your Employees (Activity Type: "Default")
  • Create your first Working Time
    • Enter start, end and break,
    • distribute the complete net duration across Projects, Tasks or Issues,
    • add a customer description and an internal note where useful
  • Submit your Working Time

Operating model

JITIS Work deliberately keeps ERPNext's native records instead of introducing a second project management model:

  • A Project is the durable context: a customer order or support agreement, or one internal umbrella project. Do not create a Project for every small request.
  • An Issue is incoming work: a portal ticket, fault, request or question. Quick support can be handled and time-booked directly on the Issue.
  • A Task is consciously planned work. It may be large or small. Promote an Issue when it needs scheduling, several steps or progress tracking; create simple internal Tasks directly in My Work. Completing the last Task does not close an Internal umbrella Project; that Project stays available as the durable container for the next internal Task.
  • Working Time records what actually happened. It is not the backlog.
  • Billing Review turns eligible Time and Material entries into invoice drafts.

Open JITIS Work > My Work for daily operation. The default scope is the current user's real assignments even for System Managers; the team scope is an explicit switch. Undated Tasks remain visible under Without date instead of disappearing from the daily view.

Further Reading

Want to add pretty time logs to your invoice? Check out our print formats.

JITIS Work

The JITIS Work workspace groups native ERPNext project provisioning, billing reviews and operational alerts. Configure a Teams Workflow webhook and the time-billing Item in JITIS Work Settings. Use Send Teams test alert after saving the settings. Alerts use the Adaptive Card envelope required by Teams Workflow. Billing creates drafts only.

Project provisioning creates or links an ERPNext Project after an explicit preview. Portal permissions remain owned by the portal.

Run Docker quality and clean-bench integration checks before committing; see AGENTS.md.

Production releases

Do not run bench update, pull a branch or replace this app directly in the production container. A release is tested and tagged here, then pinned by exact version and commit in the private jitis-erp-platform operator handbook. That repository builds one immutable ERP image and owns the backup-gated Azure production update. The handbook also contains the exact local quality, clean-bench, Git tag, Azure access, deployment and recovery commands.

Upgrade to 1.2.0

Version 1.2.0 completes the forward-only consolidation on ERPNext:

  • Deploy with bench --site migrate, bench build --app working_time, and bench restart.
  • The retired external project integration, its DocTypes, credentials, custom fields, jobs, Workspace links and historical integration-control records are removed.
  • Sales Order project provisioning creates ERPNext Projects directly.
  • Working Time access is employee-scoped for list, read, create, write, submit, cancel, delete, amend and both reports. System Managers remain unrestricted; users without an Employee mapping are denied.
  • New Working Time submissions preserve raw actual and raw billable hours. Billing Review aggregates billable time by customer, project, task and work date and then rounds the aggregate upward to 15 minutes.
  • Creating Sales Invoices leaves the review and its rows at Draft Created. Review and submit the invoices manually, then use Finalize submitted invoices to mark the review Invoiced.
  • The migration reclassifies old reviews whose linked Sales Invoices are still drafts. It deliberately does not rewrite historical Timesheet rows: values created by the previous five-minute rounding remain historical records. Correct submitted history only through the normal ERPNext cancellation/amendment process with an audit trail.

Upgrade to 1.3.0

  • Helpdesk 1.28.1 and Telephony are required apps. The internal ticket action Zeit buchen records start time and duration without asking the agent for a Project. The server reuses the ticket Project or the only matching open customer Project; ambiguous allocation remains visible in the daily draft and must be resolved before submit. The action is not exposed in the customer portal.
  • Projects use native Project.sales_order and the explicit billing models Non-billable, Time and Material, Fixed Price and Recurring. Billing Review accepts only T&M projects with a submitted Sales Order and positive hourly rate.
  • The migration conflict-checks source_sales_order, derives workday fields without rewriting submitted log durations, migrates draft notes and removes the retired fields only after a reference preflight.
  • Billing Review still rounds once per customer/project/task/day. Ticket boundaries never create additional rounding.

Upgrade to 1.4.0

  • Helpdesk is no longer a dependency. The internal Zeit buchen action is attached to ERPNext Issue and stores the native Issue reference on Working Time Log and Timesheet Detail.
  • An Issue may point directly to a Project. ERPNext's native Create Task action creates the operational Task when a support request needs planned work; time booking validates that Issue, Project and Task belong to the same customer and workflow.
  • The migration provisions the new Issue links before the platform integration copies legacy Helpdesk references. Deploy this release together with JITIS Platform Integration 0.9.0 through the immutable ERP image and run bench --site migrate only in that release process.
  • Do not run bench update or pull Git branches in the production container. Versions are selected in the ERP platform app lock, tested in a new image and promoted by immutable image digest.

Upgrade to 1.5.0

  • Run the normal immutable-image migration. after_migrate provisions the operational-state fields on Issue and Task, the Issue planning date, the Project Contract link and the Task attachment display.
  • Open Platform Operations > Work Cockpit. System Managers see all native-readable open work; other system users see only native-readable Issues and Tasks currently assigned to them.
  • Nicht abgerechnet uses the same eligibility and claim statuses as Billing Review. It does not infer invoice state from labels or task status.
  • In Task übernehmen locks the Issue while checking for an existing open Task. Repeated and concurrent requests reuse the existing Task, and private Issue files remain linked rather than copied.
  • The optional work_cockpit_providers hook lets an installed app add external items without modifying this app. A provider is called as `provider(view=

Related HR & Payroll apps for Frappe & ERPNext

  • Hrms — Open Source HR and Payroll Software
  • Huf — Open-source, self-hosted multi-agent AI infrastructure for teams and apps with support for cloud and local models, tool integrations, workflows, and automation across business systems including Slack, ERPNext, Discord & Gmail.
  • Bookings — Hotel Management App for Erpnext
  • Employee Self Service — This is the backend component for Nesscale ESS - a mobile app that brings ERPNext to your phone. Employees can manage their HR tasks, sales activities, and projects right from their mobile devices.
  • Inventory Tools — A collection of features to streamline and enhance inventory management and manufacturing workflows in ERPNext.
  • Check Run — Payables utility for ERPNext
  • Next Ai — NextAI is an AI-powered app for Frappe and ERPNext, delivering seamless content generation, automation, and productivity enhancements.
  • Projectit — Open Source PWA mobile app to track the Employees out in the field. This mobile app is developed on Frappe Framework and it is integrated with the Project functionalities of ERPNext and integrated tightly with Frappe HR.