Skip to content
Extraits de code Groupes Projets
Valider 52db37c9 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

update 12-01

parent 7ac2ee5c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -6,3 +6,4 @@ import sale_config_settings ...@@ -6,3 +6,4 @@ import sale_config_settings
import res_config import res_config
import project_task_type import project_task_type
import project import project
import sale_order
\ No newline at end of file
...@@ -10,7 +10,7 @@ class LeFilamentProcurementOrder(models.Model): ...@@ -10,7 +10,7 @@ class LeFilamentProcurementOrder(models.Model):
_inherit = 'procurement.order' _inherit = 'procurement.order'
def _is_procurement_task(self): def _is_procurement_task(self):
return self.product_id.type == 'service' and self.product_id.track_service == 'task' and self.product_id.product_link == False return self.product_id.type == 'service' and self.product_id.track_service == 'task'
def _get_stage_id(self): def _get_stage_id(self):
Stage = self.env['project.task.type'] Stage = self.env['project.task.type']
......
...@@ -10,4 +10,5 @@ class LeFilamentProductTemplate(models.Model): ...@@ -10,4 +10,5 @@ class LeFilamentProductTemplate(models.Model):
project_task_type_id = fields.Many2one( project_task_type_id = fields.Many2one(
'project.task.type', 'Project Task') 'project.task.type', 'Project Task')
product_link = fields.Boolean('Product to be linked to the project') track_service = fields.Selection(selection_add=[
\ No newline at end of file ('project', 'Create a project and link tasks')])
\ No newline at end of file
# -*- coding: utf-8 -*-
# © 2017 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models, _
from datetime import datetime
from dateutil.relativedelta import relativedelta
from odoo.exceptions import ValidationError
class SaleOrder(models.Model):
_inherit = 'sale.order'
@api.multi
def lefilament_update_tasks(self):
for order in self:
stage_id_new = self.env['ir.values'].get_default('sale.config.settings', 'project_task_type_id')
stage_new = self.env['project.task.type'].browse(stage_id_new)
lf_tarif_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_tarif_jour')
lf_heures_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_heures_jour')
sale_project_id = order.project_project_id
sale_task_ids = order.tasks_ids
for line in order.order_line:
task_id_refer = self.env['project.task'].search([('sale_line_id', '=', line.id)])
if not task_id_refer:
if line.product_id.track_service == 'project':
if line.product_id.project_id:
project = line.product_id.project_id
project_id = project.id
date_plan = datetime.strptime(order.confirmation_date,'%Y-%m-%d %H:%M:%S')
date_deadline = (date_plan.date() + relativedelta(years=int(line.product_uom_qty))).strftime('%Y-%m-%d')
stage = line.product_id.project_task_type_id
if order.partner_id.is_company == True:
name_task = order.partner_id.name + " - " + stage.name
else:
name_task = order.partner_id.parent_id.name + " - " + stage.name
else:
stage = stage_new
project_id = sale_project_id.id
date_deadline = False
name_task = line.name.split('\n', 1)[0]
project_date = self.env['project.project'].browse(project_id)
project_date.lf_total_budget = project_date.lf_total_budget + line.price_subtotal
project_date.lf_tarif_jour = lf_tarif_jour
planned_hours = (line.price_subtotal / lf_tarif_jour) * lf_heures_jour
description_line = "<p>"
i = 1
for line_name in line.name:
if line_name == '\n':
description_line = description_line + "</p><p>"
else:
description_line = description_line + line_name
task = self.env['project.task'].create({
'name': name_task,
'date_deadline': date_deadline,
'planned_hours': planned_hours,
'remaining_hours': planned_hours,
'partner_id': order.partner_id.id or self.partner_dest_id.id,
'user_id': self.env.uid,
# 'procurement_id': line.procurement_ids.id,
'description': description_line + '</p><br/>',
'project_id': project_id,
'company_id': order.company_id.id,
'stage_id': stage.id,
'sale_line_id': line.id
})
order.tasks_ids = self.env['project.task'].search([('sale_line_id', 'in', order.order_line.ids)])
order.tasks_count = len(order.tasks_ids)
\ No newline at end of file
...@@ -5,9 +5,11 @@ ...@@ -5,9 +5,11 @@
<field name="model">product.template</field> <field name="model">product.template</field>
<field name="inherit_id" ref="sale_timesheet.view_product_timesheet_form"/> <field name="inherit_id" ref="sale_timesheet.view_product_timesheet_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='project_id']" position="attributes">
<attribute name="attrs">{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'task'), ('track_service', '&lt;&gt;', 'project')]}</attribute>
</xpath>
<field name="project_id" position="after"> <field name="project_id" position="after">
<field name="project_task_type_id" attrs="{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'task')]}"/> <field name="project_task_type_id" attrs="{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'project')]}"/>
<field name="product_link" attrs="{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'task')]}"/>
</field> </field>
</field> </field>
</record> </record>
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<header> <header>
<button name="%(lefilament_open_create_project)d" type="action" string="Create project" attrs="{'invisible': ['|', ('project_project_id', '!=', False), ('state', '!=', 'sale')]}"/> <button name="%(lefilament_open_create_project)d" type="action" string="Create project" attrs="{'invisible': ['|', ('project_project_id', '!=', False), ('state', '!=', 'sale')]}"/>
<button name="lefilament_update_tasks" type="object" string="Update tasks" attrs="{'invisible': ['|', ('project_project_id', '=', False), ('state', '!=', 'sale')]}" class="btn-primary"/>
</header> </header>
</field> </field>
</record> </record>
......
...@@ -55,11 +55,12 @@ class LeFilamentSaleWizard(models.TransientModel): ...@@ -55,11 +55,12 @@ class LeFilamentSaleWizard(models.TransientModel):
lf_tarif_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_tarif_jour') lf_tarif_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_tarif_jour')
lf_heures_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_heures_jour') lf_heures_jour = self.env['ir.values'].get_default('project.config.settings', 'lf_heures_jour')
for line in sale_id.order_line: for line in sale_id.order_line:
if line.product_id.track_service == 'project':
if line.product_id.project_id: if line.product_id.project_id:
project = line.product_id.project_id project = line.product_id.project_id
project_id = project.id project_id = project.id
date_plan = datetime.strptime(line.procurement_ids.date_planned,'%Y-%m-%d %H:%M:%S') date_plan = datetime.strptime(sale_id.confirmation_date,'%Y-%m-%d %H:%M:%S')
date_deadline = (date_plan.date() + relativedelta(years=int(line.procurement_ids.product_qty))).strftime('%Y-%m-%d') date_deadline = (date_plan.date() + relativedelta(years=int(line.product_uom_qty))).strftime('%Y-%m-%d')
stage = line.product_id.project_task_type_id stage = line.product_id.project_task_type_id
if sale_id.partner_id.is_company == True: if sale_id.partner_id.is_company == True:
name_task = sale_id.partner_id.name + " - " + stage.name name_task = sale_id.partner_id.name + " - " + stage.name
...@@ -88,11 +89,12 @@ class LeFilamentSaleWizard(models.TransientModel): ...@@ -88,11 +89,12 @@ class LeFilamentSaleWizard(models.TransientModel):
'remaining_hours': planned_hours, 'remaining_hours': planned_hours,
'partner_id': sale_id.partner_id.id or self.partner_dest_id.id, 'partner_id': sale_id.partner_id.id or self.partner_dest_id.id,
'user_id': self.env.uid, 'user_id': self.env.uid,
'procurement_id': line.procurement_ids.id, # 'procurement_id': line.procurement_ids.id,
'description': description_line + '</p><br/>', 'description': description_line + '</p><br/>',
'project_id': project_id, 'project_id': project_id,
'company_id': line.procurement_ids.company_id.id, 'company_id': sale_id.company_id.id,
'stage_id': stage.id, 'stage_id': stage.id,
'sale_line_id': line.id
}) })
sale_id.tasks_ids = self.env['project.task'].search([('sale_line_id', 'in', sale_id.order_line.ids)]) sale_id.tasks_ids = self.env['project.task'].search([('sale_line_id', 'in', sale_id.order_line.ids)])
sale_id.tasks_count = len(sale_id.tasks_ids) sale_id.tasks_count = len(sale_id.tasks_ids)
......
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