From 20815518968d96bcf63ec416f2970a5a09d6cfc5 Mon Sep 17 00:00:00 2001
From: jordan <jordan@le-filament.com>
Date: Thu, 11 Mar 2021 09:58:40 +0100
Subject: [PATCH] [update] taux_horaire linked to sale_order

---
 controllers/main.py           | 8 ++++----
 models/res_config_settings.py | 1 +
 models/sale_order.py          | 4 ++++
 views/sale_view.xml           | 2 ++
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/controllers/main.py b/controllers/main.py
index e9a9060..2cbcad2 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 3913977..9305051 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 938fff7..ab4c9a1 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 13ed3d6..1f9bd7a 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)]}"/>
-- 
GitLab