=======
This PR is in the continuity of odoo#62360.
- Display remaining hours in task sales_line_id (name_get + task form view)
- Remove internal reference from services demo data
- Display sol in project timesheets list if project is billable
- Remove use of non_allow_billable in timesheets as it has been removed from project and task in previous PR (see above)
- Only recompute planned_hours for service product
- Determine the correct SOL for timesheet
- Set the last SOL of customer on timesheet if none is set on task or project
- Allow edition of so_line in timesheet
- Restrict SOL on project to sale lines with a service product
- Use same widget on partner_id many2One than in sale.order (using ranking)
- Remove timesheets table in SO and invoice portal.They were added in previous PR (see above). This introduces the use of links to /my/timesheets/.
- Review portal timesheets (my/timesheets/ and link from orders and invoices)
- Activate group_uom "Units of Measure" on sale_timesheet install
- Hide partner phone number in task form view
- Only determine SOL of task and timesheet if allow_billable=True
- Filter SOL in task so that it matches the SOL of the project SO
- Display red label if remaining hours is negative
- Change SO compute behavior
- Only open SO for salesman on project overview
task-2409761
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
closes odoo/odoo#63695
Forward-port-of: #62900
X-original-commit: b1985773f3a67e28049f9e2bb635bcab059ad9c0
Related: odoo/enterprise#15427
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Step to reproduce:
1. Install module "sale_project"
2. In Project > Configuration > Settings, turn on "Recurring Tasks"
3. Create a recurrent task
4. Set the "next_recurrence_date" for the recurrence ahead of today
5. Run scheduled action " Project: Create Recurring Tasks"
=> error: 'project.task' object has no attribute 'is_fsm'
Reason:
"is_fsm" is defined in the module "industry_fsm" and the module "sale_project" does not depend on that module.
opw-2412370
closesodoo/odoo#63325
X-original-commit: 36c3fb0e1d16f5cce21e3edcb01ee8a39a35caa8
Related: odoo/enterprise#15288
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
The project overview statbutton will only be shown when there's a proper
Project Overview to display (when there are timesheets, etc.)
closesodoo/odoo#57698
Taskid: 2257764
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
With this commit, all instances of errors being raised inside
`BaseModel.unlink` overrides are moved into methods decorated with
`api.ondelete` which is safer.
This commit is mainly a revert to 13 functionalities in project_*
modules as functional changes introduced in 14 do not seem to be well
accepted by users.
Details:
- sale_timesheet: rename 'Ordered quantities' service_policy into 'Prepaid' project, sale_project, sale_timesheet: refactor task form view
- sale_timesheet: modify sale_line_employee_ids many2one widget on project form
- sale_timesheet: add link between ticket and sale order
- sale_timesheet: remove the option 'link to an existing SOL'
- sale_timesheet: remove the warning messages in project.task
- sale_timesheet: reword labels in customer_type and pricing
- sale_timesheet: adapt timesheet section on invoices in portal
- sale_timesheet: add timesheet section on orders in portal
- sale_timesheet: remove employee rate related warning on projects in Kanban view
- sale_timesheet: update sale_line_id of all the not invoiced timesheets accordingly to the employee mappings
- sale_timesheet: timesheet entries for employees that have no mapped SOL in project get the sol of the task or project
task-2388500
closesodoo/odoo#62568
Related: odoo/enterprise#15040
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Problem
-------
When a sale order has more than one task within the same project
clicking on X tasks lead to an access error since regular user
cannot read action anymore
Solution
---------
use _for_xml_id method to fetch action data
closesodoo/odoo#61953
X-original-commit: ff43c875a7566ef4473452fc359e73fbf589b615
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
If a portal user was a customer but not a follower of a project
he didn't have access to the timesheets linked to the project.
Task-2299286
closesodoo/odoo#59252
X-original-commit: 13fc0ab18eb1e1d4ba47b7a1e66cd5079d692d8b
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
- Install sale_project
- Go to Project > All Tasks and open an Task
- Toggle Studio:
* Activate "Show invisible elements" in View menu tab
* Select "Sales Order" field and uncheck invisible option
- Go to Sales and create a Quotation (i.e. SO0001)
- Go to Project > All Tasks and create a Task with SO0001 as SO
- Go back to Quotation SO0001
The created Task is not counted in the Tasks smart button.
Tasks smart button on SO only shows Tasks associated to a SO line
and does not show Tasks associated to SO.
opw-2335040
closesodoo/odoo#58926
X-original-commit: 1ffa2b5677d028c51a06f884d635cd8429730aae
Signed-off-by: Anh Thao PHAM <kitan191@users.noreply.github.com>
* calender_sms, hr_expense, sale_project
PURPOSE
Enable the framework to define some of actions in the controlpanel,
as buttons similar to the 'create/edit/discard' buttons.
SPECIFICATIONS
Replace the below-mentioned dropdown actions with controlpanel buttons
- 'send sms to attendees' in Calendar > Calendar
- 'approve report' in Expenses > Expense Reports > To approve
- 'post entries' in Expenses > Expense Reports > To post
- 'register payment' in Expenses > Expenses Reports > To pay
- 'create invoice' in Field Service > All Tasks > To Invoice
LINKS
PR https://github.com/odoo/odoo/pull/57830
Task-2300426
closesodoo/odoo#57830
Related: odoo/enterprise#13272
Related: odoo/upgrade#1785
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
The override of `_action_confirm` in sale_project will crash when orders from multiple companies
are confirmed together.
This commit adapts the method to handle multiple records correctly.
closesodoo/odoo#58269
X-original-commit: ab14083b0ddfb73da167938c43f35a992fbbe93c
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Split completely 'non billable' from 'task rate' for more clarity.
Simplify the task form view of non-billable projects.
TaskID 2032048
closesodoo/odoo#55972
Related: odoo/enterprise#12441
Related: odoo/upgrade#1662
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Use _for_xml_id to replace all the self.env.ref().read()[0]
This has the advantage of having a single point of control and to add
the fields filtering and model verification.
Add sudo for other operations on ir.actions.*
Some interventions are done on a regular basis (e.g. maintenance of
fire alarms, safety inspections). Having tasks auto-generate would
facilitate the process and would ensure that the next intervention
isn't missed/forgotten.
closesodoo/odoo#55517
Taskid: 2172156
Related: odoo/enterprise#12246
Related: odoo/upgrade#1604
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit fixes all issues detected by the new pylint
gettext-variable test.
It converts some calls to the new syntax
_("Foo %s", bar)
to progressively migrate the code to the new syntax.
A few calls were not technically incorrect but still detected by the
linter.
_("Foo" +
"Bar")
has been converted to
_("Foo"
"Bar")
as it has the same effect and make sure the argument is of type
asteroid.Const instead of BinOp).
closesodoo/odoo#53683
Related: odoo/enterprise#11467
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
1. Generic timesheets improvements
- Portal /my/timesheets
- Add a group bys task, date, employee
- Add search in project, name, employee, task
* The task column should not be visible if none of the timesheets have the Task field set
- If a group by task, date, employee or project is applied, the corresponding column should not be visible
2. Timesheets from sub-tasks on parent tasks
- Portal /my/tasks
- Display the 'Total Hours' spent on a task at the end of the list of timesheets
- Below the list of timesheets for the task, display another table detailing the respective timesheets (and total hours) of each sub-task linked to this task (= 1 table/list per sub-task)
* Title should be: 'Timesheets for sub-task: xyz'
* only visible if there are sub-tasks linked to this task
* only visible if total hours > 0
3. Timesheets on Invoices
- Portal /my/invoices
- Add Project + task fields
* Task field only visible if set on one of the timesheet entries
* Project field only visible if there are at least 2 different projects in these timesheet entries
4. Correct visibility for the portal users
- Portal users is allowed to see timesheets if the users are added in allowed portal users list in the project
- When a portal user is added as the message follower of the project, the user is added to allowed portal users as well
- When a portal user is removed from allowed portal users, the user is also removed from message followers
closesodoo/odoo#47248
Taskid: 2201908
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
* Reword tasks in the sample project
* Add a "Create and Edit" button on the project creation modal
* Open the file chooser in "Set a cover image" if there are no images
set
* Correclty display the kanban state button on archived task
* Add a button to list the tasks when deleting a project
* Open file chooser for cover image: Automatically open the file chooser
when setting a cover image on a task if there are no attachments to chose
from.
closesodoo/odoo#47306
Taskid: 2209133
Related: odoo/enterprise#9141
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Install project,sale_management,industry_fsm
Create a new product with:
- Product type: service
- Service Invoicing Policy: Timesheets on tasks
- Service Tracking: Create a task in sales order's project
- Project Template: Field Service
Save, then edit also Field Service chaning Bill from Tasks to the new
product
Create a sale order with such product, save and confirm
Error Message "An FSM project must be billed at task rate"
will popup blocking the action. This is due to changes introduced in
071711bf1db82ae7fc65dcc1292da6ef82278168 (enterprise commit), new fsm
projects should not have a sale order line, instead rates are derived
from the tasks.
This commit refactor the code of '_timesheet_create_project' to make
possible to override project creation values. In the counterpart commit,
in enterprise, the sale order line id will be removed to match the behavior
of 071711bf1db82ae7fc65dcc1292da6ef82278168
opw-2220184
closesodoo/odoo#48936
X-original-commit: 4094cb12a617df99fdc7d6d8796568217c34c175
Related: odoo/enterprise#9645
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
The "Create Sales Order" button was not displayed again when the
original SO was deleted. Thus, it was not possible to link a new SO to
the project.
closesodoo/odoo#47397
Taskid: 2206862
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
The possibility to create invoices from project tasks was being
introduced in industry_fsm_sale. This moves the server action to
sale_project.
Task-2191253
closesodoo/odoo#45650
Related: odoo/enterprise#8530
Related: odoo/upgrade#808
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Description of the issue/feature this PR addresses:
There is no easy way to re-assign the time sheets to the correct SOL (changing
the task's SOL does not change the non-invoiced time sheets automatically)
Current behavior before PR:
On a project, if a user put a wrong sale order line, and after that he changes
this SOL, the timesheet line will not be moved.
Desired behavior after PR is merged:
On a project, if a user put a wrong sale order line, and after that he change
this SOL, all non invoiced timesheet line will be moved to new line.
TaskId: 2144703
Purpose
=======
If the user doesn't have the timesheets app, it is not possible to generate
a task from an SOL. However, the user may want to generate a task without
necessarily timesheeting on it (e.g. a task in Field Service).
Specification
=============
Move the feature to a new module sale_project, sale_timesheet becomes
dependent on it.
Task-2123707
closes odoo/odoo#40594
Closes: #40594
Related: odoo/enterprise#6851
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>