Skip to content
Snippets Groups Projects
Commit 99ce19c7 authored by Jérome Maes's avatar Jérome Maes
Browse files

[FIX] sale_timesheet: multi UoM on plan project

You can sell services in days, and your timesheet will
be expressed in hours. But on project plan, UoM conversion
is not supported and in some calculation, we are mixing
appels and oranges.
This commit fixes this issue.
parent 96867cb0
Branches
Tags
No related merge requests found
......@@ -27,7 +27,8 @@ class SaleTimesheetController(http.Controller):
def _plan_prepare_values(self, projects):
currency = request.env.user.company_id.currency_id
hour_rounding = request.env.ref('uom.product_uom_hour').rounding
uom_hour = request.env.ref('uom.product_uom_hour')
hour_rounding = uom_hour.rounding
billable_types = ['non_billable', 'non_billable_project', 'billable_time', 'billable_fixed']
values = {
......@@ -150,7 +151,8 @@ class SaleTimesheetController(http.Controller):
for sale_line_id in empty_line_ids: # add service SO line having no timesheet
sale_line_row_key = (map_sol_so.get(sale_line_id), sale_line_id)
rows_sale_line[sale_line_row_key] = [{'label': map_sol_names.get(sale_line_id, _('No Sale Order Line')), 'res_id': sale_line_id, 'res_model': 'sale.order.line', 'type': 'sale_order_line'}] + default_row_vals[:]
rows_sale_line[sale_line_row_key][-2] = map_sol.get(sale_line_id).product_uom_qty if sale_line_id in map_sol else 0.0
sale_line = map_sol.get(sale_line_id)
rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(sale_line.product_uom_qty, uom_hour) if sale_line else 0.0
for row_key, row_employee in rows_employee.items():
sale_line_id = row_key[1]
......@@ -160,7 +162,7 @@ class SaleTimesheetController(http.Controller):
if sale_line_row_key not in rows_sale_line:
sale_line = map_sol.get(sale_line_id, request.env['sale.order.line'])
rows_sale_line[sale_line_row_key] = [{'label': map_sol_names.get(sale_line.id) if sale_line else _('No Sale Order Line'), 'res_id': sale_line_id, 'res_model': 'sale.order.line', 'type': 'sale_order_line'}] + default_row_vals[:] # INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted
rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom_qty or 0.0
rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(sale_line.product_uom_qty, uom_hour) if sale_line else 0.0
for index in range(len(rows_employee[row_key])):
if index != 0:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment