NextERP - Product Kit Sale Timesheet
NextERP - Product Kit Sale Timesheet
Overview
Bridge between nexterp_product_kit_sale and sale_project: when a
sale order is confirmed, one project task is created per kit
component flagged as a service with Service Tracking = Task in
Project, in addition to the standard task created for the parent
sale order line.
The hook lives in sale.order.line._timesheet_create_task: after
the core task for the parent line is created, the module iterates
over kit_line_ids and calls a kit-aware
_timesheet_create_task on each component whose product is a
task_in_project service. Each kit task is linked back to the
originating sale.order.line and nested under the parent task
through the parent_id field, so kit hierarchies are visible in the
project's Gantt / hierarchy view.
Targets service-bundle sales where one quotation line resolves to several billable jobs — installation kits, consulting packages, multi-stage interventions — and you want each component tracked as its own task with timesheets attached.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- Override of
sale.order.line._timesheet_create_task: after the standard task is created for atask_in_projectparent line, the module loops over itskit_line_idsand creates one extra task per service component. - Component-level task creation only fires when the kit component
product also has
service_tracking == "task_in_project", so mixed kits (services + storable) generate tasks only where it makes sense. - New
sale.order.line.kit._timesheet_create_taskbuilds the task itself: it prepares values via_timesheet_create_task_prepare_values, creates the task withsudo()and writes its id back onto the kit line throughtask_id. - Task naming convention:
"<Order name>: <parent product> - <component product>"— gives immediate context in project lists, Kanban and search. - Tasks are linked back to the originating
sale.order.lineviasale_line_id(so timesheet billing stays attached to the parent SO line) and nested under the parent task viaparent_id, using theparent_taskcontext key passed by the override. - Override of
sale.order._compute_tasks_ids: when computing the set of tasks belonging to an order, kit-line tasks that are not yet linked to asale_line_idare re-attached to their parent SO line, keeping the order's task list consistent. - A creation message is posted on each kit task with a clickable link back to the source sale order.
Configuration
The module has no settings of its own. Configuration consists of preparing the products that should generate tasks and the project they will be created in.
1. Service products
- Go to Sales → Products → Products (or Inventory → Products → Products).
- For every kit component that must become a task, open the product
and set:
- Product Type —
Service. - Invoicing Policy — usually
Based on Timesheets. - Service Tracking —
Task in Project(this is the trigger checked by_timesheet_create_task). - Project — the default project where tasks will land (if not filled, the parent line's project is reused).
- Product Type —
- Make sure the parent kit product itself is also a
task_in_projectservice: the override only fires when the parent SO line creates a task in the first place.
2. Kit definition
- On the kit product, open the Kit Products tab (added by
nexterp_product_kit) and add the service components configured at step 1. - The non-service components stay in the kit definition without producing tasks, so mixed bundles (service + goods) are supported.
3. Project and timesheets
- Enable Project → Configuration → Settings → Timesheets if not already on.
- Optionally enable Sub-tasks so the parent / child hierarchy from kit explosion is visible.
- Grant the relevant users access to the target project.
4. Sale workflow
No further configuration is needed in Sales. As soon as a kit
service product is added to a quotation and the order is confirmed,
the dependent nexterp_product_kit_sale explodes the kit lines and
this module creates one task per service component.
To install this module, you need to:
- clone the branch 16.0 of the repository https://github.com/NextERP-Romania/odoo-community
- add the path to this repository in your configuration (addons-path)
- update the module list
- search for "NextERP - Product Kit Sale Timesheet" in your addons
- install the module
How it works
What happens on order confirmation
- The user confirms a sale order that contains a kit service
product (parent SO line with
service_tracking == "task_in_project"). - Standard
sale_projectcreates the task for the parent SO line. - This module then loops over
kit_line_idson that SO line and, for every component whose own product is alsotask_in_project:- creates a new
project.taskviasale.order.line.kit._timesheet_create_task; - writes the task id onto the kit line (
task_id); - attaches it to the parent SO line through
sale_line_id; - sets
parent_idto the task created at step 2, so the kit task appears as a sub-task in the project.
- creates a new
- The new task gets the name
"<Order>: <parent product> - <component product>"and receives a chatter message pointing back to the source order.
Tracking the tasks
- Open Project → All Tasks and filter / group by the sale order to see the parent task and its kit sub-tasks together.
- The Tasks smart button on the sale order shows the same set;
_compute_tasks_idsis overridden so kit tasks created before the order's full reload are still reattached to the parent SO line. - Open any kit task to view the chatter link back to the originating sale order.
Time tracking and invoicing
- Time logged on a kit task is recorded against its
sale_line_id— the parent SO line of the kit. Invoicing the parent line therefore aggregates the timesheets of every kit sub-task plus its own. - This matches the kit pricing model used by
nexterp_product_kit_sale: the customer sees and pays one SO line while internally the work is split across multiple tasks.
Caveats
- Kit components that are not services (or services not flagged as
task_in_project) are silently skipped — no task is created for them. - The override does not delete tasks when a kit line is removed later. If you re-explode a kit, expect orphan tasks unless they are archived manually.
Versions
19.0.1.0.0 (2026-05-25)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Sales (sale_management) • Project (project) |
| Community Apps Dependencies | Show |
| Lines of code | 609 |
| Technical Name |
nexterp_product_kit_sale_timesheet |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module