diff --git a/__init__.py b/__init__.py
index a5e7e1d4f02807b492d1626a2f84c5ba769474b3..eb6cc70758afc3954ae75ff55a99aa10415dffa2 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,3 +1,4 @@
 # -*- coding: utf-8 -*-
 
-import models
\ No newline at end of file
+import models
+import wizard
\ No newline at end of file
diff --git a/__manifest__.py b/__manifest__.py
index 7eacbd9be4eaf9e99776ea0b7d39c34619040e77..8a9b0ace55650801c536115acf27d61e946f4228 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -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': [
     ],
diff --git a/models/__init__.py b/models/__init__.py
index 4c86822a77d29d117a3eec175cdac2918305fd50..57bb6eb4c7ac26c8e27fc08278ba2bbb58a79e7a 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -4,4 +4,5 @@ import lf_link_sale_project
 import product
 import procurement
 import sale_order
-import sale_config_settings
\ No newline at end of file
+import sale_config_settings
+import res_config
\ No newline at end of file
diff --git a/models/procurement.py b/models/procurement.py
index 11a8b94bb6119b8e2d61aa0acde6ecd3561f7e1c..bdee566d015fc722dce1292c35a5651a4a0874a3 100644
--- a/models/procurement.py
+++ b/models/procurement.py
@@ -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})
 
diff --git a/models/product.py b/models/product.py
index 2034a4405ee8183743ad9876da5cc32ac2224a3d..709feeb3729631dab26a0c59e7e23790d89f132a 100644
--- a/models/product.py
+++ b/models/product.py
@@ -7,4 +7,5 @@ class LeFilamentProductTemplate(models.Model):
     _inherit = 'product.template'
 
     project_task_type_id = fields.Many2one(
-        'project.task.type', 'Project Task Type')
\ No newline at end of file
+        'project.task.type', 'Project Task Type')
+    product_link = fields.Boolean('Produit à lier au projet')
\ No newline at end of file
diff --git a/models/res_config.py b/models/res_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..902e06c520185e0ca9c459715142008b654377b1
--- /dev/null
+++ b/models/res_config.py
@@ -0,0 +1,17 @@
+# -*- 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
diff --git a/views/product_views.xml b/views/product_views.xml
index 0a0df78152b2f057bfe60303b4bb389c4f6d4ecf..606453ded3b166b2ff56eb0e7446d75c63798d24 100644
--- a/views/product_views.xml
+++ b/views/product_views.xml
@@ -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>
diff --git a/views/res_config_views.xml b/views/res_config_views.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ddf30821f4e540471058eca0f1177d3ca726847
--- /dev/null
+++ b/views/res_config_views.xml
@@ -0,0 +1,13 @@
+<?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
diff --git a/views/sale_views.xml b/views/sale_views.xml
index 75d6e9bcea2717dd7929cff5cfc7efdc1e1609e0..040d60953291e80c78b22f544834a6cc31b5fedc 100644
--- a/views/sale_views.xml
+++ b/views/sale_views.xml
@@ -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
diff --git a/wizard/__init__.py b/wizard/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a7174336b765bcf453d3b2503e362b53f67c763
--- /dev/null
+++ b/wizard/__init__.py
@@ -0,0 +1,4 @@
+# -*- 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
diff --git a/wizard/sale_views_wizard.py b/wizard/sale_views_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..0e6fe2e226ad621ac393a9a78962978ee96ab80d
--- /dev/null
+++ b/wizard/sale_views_wizard.py
@@ -0,0 +1,74 @@
+# -*- 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
diff --git a/wizard/sale_views_wizard.xml b/wizard/sale_views_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41544c671a8c7ac522b9f3e6272ddc5c4a930eb4
--- /dev/null
+++ b/wizard/sale_views_wizard.xml
@@ -0,0 +1,42 @@
+<?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