TIP: You can type at any time to perform a new search.
Sales - Project
sale_project · odoo/odoo
- Repository
- odoo/odoo · module folder
- Module version
- 0.1.0
- Category
- Sales/Sales
- Folder size
- 2.3 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- Yes
- Website
- None
- Last tracking update
- 2026-08-15 22:44:19
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Odoo Translation Bot, Aaron Bohy, Arnold Moyaux, Julien Castiaux, Victor Feyens, Julien Mougenot, svs-odoo, Carlos Lopez, Prakash Prajapati, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Romain Estievenart, william-andre, Audric Onockx (auon), Abdelouahab (abla), Renaud Thiry, Vincent Larcin, damr, alsh-odoo, Mylyna Hy, Gaetan Vanden Bergh (gavb), Victor Piryns (pivi), Thomas Becquevort (thbe), Levi Siuzdak (sile), Dylan Kiss (dyki), Julien Alardot (jual), Xavier Bol (xbo), Brieuc-brd, micheledic, rajh-odoo, Youssef Bashandy, bary, Ethan Vincent, Maxime de Neuville, suth-odoo, Mohamed GadAlrab, kcv-odoo, Louis Gobert, nihp-odoo, Hussein Ebrahim(hyhe), Mohammad Abdulmoneim, Pierre Pulinckx (PIPU), Maira Salazar (srma), st-yes, David Vidal, Mohammad Abdulmoneim (abdu), djameltouati, Pierre Pulinckx, Bastien PIERRE, Michaël Mattiello, K Theja (kthe), bona-odoo, Krzysztof Magusiak (krma), Omar (OSAH), mjvi-odoo, pajo, K Theja (kthe@odoo.com), Dirk Douglas, agbr-odoo, Yash Pathak, sawer, Dhwani Patel, Kai Chang (kacha), oumaima-aarabe, assh-odoo, Maxime de Neuville (mane), maap-odoo, damrOdoo, Joe Wesnofske, dhtr-odoo, Abdelouahab Laaroussi (abla), Matt Marcha, njor-odoo, nikhil, niyp-odoo, Dhruvkumar Nagar, makb-odoo, Ryan (rygea)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- crm_project_create, hotel, project_mrp_sale, project_sale_expense, project_task_customer_ref, sale_order_update_timesheet_price, sale_project_copy_tasks, sale_project_stock, sale_project_stock_account, sale_purchase_project, sale_timesheet
- Description
Allows to create task from your sales order ============================================= This module allows to generate a project/task from sales orders.
Code Analysis ⓘ
Views touched (31)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
portal_tasks_list_inherit |
portal_tasks_list_inherit | ir.ui.view | qweb | Inherits project.portal_tasks_list |
product_product_form_view_inherit_sale_project |
product.product.sale.project.form | product.product | form | Inherits product.product_normal_form_view |
product_template_form_view_inherit_sale_project |
product.template.sale.project.form | product.template | form | Inherits sale.product_template_form_view |
product_template_form_view_invoice_policy_inherit_sale_project |
product.template.inherit.sale.projectform | product.template | form | Inherits sale.product_template_form_view |
project_milestone_view_form |
project.milestone.view.form.inherit | project.milestone | form | Inherits project.project_milestone_view_form |
project_milestone_view_kanban_inherit_sale_project |
project.milestone.view.kanban.inherit | project.milestone | kanban | Inherits project.project_milestone_view_kanban |
project_milestone_view_tree |
project.milestone.view.list.inherit | project.milestone | list | Inherits project.project_milestone_view_tree |
project_project_view_form_simplified_inherit |
project.project.view.form.simplified.inherit | project.project | form | Inherits project.project_project_view_form_simplified |
project_project_view_form_simplified_template |
project.project.create.wizard.form | project.template.create.wizard | form | Inherits project.project_project_view_form_simplified_template |
project_project_view_inherit_project_filter |
project.project.select.inherit.project | project.project | Inherits project.view_project_project_filter | |
project_project_view_tree_inherit_sale_project |
project.project.list.inherit.sale.project | project.project | list | Inherits project.view_project |
project_sharing_inherit_project_task_view_form |
project.task.view.inherit | project.task | form | Inherits project.project_sharing_project_task_view_form |
project_sharing_inherit_project_task_view_tree |
project.task.view.list.inherit | project.task | list | Inherits project.project_sharing_project_task_view_tree |
project_task_view_search |
project.task.search.inherit | project.task | search | Inherits project.view_task_search_form_project_base |
project_task_view_tree_main_base |
project.task.main.list.inherit | project.task | list | Inherits project.project_task_view_tree_main_base |
project_templates_view_list |
project.project.template.list | project.project | list | Inherits project.project_templates_view_list |
project_update_default_description |
project_update_default_description | ir.ui.view | qweb | Inherits project.project_update_default_description |
quick_create_task_form_res_partner |
project.task.form.quick_create.res.partner.inherit.sale_project | project.task | form | Inherits project.quick_create_task_form_res_partner |
sale_order_line_view_form_editable |
sale.order.line.view.form.editable | sale.order.line | form | Inherits sale.sale_order_line_view_form_readonly |
sale_project.milestone_deadline_inherit |
sale_project.milestone_deadline_inherit | ir.ui.view | qweb | Inherits project.milestone_deadline |
sale_project_view_form_simplified_template |
sale.project.create.wizard.form | project.template.create.wizard | form | Inherits project.project_project_view_form_simplified_template |
task_type_edit_inherit_sale_project |
project.task.type.form.inherit.sale_project | project.task.type | form | Inherits project.task_type_edit |
view_edit_project_inherit_form |
project.project.view.inherit | project.project | form | Inherits project.edit_project |
view_order_form_inherit_sale_project |
sale.order.form.sale.project | sale.order | form | Inherits sale.view_order_form |
view_order_line_tree_with_create |
sale.order.line.list.with.create | sale.order.line | list | Inherits sale.view_order_line_tree |
view_order_simple_form |
sale.order.form.from.task | sale.order | form | Inherits sale.view_order_form |
view_sale_project_inherit_form |
project.task.view.inherit | project.task | form | Inherits project.view_task_form2 |
view_sale_project_quick_create_task_form |
project.task.view.inherit | project.task | form | Inherits project.quick_create_task_form |
view_sales_order_filter_inherit_sale_project |
sale.order.list.select.inherit.sale_project | sale.order | list | Inherits sale.view_sales_order_filter |
view_task_form_res_partner |
project.task.form.res.partner.inherit.sale_project | project.task | form | Inherits project.view_task_form_res_partner |
view_task_tree2_inherit_sale_project |
project.task.form.inherit.sale.project | project.task | form | Inherits project.project_task_view_tree_base |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (16)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (1)-
write(self, vals)
New fields (6)
-
project_idMany2one → project.projectcompany_dependent=Truecopy=Truedomain='[("is_template", "=", False)]' args: 'project.project', 'Project' -
project_template_idMany2one → project.projectcompany_dependent=Truecopy=Truedomain='[("is_template", "=", True)]' args: 'project.project', 'Project Template' -
service_policySelectioncompute='_compute_service_policy'compute_sudo=Trueinverse='_inverse_service_policy'string='Service Invoicing Policy'tracking=True args: '_selection_service_policy' -
service_trackingSelectionondelete={'task_global_project': 'set default', 'task_in_project': 'set default', 'project_only': 'set default'}selection_add=[('task_global_project', 'Task'), ('task_in_project', 'Project & Task'), ('project_only', 'Project')] -
service_typeSelectionselection_add=[('milestones', 'Project Milestones')] -
task_template_idMany2one → project.taskcompany_dependent=Truecompute='_compute_task_template'copy=Truedomain="[('is_template', '=', True), ('project_id', '=', project_id)]"readonly=Falsestore=True args: 'project.task', 'Task Template'
-
write(self, vals)
New fields (7)
-
allow_billableBooleanexport_string_translation=Falserelated='project_id.allow_billable' -
product_uom_idMany2oneexport_string_translation=Falserelated='sale_line_id.product_uom_id' -
product_uom_qtyFloatcompute='_compute_product_uom_qty'compute_sudo=Truereadonly=False args: 'Quantity' -
project_partner_idMany2oneexport_string_translation=Falserelated='project_id.partner_id' -
quantity_percentageFloatcompute='_compute_quantity_percentage'help='Percentage of the ordered quantity that will automatically be delivered once the milestone is reached.'store=True args: 'Quantity (%)' -
sale_line_display_nameCharexport_string_translation=Falserelated='sale_line_id.display_name' args: 'Sale Line Display Name' -
sale_line_idMany2one → sale.order.linedefault=_default_sale_line_iddomain="[('order_partner_id', '=?', project_partner_id), ('qty_delivered_method', '=', 'milestones')]"help='Sales Order Item that will be updated once the milestone is reached.'index='btree_not_null' args: 'sale.order.line', 'Sales Order Item'
-
action_view_sale_order(self)
New fields (13)
-
allow_billableBooleanargs: 'Billable' -
display_sales_stat_buttonsBooleancompute='_compute_display_sales_stat_buttons'export_string_translation=False -
has_any_so_to_invoiceBooleancompute='_compute_has_any_so_to_invoice'export_string_translation=False args: 'Has SO to Invoice' -
has_any_so_with_nothing_to_invoiceBooleancompute='_compute_has_any_so_with_nothing_to_invoice'export_string_translation=False args: 'Has a SO with an invoice status of No' -
invoice_countIntegercompute='_compute_invoice_count'export_string_translation=Falsegroups='account.group_account_readonly' -
partner_idMany2onecompute='_compute_partner_id'readonly=Falsestore=True -
reinvoiced_sale_order_idMany2one → sale.ordercopy=Falsedomain="[('partner_id', '=', partner_id)]"groups='sales_team.group_sale_salesman'help='Products added to stock pickings, whose operation type is configured to generate analytic costs, will be re-invoiced in this sales order if they are set up for it.'index='btree_not_null'string='Sales Order' args: 'sale.order' -
sale_line_idMany2one → sale.order.linecompute='_compute_sale_line_id'copy=Falsedomain=<expr>help='Sales order item that will be selected by default on the tasks and timesheets of this project, except if the employee set on the timesheets is explicitely linked to another sales order item on the project.\nIt can be modified on each task and timesheet entry individually if necessary.'index='btree_not_null'readonly=Falsestore=True args: 'sale.order.line', 'Sales Order Item' -
sale_order_countIntegercompute='_compute_sale_order_count'export_string_translation=Falsegroups='sales_team.group_sale_salesman' -
sale_order_idMany2oneexport_string_translation=Falserelated='sale_line_id.order_id' -
sale_order_line_countIntegercompute='_compute_sale_order_count'export_string_translation=Falsegroups='sales_team.group_sale_salesman' -
sale_order_stateSelectionexport_string_translation=Falserelated='sale_order_id.state'tracking=False -
vendor_bill_countIntegercompute_sudo=Falseexport_string_translation=Falsegroups='account.group_account_readonly'related='account_id.vendor_bill_count'
-
action_create_invoice(self) -
action_customer_preview(self) -
action_get_list_view(self) -
action_open_project_invoices(self) -
action_open_project_vendor_bills(self) -
action_profitability_items(self, section_name, domain=None, res_id=False) -
action_view_sols(self) -
action_view_sos(self) -
action_view_tasks(self) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
get_panel_data(self) -
get_sale_items_data(self, offset=0, limit=None, with_action=True, section_id=None) -
template_to_project_confirmation_callback(self, callbacks) -
write(self, vals)
New fields (8)
-
allow_billableBooleanrelated='project_id.allow_billable' -
display_sale_order_buttonBooleancompute='_compute_display_sale_order_button'string='Display Sales Order' -
partner_idMany2oneinverse='_inverse_partner_id' -
project_sale_order_idMany2one → sale.orderrelated='project_id.sale_order_id'string="Project's sale order" args: 'sale.order' -
sale_line_idMany2one → sale.order.linecompute='_compute_sale_line'context={'with_remaining_hours': True}copy=Truedomain=<expr>help='Sales Order Item to which the time spent on this task will be added in order to be invoiced to your customer.\nBy default the sales order item set on the project will be selected. In the absence of one, the last prepaid sales order item that has time remaining will be used.\nRemove the sales order item in order to make this task non billable. You can also change or remove the sales order item of each timesheet entry individually.'index='btree_not_null'readonly=Falserecursive=Truestore=Truetracking=True args: 'sale.order.line', 'Sales Order Item' -
sale_order_idMany2one → sale.ordercompute='_compute_sale_order_id'group_expand='_group_expand_sales_order'help='Sales order to which the task is linked.'store=True args: 'sale.order', 'Sales Order' -
sale_order_stateSelectionrelated='sale_order_id.state'tracking=False -
task_to_invoiceBooleancompute='_compute_task_to_invoice'groups='sales_team.group_sale_salesman_all_leads'search='_search_task_to_invoice' args: 'To invoice'
-
TASK_PORTAL_READABLE_FIELDS(self)@property -
action_project_sharing_view_so(self) -
action_view_so(self) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
show_rating_activeBooleancompute='_compute_show_rating_active'export_string_translation=False
No public methods.
New fields (3)
-
allow_billableBooleanrelated='template_id.allow_billable' -
partner_idMany2one → res.partnerargs: 'res.partner' -
role_to_users_idsOne2manycompute='_compute_role_to_users_ids'readonly=Falsestore=True
-
action_create_project_from_so(self)Create a project either from template or directly if no template is set. -
action_open_template_view(self)@api.model
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
sale_line_idMany2one → sale.order.linereadonly=Truestring='Sales Order Item' args: 'sale.order.line' -
sale_order_idMany2one → sale.orderreadonly=Truestring='Sales Order' args: 'sale.order'
No public methods.
New fields (13)
-
closed_task_countIntegercompute='_compute_tasks_ids'export_string_translation=Falsegroups='project.group_project_user' -
completed_task_percentageFloatcompute='_compute_completed_task_percentage'export_string_translation=Falsegroups='project.group_project_user' -
is_product_milestoneBooleancompute='_compute_is_product_milestone'export_string_translation=False -
milestone_countIntegercompute='_compute_milestone_count'export_string_translation=False -
project_account_idMany2one → account.analytic.accountrelated='project_id.account_id' args: 'account.analytic.account' -
project_countIntegercompute='_compute_project_ids'export_string_translation=Falsegroups='project.group_project_user'string='Number of Projects' -
project_idMany2one → project.projectcopy=Falsedomain=[('allow_billable', '=', True), ('is_template', '=', False)]help='A task will be created for the project upon sales order confirmation. The analytic distribution of this project will also serve as a reference for newly created sales order items.'index='btree_not_null' args: 'project.project' -
project_idsMany2many → project.projectcompute='_compute_project_ids'copy=Falseexport_string_translation=Falsegroups='project.group_project_user,project.group_project_milestone'string='Projects' args: 'project.project' -
show_create_project_buttonBooleancompute='_compute_show_project_and_task_button'export_string_translation=Falsegroups='project.group_project_user' -
show_project_buttonBooleancompute='_compute_show_project_and_task_button'export_string_translation=Falsegroups='project.group_project_user' -
tasks_countIntegercompute='_compute_tasks_ids'export_string_translation=Falsegroups='project.group_project_user'string='Tasks' -
tasks_idsMany2many → project.taskcompute='_compute_tasks_ids'export_string_translation=Falsegroups='project.group_project_user'search='_search_tasks_ids'string='Tasks associated with this sale' args: 'project.task' -
visible_projectBooleancompute='_compute_visible_project'export_string_translation=Falsereadonly=True args: 'Display project'
-
action_confirm(self) -
action_create_project(self) -
action_view_milestone(self) -
action_view_project_ids(self) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
get_first_service_line(self) -
write(self, vals)
New fields (4)
-
project_idMany2one → project.projectcopy=Falseexport_string_translation=Falseindex=True args: 'project.project', 'Generated Project' -
qty_delivered_methodSelectionselection_add=[('milestones', 'Milestones')] -
reached_milestones_idsOne2many → project.milestonedomain=[('is_reached', '=', True)]export_string_translation=Falsestring='Reached Milestones' args: 'project.milestone', 'sale_line_id' -
task_idMany2one → project.taskcopy=Falseexport_string_translation=Falseindex=True args: 'project.task', 'Generated Task'
-
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
project_idMany2one → project.projectcomodel_name='project.project'readonly=True
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…