Skip to content
Extraits de code Groupes Projets
Valider 20815518 rédigé par jordan's avatar jordan
Parcourir les fichiers

[update] taux_horaire linked to sale_order

parent 99faeeef
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!114.0 sale overview
...@@ -24,8 +24,8 @@ class CustomSaleTimesheetController(SaleTimesheetController): ...@@ -24,8 +24,8 @@ class CustomSaleTimesheetController(SaleTimesheetController):
if not projects: if not projects:
return False return False
taux_horaire = request.env.user.company_id.taux_horaire # useless fields for custom calcul
uom_hour = request.env.ref('uom.product_uom_hour') # uom_hour = request.env.ref('uom.product_uom_hour')
# build SQL query and fetch raw data # build SQL query and fetch raw data
query, query_params = self._table_rows_sql_query(projects) query, query_params = self._table_rows_sql_query(projects)
...@@ -60,7 +60,7 @@ class CustomSaleTimesheetController(SaleTimesheetController): ...@@ -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[:] 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: if not is_milestone:
# **** MODIF **** # **** 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 # 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(): for row_key, row_employee in rows_employee.items():
...@@ -74,7 +74,7 @@ class CustomSaleTimesheetController(SaleTimesheetController): ...@@ -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 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: if not is_milestone:
# **** MODIF **** # **** 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 # 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])): for index in range(len(rows_employee[row_key])):
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
from odoo import models, fields, api from odoo import models, fields, api
class ResConfigSettings(models.TransientModel): class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings' _inherit = 'res.config.settings'
......
...@@ -19,6 +19,10 @@ class SaleOrder(models.Model): ...@@ -19,6 +19,10 @@ class SaleOrder(models.Model):
no_create_task = fields.Boolean(string="Ne pas créer les tâches") 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") @api.onchange("partner_id", "order_line")
def _project_name_to_create(self): def _project_name_to_create(self):
so_line_new_project_with_tasks = self.mapped('order_line').filtered( so_line_new_project_with_tasks = self.mapped('order_line').filtered(
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
<field name="payment_term_id" position="after"> <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_ids" string="Projets associés" attrs="{'invisible':[('state','!=','sale')]}"/>
<field name="project_tracking" widget="radio" attrs="{'invisible':['|',('state','=','sale'),('project_tracking','=',False)]}"/> <field name="project_tracking" widget="radio" attrs="{'invisible':['|',('state','=','sale'),('project_tracking','=',False)]}"/>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter