diff --git a/i18n/fr.po b/i18n/fr.po
index 556de65a8c4fe67cd4201379bbcf57dbc149b643..7bb25316efb40b169a940f13c745e1b2d9fbe05e 100644
--- a/i18n/fr.po
+++ b/i18n/fr.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 10.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-01-12 14:08+0000\n"
-"PO-Revision-Date: 2018-01-12 14:08+0000\n"
+"POT-Creation-Date: 2018-01-15 14:54+0000\n"
+"PO-Revision-Date: 2018-01-15 14:54+0000\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -15,6 +15,11 @@ msgstr ""
 "Content-Transfer-Encoding: \n"
 "Plural-Forms: \n"
 
+#. module: lefilament_link_sale_project
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_project_config_settings_lf_alias_prefix
+msgid "Alias prefix"
+msgstr "Préfixe Alias"
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_related_project_id
 msgid "Analytical account related"
@@ -61,6 +66,11 @@ msgstr "Annuler"
 msgid "Display Name"
 msgstr "Nom affiché"
 
+#. module: lefilament_link_sale_project
+#: selection:sale.config.settings,lf_follow_task:0
+msgid "Do not track delivered quantity"
+msgstr "Ne pas mettre à jour les quantités livrées"
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_project_id
 msgid "Existing project"
@@ -91,6 +101,11 @@ msgstr "Dernière mise à jour par"
 msgid "Last Updated on"
 msgstr "Dernière mise à jour le"
 
+#. module: lefilament_link_sale_project
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_sale_config_settings_lf_follow_task
+msgid "Manage quantity delivered"
+msgstr "Gestion de la quantité livrée"
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_related_project_name
 msgid "New Analytical Account"
@@ -147,6 +162,16 @@ msgstr "Affectation de projet de vente"
 msgid "Sales Order"
 msgstr "Bon de commande"
 
+#. module: lefilament_link_sale_project
+#: model:ir.model,name:lefilament_link_sale_project.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ligne de bons de commande"
+
+#. module: lefilament_link_sale_project
+#: selection:sale.config.settings,lf_follow_task:0
+msgid "Standard operation for tracking delivered quantitiy based on time spent on project tasks"
+msgstr "Fonctionnement standard pour le suivi de la quantité livrée en fonction du temps passé sur les tâches du projet"
+
 #. module: lefilament_link_sale_project
 #: model:ir.ui.view,arch_db:lefilament_link_sale_project.lefilament_view_sales_config
 msgid "Task"
@@ -184,3 +209,8 @@ msgstr "project.config.settings"
 msgid "sale.config.settings"
 msgstr "sale.config.settings"
 
+#. module: lefilament_link_sale_project
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_product_product_track_service
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_product_template_track_service
+msgid "Create a project and link tasks"
+msgstr "Créer un projet et lier les tâches"
diff --git a/i18n/lefilament_link_sale_project.pot b/i18n/lefilament_link_sale_project.pot
index 4f4c90bf8a2f1330bc7017ddce672b007ea1109f..003105cf53fd6a8cea0166a9e66e42adeafef104 100644
--- a/i18n/lefilament_link_sale_project.pot
+++ b/i18n/lefilament_link_sale_project.pot
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 10.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-01-12 15:01+0000\n"
-"PO-Revision-Date: 2018-01-12 15:01+0000\n"
+"POT-Creation-Date: 2018-01-15 14:53+0000\n"
+"PO-Revision-Date: 2018-01-15 14:53+0000\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -15,6 +15,11 @@ msgstr ""
 "Content-Transfer-Encoding: \n"
 "Plural-Forms: \n"
 
+#. module: lefilament_link_sale_project
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_project_config_settings_lf_alias_prefix
+msgid "Alias prefix"
+msgstr ""
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_related_project_id
 msgid "Analytical account related"
@@ -61,6 +66,11 @@ msgstr ""
 msgid "Display Name"
 msgstr ""
 
+#. module: lefilament_link_sale_project
+#: selection:sale.config.settings,lf_follow_task:0
+msgid "Do not track delivered quantity"
+msgstr ""
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_project_id
 msgid "Existing project"
@@ -91,6 +101,11 @@ msgstr ""
 msgid "Last Updated on"
 msgstr ""
 
+#. module: lefilament_link_sale_project
+#: model:ir.model.fields,field_description:lefilament_link_sale_project.field_sale_config_settings_lf_follow_task
+msgid "Manage quantity delivered"
+msgstr ""
+
 #. module: lefilament_link_sale_project
 #: model:ir.model.fields,field_description:lefilament_link_sale_project.field_lefilament_sale_views_wizard_related_project_name
 msgid "New Analytical Account"
@@ -147,6 +162,16 @@ msgstr ""
 msgid "Sales Order"
 msgstr ""
 
+#. module: lefilament_link_sale_project
+#: model:ir.model,name:lefilament_link_sale_project.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: lefilament_link_sale_project
+#: selection:sale.config.settings,lf_follow_task:0
+msgid "Standard operation for tracking delivered quantitiy based on time spent on project tasks"
+msgstr ""
+
 #. module: lefilament_link_sale_project
 #: model:ir.ui.view,arch_db:lefilament_link_sale_project.lefilament_view_sales_config
 msgid "Task"
diff --git a/models/res_config.py b/models/res_config.py
index 7182cae7545a32d97dc2d33bb691ff120d11c0b2..2926a3e401f63a220813883ca621549f6cf7ead1 100644
--- a/models/res_config.py
+++ b/models/res_config.py
@@ -10,8 +10,14 @@ class ProjectLFConfiguration(models.TransientModel):
     _inherit = 'project.config.settings'
 
     lf_tarif_jour = fields.Float('Day Price')
+    lf_alias_prefix = fields.Char('Alias prefix')
 
     @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
+        Values.set_default('project.config.settings', 'lf_tarif_jour', self.lf_tarif_jour)
+
+    @api.multi
+    def set_default_alias_prefix(self):
+        Values = self.env['ir.values'].sudo()
+        Values.set_default('project.config.settings', 'lf_alias_prefix', self.lf_alias_prefix)
\ No newline at end of file
diff --git a/models/sale_config_settings.py b/models/sale_config_settings.py
index b1c4d1798ecb27f597738f66295712889eba227f..4328e0f0091b0a48b29e1ecdb07a3076a450f5bd 100644
--- a/models/sale_config_settings.py
+++ b/models/sale_config_settings.py
@@ -15,8 +15,17 @@ class LeFilamentSaleConfiguration(models.TransientModel):
 
     project_task_type_id = fields.Many2one(
         'project.task.type', 'Initial step')
+    lf_follow_task = fields.Selection([
+        (0, "Standard operation for tracking delivered quantitiy based on time spent on project tasks"),
+        (1, "Do not track delivered quantity")
+        ], "Manage quantity delivered")
 
     @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)
\ No newline at end of file
+            'sale.config.settings', 'project_task_type_id', self.project_task_type_id.id)
+
+    @api.multi
+    def set_lf_follow_task(self):
+        return self.env['ir.values'].sudo().set_default(
+            'sale.config.settings', 'lf_follow_task', self.lf_follow_task)
\ No newline at end of file
diff --git a/models/sale_order.py b/models/sale_order.py
index a2c7bd7ba5b226ed1007950600d362cb3e84f088..ede53cd9fc99313f087b9a9bb09e7abf2487e7fe 100644
--- a/models/sale_order.py
+++ b/models/sale_order.py
@@ -72,4 +72,44 @@ class SaleOrder(models.Model):
             project_date.lf_tarif_jour = lf_tarif_jour
             project_date.lf_total_budget = project_total_budget
             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
+            order.tasks_count = len(order.tasks_ids)
+
+class LeFilamentSaleOrderLine(models.Model):
+    _inherit = "sale.order.line"
+
+    @api.multi
+    def _compute_analytic(self, domain=None):
+        lines = {}
+        force_so_lines = self.env.context.get("force_so_lines")
+        if not domain and self.ids:
+            # To filter on analyic lines linked to an expense
+            expense_type_id = self.env.ref('account.data_account_type_expenses', raise_if_not_found=False)
+            expense_type_id = expense_type_id and expense_type_id.id
+            domain = [('so_line', 'in', self.ids), '|', ('amount', '<=', 0.0), ('project_id', '!=', False)]
+
+        data = self.env['account.analytic.line'].read_group(
+            domain,
+            ['so_line', 'unit_amount', 'product_uom_id'], ['product_uom_id', 'so_line'], lazy=False
+        )
+        # If the unlinked analytic line was the last one on the SO line, the qty was not updated.
+        if force_so_lines:
+            for line in force_so_lines:
+                lines.setdefault(line, 0.0)
+        for d in data:
+            if not d['product_uom_id']:
+                continue
+            line = self.browse(d['so_line'][0])
+            lines.setdefault(line, 0.0)
+            uom = self.env['product.uom'].browse(d['product_uom_id'][0])
+            if line.product_uom.category_id == uom.category_id:
+                qty = uom._compute_quantity(d['unit_amount'], line.product_uom)
+            else:
+                qty = d['unit_amount']
+            lines[line] += qty
+
+        for line, qty in lines.items():
+            if not self.env['ir.values'].get_default('sale.config.settings', 'lf_follow_task'):
+                line.qty_delivered = qty
+            else:
+                line.qty_delivered = 0
+        return True    
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
new file mode 100644
index 0000000000000000000000000000000000000000..60d8f3dcee692c79cb3bbc814942ad2a7068694d
--- /dev/null
+++ b/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_config_settings_manager,project.project_config_settings_manager,model_project_config_settings,project.group_project_manager,1,1,1,1
\ No newline at end of file
diff --git a/views/res_config_views.xml b/views/res_config_views.xml
index 9ddf30821f4e540471058eca0f1177d3ca726847..d808fb50a49d36b7f064e44a0c66c94228485e7b 100644
--- a/views/res_config_views.xml
+++ b/views/res_config_views.xml
@@ -6,7 +6,8 @@
         <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" />
+                <field name="lf_tarif_jour"  class="oe_inline oe_text_right" />
+				<field name="lf_alias_prefix"  class="oe_inline" />
             </xpath>
         </field>
     </record>
diff --git a/views/sale_config_settings_views.xml b/views/sale_config_settings_views.xml
index f12e47ab6714ac024196ef1a82c6720d671656f8..64194c01fbf31b209ad77852a86b3f747fe1dcd4 100644
--- a/views/sale_config_settings_views.xml
+++ b/views/sale_config_settings_views.xml
@@ -8,6 +8,7 @@
                 <div id="main" position="inside">
                     <group string="Task">
                         <field name="project_task_type_id" class="oe_inline"/>
+                        <field name="lf_follow_task" widget="radio"/>
                     </group>
                 </div>
             </field>
diff --git a/wizard/sale_views_wizard.py b/wizard/sale_views_wizard.py
index 9711682c0a6e2961b5725802d91dfd5ccfcf7a47..cde1147bf11106321e529a3333eb837c9cebef56 100644
--- a/wizard/sale_views_wizard.py
+++ b/wizard/sale_views_wizard.py
@@ -54,6 +54,8 @@ class LeFilamentSaleWizard(models.TransientModel):
         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')
+        lf_alias_prefix = self.env['ir.values'].get_default('project.config.settings', 'lf_alias_prefix')
+        ir_values = self.env['ir.values'].get_default('project.config.settings', 'generate_project_alias')
         for line in sale_id.order_line:
             if line.product_id.track_service == 'project':
                 if line.product_id.project_id:
@@ -74,6 +76,10 @@ class LeFilamentSaleWizard(models.TransientModel):
                 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
+                if not line.product_id.project_id:    
+                    if ir_values and lf_alias_prefix:
+                        lf_alias_name = lf_alias_prefix + project_date.name
+                        project_date.alias_name = lf_alias_name
                 planned_hours = (line.price_subtotal / lf_tarif_jour) * lf_heures_jour
                 description_line = "<p>"
                 i = 1