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

update after tests 11-01

parent 2be3dfff
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -22,6 +22,7 @@
'wizard/sale_views_wizard.xml',
'views/sale_views.xml',
'views/res_config_views.xml',
'views/project_views.xml',
],
'qweb': [
],
......
......@@ -6,3 +6,5 @@ import procurement
import sale_order
import sale_config_settings
import res_config
import project_task_type
import project
\ 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 models, fields
class ProjectProject(models.Model):
_inherit = 'project.project'
def _get_type_common(self):
ids = self.env['project.task.type'].search([
('case_default', '=', True)])
return ids
type_ids = fields.Many2many(
comodel_name='project.task.type', relation='project_task_type_rel',
column1='project_id', column2='type_id', string='Tasks Stages',
default=_get_type_common
)
# -*- 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 models, fields
class ProjectTaskType(models.Model):
_inherit = 'project.task.type'
case_default = fields.Boolean(
string='Etape par défault')
......@@ -14,9 +14,21 @@ class LeFilamentSaleConfiguration(models.TransientModel):
_inherit = 'sale.config.settings'
project_task_type_id = fields.Many2one(
'project.task.type', 'Project Task Type')
'project.task.type', 'Etape initiale')
# type_ids = fields.Many2many('project.task.type', string='Tasks Stages')
@api.multi
def set_project_task_type(self):
return self.env['ir.values'].sudo().set_default(
'sale.config.settings', 'project_task_type_id', self.project_task_type_id.id)
# @api.multi
# def set_project_type_ids(self):
# for type_id in self:
# self.env['ir.values'].sudo().set_default(
# 'sale.config.settings', 'type_ids', type_id.id)
# @api.multi
# def get_default_type_ids(self, field):
# return self.env['ir.values'].get_default('sale.config.settings', 'type_ids')
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="lefilament_task_type_edit" model="ir.ui.view">
<field name="name">lefilament.task.type.form</field>
<field name="model">project.task.type</field>
<field name="inherit_id" ref="project.task_type_edit"/>
<field name="arch" type="xml">
<field name="fold" position="before">
<field name="case_default"/>
</field>
</field>
</record>
<record id="lefilament_task_type_tree" model="ir.ui.view">
<field name="name">lefilament.task.type.tree</field>
<field name="model">project.task.type</field>
<field name="inherit_id" ref="project.task_type_tree"/>
<field name="arch" type="xml">
<field name="fold" position="before">
<field name="case_default"/>
</field>
</field>
</record>
<record id="lefialement_edit_project" model="ir.ui.view">
<field name="name">lefilament.project.form</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page string="Project Stages"
attrs="{'invisible': [('use_tasks', '=', False)]}"
name="project_stages">
<field name="type_ids"/>
</page>
</xpath>
</field>
</record>
</odoo>
......@@ -8,6 +8,7 @@
<div id="main" position="inside">
<group string="Tâches">
<field name="project_task_type_id" class="oe_inline"/>
</group>
</div>
</field>
......
......@@ -4,6 +4,8 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
from datetime import datetime
from dateutil.relativedelta import relativedelta
class LeFilamentSaleWizard(models.TransientModel):
_name = 'lefilament.sale.views.wizard'
......@@ -48,27 +50,40 @@ class LeFilamentSaleWizard(models.TransientModel):
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')
for line in sale_id.order_line:
if line.product_id.project_id:
project = line.product_id.project_id
project_id = project.id
date_plan = datetime.strptime(line.procurement_ids.date_planned,'%Y-%m-%d %H:%M:%S')
date_deadline = (date_plan.date() + relativedelta(years=int(line.procurement_ids.product_qty))).strftime('%Y-%m-%d')
stage = line.product_id.project_task_type_id
else:
stage = stage_new
project_id = project_id_new
planned_hours = line.procurement_ids._convert_qty_company_hours()
date_deadline = line.procurement_ids.date_planned
# planned_hours = line.procurement_ids._convert_qty_company_hours()
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
first_line = line.name.split('\n', 1)[0]
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': '%s:%s' % ('', line.product_id.name),
'date_deadline': line.procurement_ids.date_planned,
'name': first_line,
'date_deadline': date_deadline,
'planned_hours': planned_hours,
'remaining_hours': planned_hours,
'partner_id': sale_id.partner_id.id or self.partner_dest_id.id,
'user_id': self.env.uid,
'procurement_id': line.procurement_ids.id,
'description': line.procurement_ids.name + '<br/>',
'description': description_line + '</p><br/>',
'project_id': project_id,
'company_id': line.procurement_ids.company_id.id,
'stage_id': stage.id,
......
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