Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions sale_project_task_description_template/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

======================================
Sale Project Task Description Template
======================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fc4721c380633a7a1854f4da47d823d8567e854b849849096e6e48d7dc348107
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github
:target: https://github.com/OCA/project/tree/19.0/sale_project_task_description_template
:alt: OCA/project
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/project-19-0/project-19-0-sale_project_task_description_template
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/project&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the Project Task Description Template and integrates
it with Sales and Projects. When tasks are generated from sales order
lines, the task will automatically use the Task Description Template
defined on the related product.

Optionally, you can include key information from the sales order line
(like product name and quantity) above the template, providing more
context directly in the task description.

Key Features:

- New field on product: assign a Task Description Template for service
products with Service Tracking set to 'Task' or 'Project & Task'.
- Optional boolean to include the sale order line info in the task
description.
- Automatic application of the template (and optionally the sales line
info) when creating tasks from sales orders.

**Table of contents**

.. contents::
:local:

Usage
=====

To use this module:

- Create a Task Description Template

- Go to Project → Configuration → Task Description Templates.
- Define a template with a name and description.

- Assign the Template to a Product.

- Open a Product and set it as a Service.
- Ensure that Service Tracking is set to Task or Project & Task.
- Set the Task Description Template field.
- Optionally, enable the Include Sale Line Info in Task checkbox to
add product and quantity information above the template in
generated tasks.

- Create a Sale Order

- Add the product(s) with assigned templates to a sales order.
- Confirm the order.

- Generated Project Tasks

- The tasks created from the sales order lines will automatically
include the description from the assigned template.
- If enabled, the sales line info (product and quantity) will appear
above the template in the task description.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/project/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/project/issues/new?body=module:%20sale_project_task_description_template%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* NICO SOLUTIONS - ENGINEERING & IT

Contributors
------------

- Nils Coenen <nils.coenen@nico-solutions.de>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-NICO-SOLUTIONS| image:: https://github.com/NICO-SOLUTIONS.png?size=40px
:target: https://github.com/NICO-SOLUTIONS
:alt: NICO-SOLUTIONS

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-NICO-SOLUTIONS|

This module is part of the `OCA/project <https://github.com/OCA/project/tree/19.0/sale_project_task_description_template>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions sale_project_task_description_template/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions sale_project_task_description_template/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2025 NICO SOLUTIONS - ENGINEERING & IT
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
{
"name": "Sale Project Task Description Template",
"summary": (
"Apply task description templates from products to tasks, "
"with optional sale info"
),
"version": "19.0.1.0.0",
"category": "Project",
"website": "https://github.com/OCA/project",
"author": "NICO SOLUTIONS - ENGINEERING & IT, Odoo Community Association (OCA)",
"maintainers": ["NICO-SOLUTIONS"],
"license": "LGPL-3",
"depends": ["project_task_description_template", "sale_timesheet"],
"data": [
"views/product_template_views.xml",
],
"installable": True,
"application": False,
"auto_install": False,
}
63 changes: 63 additions & 0 deletions sale_project_task_description_template/i18n/de.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_project_task_description_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-07-14 16:41+0000\n"
"Last-Translator: Nils Coenen <nils.coenen@nico-solutions.de>\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.2\n"

#. module: sale_project_task_description_template
#. odoo-python
#: code:addons/sale_project_task_description_template/models/sale_order_line.py:0
msgid "%(product)s - Qty: %(qty)s"
msgstr "%(product)s - Anzahl: %(qty)s"

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__task_description_template_id
msgid "Applies automatically when creating tasks"
msgstr "Wird beim Erstellen von Aufgaben automatisch angewendet."

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid ""
"If enabled, the sale order line details (e.g., product and quantity) will be"
" added to the task description before the template content."
msgstr ""
"Wenn diese Option aktiviert ist, werden die Details der "
"Verkaufsauftragsposition (z. B. Produkt und Menge) vor dem Inhalt der "
"Vorlage zur Aufgabenbeschreibung hinzugefügt."

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid "Include Sale Line Info in Task description"
msgstr "Verkaufsinformationen in die Aufgabenbeschreibung aufnehmen"

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_product_template
msgid "Product"
msgstr "Produkt"

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_sale_order_line
msgid "Sales Order Line"
msgstr "Auftragsposition"

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__task_description_template_id
#: model_terms:ir.ui.view,arch_db:sale_project_task_description_template.product_template_form_inherit_task_template
msgid "Task Description Template"
msgstr "Vorlage für Aufgabenbeschreibungen"
63 changes: 63 additions & 0 deletions sale_project_task_description_template/i18n/nl.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_project_task_description_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-07-14 12:11+0000\n"
"Last-Translator: Bosd <c5e2fd43-d292-4c90-9d1f-74ff3436329a@anonaddy.me>\n"
"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.2\n"

#. module: sale_project_task_description_template
#. odoo-python
#: code:addons/sale_project_task_description_template/models/sale_order_line.py:0
msgid "%(product)s - Qty: %(qty)s"
msgstr "%(product)s - Aantal: %(qty)s"

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__task_description_template_id
msgid "Applies automatically when creating tasks"
msgstr "Wordt automatisch toegepast bij het aanmaken van taken"

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid ""
"If enabled, the sale order line details (e.g., product and quantity) will be"
" added to the task description before the template content."
msgstr ""
"Indien ingeschakeld, worden de details van de verkooporderregel (bijv. "
"product en aantal) toegevoegd aan de taakomschrijving vóór de inhoud van de "
"sjabloon."

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid "Include Sale Line Info in Task description"
msgstr "Verkoopregelinfo opnemen in taakomschrijving"

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_product_template
msgid "Product"
msgstr "Product"

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_sale_order_line
msgid "Sales Order Line"
msgstr "Verkooporderregel"

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__task_description_template_id
#: model_terms:ir.ui.view,arch_db:sale_project_task_description_template.product_template_form_inherit_task_template
msgid "Task Description Template"
msgstr "Sjabloon taakomschrijving"
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_project_task_description_template
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: sale_project_task_description_template
#. odoo-python
#: code:addons/sale_project_task_description_template/models/sale_order_line.py:0
msgid "%(product)s - Qty: %(qty)s"
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__task_description_template_id
msgid "Applies automatically when creating tasks"
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,help:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid ""
"If enabled, the sale order line details (e.g., product and quantity) will be"
" added to the task description before the template content."
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__include_sale_line_info_in_task
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__include_sale_line_info_in_task
msgid "Include Sale Line Info in Task description"
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_product_template
msgid "Product"
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model,name:sale_project_task_description_template.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

#. module: sale_project_task_description_template
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_product__task_description_template_id
#: model:ir.model.fields,field_description:sale_project_task_description_template.field_product_template__task_description_template_id
#: model_terms:ir.ui.view,arch_db:sale_project_task_description_template.product_template_form_inherit_task_template
msgid "Task Description Template"
msgstr ""
2 changes: 2 additions & 0 deletions sale_project_task_description_template/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import product_template
from . import sale_order_line
20 changes: 20 additions & 0 deletions sale_project_task_description_template/models/product_template.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2025 NICO SOLUTIONS - ENGINEERING & IT
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)

from odoo import fields, models


class ProductTemplate(models.Model):
_inherit = "product.template"

task_description_template_id = fields.Many2one(
"project.task.description.template",
string="Task Description Template",
help="Applies automatically when creating tasks",
)

include_sale_line_info_in_task = fields.Boolean(
string="Include Sale Line Info in Task description",
help="If enabled, the sale order line details (e.g., product and quantity) "
"will be added to the task description before the template content.",
)
Loading
Loading