diff --git a/controllers/main.py b/controllers/main.py index e9a9060067863d8da6731e6c92fbc152872daae4..2cbcad26371edfc8a2bfa17515dc46069dfaa290 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -24,8 +24,8 @@ class CustomSaleTimesheetController(SaleTimesheetController): if not projects: return False - taux_horaire = request.env.user.company_id.taux_horaire - uom_hour = request.env.ref('uom.product_uom_hour') + # useless fields for custom calcul + # uom_hour = request.env.ref('uom.product_uom_hour') # build SQL query and fetch raw data query, query_params = self._table_rows_sql_query(projects) @@ -60,7 +60,7 @@ class CustomSaleTimesheetController(SaleTimesheetController): rows_sale_line[sale_line_row_key] = [{'label': map_sol_names.get(sale_line_id, _('No Sales Order Line')), 'res_id': sale_line_id, 'res_model': 'sale.order.line', 'type': 'sale_order_line', 'is_milestone': is_milestone}] + default_row_vals[:] if not is_milestone: # **** MODIF **** - rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom_qty*sale_line.price_unit/taux_horaire if sale_line else 0.0 + rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom_qty*sale_line.price_unit/sale_line.order_id.taux_horaire if sale_line else 0.0 # rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0 for row_key, row_employee in rows_employee.items(): @@ -74,7 +74,7 @@ class CustomSaleTimesheetController(SaleTimesheetController): rows_sale_line[sale_line_row_key] = [{'label': map_sol_names.get(sale_line.id) if sale_line else _('No Sales Order Line'), 'res_id': sale_line_id, 'res_model': 'sale.order.line', 'type': 'sale_order_line', 'is_milestone': is_milestone}] + default_row_vals[:] # INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted if not is_milestone: # **** MODIF **** - rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom_qty*sale_line.price_unit/taux_horaire if sale_line else 0.0 + rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom_qty*sale_line.price_unit/sale_line.order_id.taux_horaire if sale_line else 0.0 # rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0 for index in range(len(rows_employee[row_key])): diff --git a/models/res_config_settings.py b/models/res_config_settings.py index 391397796dc075016002f6444595692c34c8f66b..93050517ddc983de6944c576acb1f89c552fd46a 100644 --- a/models/res_config_settings.py +++ b/models/res_config_settings.py @@ -3,6 +3,7 @@ from odoo import models, fields, api + class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' diff --git a/models/sale_order.py b/models/sale_order.py index 938fff7afe439f2c778c6fbc18bfa8d7bc81ef07..ab4c9a10c527c765caa49866fe3c108e3a7eca7c 100644 --- a/models/sale_order.py +++ b/models/sale_order.py @@ -19,6 +19,10 @@ class SaleOrder(models.Model): no_create_task = fields.Boolean(string="Ne pas créer les tâches") + taux_horaire = fields.Integer( + 'Taux horaire', + default=lambda self: self.env.user.company_id.taux_horaire) + @api.onchange("partner_id", "order_line") def _project_name_to_create(self): so_line_new_project_with_tasks = self.mapped('order_line').filtered( diff --git a/views/sale_view.xml b/views/sale_view.xml index 13ed3d67d419e2cbf42610028e6fb64ea722d1b9..1f9bd7a6d750be93d3c17399d19b0b8ded709c7f 100644 --- a/views/sale_view.xml +++ b/views/sale_view.xml @@ -12,6 +12,8 @@ <field name="payment_term_id" position="after"> + <field name="taux_horaire"/> + <field name="project_ids" string="Projets associés" attrs="{'invisible':[('state','!=','sale')]}"/> <field name="project_tracking" widget="radio" attrs="{'invisible':['|',('state','=','sale'),('project_tracking','=',False)]}"/>