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

update 8-01

parent a439d871
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# -*- coding: utf-8 -*-
import models
import wizard
\ No newline at end of file
......@@ -18,6 +18,9 @@
'data': [
'views/product_views.xml',
'views/sale_config_settings_views.xml',
'wizard/sale_views_wizard.xml',
'views/sale_views.xml',
'views/res_config_views.xml',
],
'qweb': [
],
......
......@@ -5,3 +5,4 @@ import product
import procurement
import sale_order
import sale_config_settings
import res_config
\ No newline at end of file
......@@ -7,6 +7,9 @@ from odoo import api, fields, models, _
class LeFilamentProcurementOrder(models.Model):
_inherit = 'procurement.order'
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
def _get_stage_id(self):
Stage = self.env['project.task.type']
stage = self.product_id.with_context(force_company=self.company_id.id).project_task_type_id
......@@ -34,9 +37,7 @@ class LeFilamentProcurementOrder(models.Model):
project.lf_total_budget = project.lf_total_budget + self.sale_line_id.price_subtotal
def _create_service_task(self):
stage = self._get_stage_id()
project = self._get_project()
self._update_project_data(project)
planned_hours = self._convert_qty_company_hours()
task = self.env['project.task'].create({
'name': '%s:%s' % (self.origin or '', self.product_id.name),
......@@ -49,7 +50,6 @@ class LeFilamentProcurementOrder(models.Model):
'description': self.name + '<br/>',
'project_id': project.id,
'company_id': self.company_id.id,
'stage_id': stage.id,
})
self.write({'task_id': task.id})
......
......@@ -8,3 +8,4 @@ class LeFilamentProductTemplate(models.Model):
project_task_type_id = fields.Many2one(
'project.task.type', 'Project Task Type')
product_link = fields.Boolean('Produit à lier au projet')
\ 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
class ProjectLFConfiguration(models.TransientModel):
_name = 'project.config.settings'
_inherit = 'project.config.settings'
lf_tarif_jour = fields.Float('Tarif Jour')
@api.multi
def set_default_lf_tarif_jour(self):
Values = self.env['ir.values'].sudo()
Values.set_default('project.config.settings', 'lf_tarif_jour', self.lf_tarif_jour)
\ No newline at end of file
......@@ -7,6 +7,7 @@
<field name="arch" type="xml">
<field name="project_id" position="after">
<field name="project_task_type_id" attrs="{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'task')]}"/>
<field name="product_link" attrs="{'invisible':['|', ('type','!=','service'), ('track_service', '&lt;&gt;', 'task')]}"/>
</field>
</field>
</record>
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_lefilament_project_config_settings" model="ir.ui.view">
<field name="name">project.lefilament.settings</field>
<field name="model">project.config.settings</field>
<field name="inherit_id" ref="project.view_config_settings"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='module_rating_project']" position="after">
<field name="lf_tarif_jour" class="oe_inline oe_text_right" />
</xpath>
</field>
</record>
</odoo>
\ No newline at end of file
......@@ -3,6 +3,16 @@
<odoo>
<data>
<record id="lefilament_view_order_form" model="ir.ui.view">
<field name="name">lefilament.sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<header>
<button name="%(lefilament_open_create_project)d" type="action" string="Créer un projet" attrs="{'invisible': ['|', ('project_project_id', '!=', False), ('state', '!=', 'sale')]}"/>
</header>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import sale_views_wizard
\ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class LeFilamentSaleWizard(models.TransientModel):
_name = 'lefilament.sale.views.wizard'
_description = 'Sale Project Assignment'
@api.model
def _default_sale_id(self):
return self.env['sale.order'].browse(self.env.context.get('active_id'))
@api.model
def _default_project_project_id(self):
return self._default_sale_id().project_project_id
@api.model
def _default_related_project_id(self):
return self._default_sale_id().related_project_id
@api.model
def _default_project_name(self):
return self._default_sale_id().partner_id.name
sale_id = fields.Many2one('sale.order', string='Sale', default=_default_sale_id)
project_id = fields.Many2one('project.project', string='Projet existant', default=_default_project_project_id)
project_name = fields.Char('Nouveau Projet', default=_default_project_name)
related_project_id = fields.Many2one('account.analytic.account', string='Compte Analytique', default=_default_related_project_id)
related_project_name = fields.Char('Nouveau Compte Analytique', default=_default_project_name)
@api.onchange('project_id')
def onchange_project_id(self):
self.related_project_id = self.project_id.analytic_account_id
@api.multi
def close_dialog(self):
sale_id = self.env['sale.order'].browse(self.env.context.get('active_id'))
if self.project_id:
sale_id.project_id = self.project_id.analytic_account_id
sale_id.project_project_id = self.project_id
project_id_new = self.project_id.id
else:
sale_id._create_analytic_account(prefix=None)
project_id_new = sale_id.project_id.project_create({'name': self.project_name, 'use_tasks': True})
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')
for line in sale_id.order_line:
if line.product_id.project_id:
project = line.product_id.project_id
project_id = project.id
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()
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
task = self.env['project.task'].create({
'name': '%s:%s' % ('', line.product_id.name),
'date_deadline': line.procurement_ids.date_planned,
'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/>',
'project_id': project_id,
'company_id': line.procurement_ids.company_id.id,
'stage_id': stage.id,
})
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)
return {'type': 'ir.actions.act_window_close'}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="lefilament_project_view_form_create" model="ir.ui.view">
<field name="name">lefilament.project.view.form.create</field>
<field name="model">lefilament.sale.views.wizard</field>
<field name="arch" type="xml">
<form string="Lien Projet">
<sheet>
<group>
<group>
<field name="project_id" options="{'no_quick_create': True, 'no_create_edit' : True}" />
<field name="project_name" attrs="{'required': [('project_id', '=', False)]}"/>
</group>
</group>
<group>
<group>
<field name="related_project_id" options="{'no_quick_create': True, 'no_create_edit' : True}" readonly="1"/>
</group>
</group>
<footer>
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
<button string="Discard" class="btn-default" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="lefilament_open_create_project" model="ir.actions.act_window">
<field name="name">Créer un Projet</field>
<field name="res_model">lefilament.sale.views.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</odoo>
\ No newline at end of file
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