diff --git a/__manifest__.py b/__manifest__.py
index fc2f7d137826978fa85082ac8900ff717d7cd9d4..8d8b680b737aaa44bcfd12456c8027a9caf50fee 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -16,6 +16,8 @@
         # views
         'views/membership_membership_line.xml',
         'views/res_partner.xml',
+        # templates
+        'templates/report_invoice_document.xml',
         # wizard
         'wizard/membership_import.xml',
     ],
diff --git a/models/__init__.py b/models/__init__.py
index 8ac42b99811a8f17700989b1702018208ab0aa9c..a644c869d6f46fa97d2e2de78c01fc4b29b4f2b1 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,4 +1,5 @@
 # Copyright 2021 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
+from . import account_move
 from . import res_partner
diff --git a/models/account_move.py b/models/account_move.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ce086c2f1309cc58464831a2c0ce65aefa65d27
--- /dev/null
+++ b/models/account_move.py
@@ -0,0 +1,23 @@
+# Copyright 2021 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import models
+
+
+class AccountMove(models.Model):
+    _inherit = 'account.move'
+
+    def action_post(self):
+        """
+        Surcharge la fonciton parente pour attribuer automatiquement
+        un numéro d'adhérent
+        """
+        if self.partner_id.membership_number == 0:
+            membership_lines = self.line_ids.filtered(
+                lambda line: line.move_id.move_type == 'out_invoice' and line.product_id.membership)
+            if membership_lines:
+                self.partner_id.write({
+                    'membership_number': self.env['ir.sequence'].sudo().next_by_code('afac.membership.number')
+                })
+        res = super(AccountMove, self).action_post()
+        return res
diff --git a/models/res_partner.py b/models/res_partner.py
index adfca79cd8c283792586ef273f2affe08eca1634..ec0c27d24d6a52b3ea0d06d4df27ec288cf90694 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -10,8 +10,6 @@ class ResPartner(models.Model):
     # Company Fields
     membership_number = fields.Integer(
         string='N° Adhérent',
-        compute='_compute_membership_number',
-        store=True
     )
     membership_contact_id = fields.Many2one(
         comodel_name='res.partner',
@@ -40,11 +38,6 @@ class ResPartner(models.Model):
     # ------------------------------------------------------
     # Computed fields / Search Fields
     # ------------------------------------------------------
-    @api.depends('membership_state')
-    def _compute_membership_number(self):
-        for partner in self:
-            if partner.membership_number == 0 and partner.membership_state != 'none':
-                self.membership_number = self.env['ir.sequence'].next_by_code('afac.membership.number')
 
     # ------------------------------------------------------
     # Onchange / Constraints
diff --git a/templates/report_invoice_document.xml b/templates/report_invoice_document.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91dfd354905eba49e5268a08dbb08600713bf470
--- /dev/null
+++ b/templates/report_invoice_document.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data>
+
+        <template id="afac_report_invoice_document" inherit_id="account.report_invoice_document">
+            <xpath expr="//div[@name='invoice_date']" position="after">
+                <div class="col-auto col-3 mw-100 mb-2" t-if="o.partner_id.membership_number > 0 and o.move_type == 'out_invoice' and o.state == 'posted'" name="membership_number">
+                    <strong>N° Adhérent :</strong>
+                    <p class="m-0" t-field="o.partner_id.membership_number"/>
+                </div>
+            </xpath>
+        </template>
+
+    </data>
+</odoo>
\ No newline at end of file
diff --git a/views/membership_membership_line.xml b/views/membership_membership_line.xml
index 7e93c2d2b7d0bfc23ea8ce21eca6d3a3f91ec321..86eb94f28540623d4a38ff1da6388ec97ddf71b0 100644
--- a/views/membership_membership_line.xml
+++ b/views/membership_membership_line.xml
@@ -119,6 +119,14 @@
                   groups="base.group_erp_manager"
         />
 
+        <!-- Articles -->
+        <menuitem name="Articles d'adhésion"
+                  id="menu_membership_products"
+                  sequence="102"
+                  parent="account.menu_finance_receivables"
+                  action="membership.action_membership_products"
+        />
+
 
     </data>
 </odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
index e42390824b63f1764f66c47ce3ab4f08009870f4..dc60dccd22b93d06b0d8e3f460c242c7ec4b07da 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -56,43 +56,7 @@
                     <attribute name="invisible">1</attribute>
                 </xpath>
                 <xpath expr="//field[@name='free_member']" position="before">
-                    <field name="membership_number"/>
-                </xpath>
-                <xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes">
-                    <attribute name="invisible">1</attribute>
-                </xpath>
-                <xpath expr="//field[@name='associate_member']" position="attributes">
-                    <attribute name="invisible">1</attribute>
-                </xpath>
-                <xpath expr="//field[@name='member_lines']" position="before">
-                    <separator></separator>
-                    <group>
-                        <group>
-                            <field name="membership_mandate_id" options="{'no_create': True}"/>
-                            <field name="membership_delegate_id" options="{'no_create': True}"/>
-                        </group>
-                        <group>
-                            <field name="membership_contact_id" options="{'no_create': True}"/>
-                        </group>
-                    </group>
-                </xpath>
-            </field>
-        </record>
-
-        <!-- Form view -->
-        <record model="ir.ui.view" id="res_partner_membership_form">
-            <field name="name">res.partner.membership.form.inherit</field>
-            <field name="inherit_id" ref="membership.view_partner_form"/>
-            <field name="model">res.partner</field>
-            <field name="arch" type="xml">
-                <xpath expr="//page[@name='membership']" position="attributes">
-                    <attribute name="attrs">{'invisible': [('is_company', '!=', True)]}</attribute>
-                </xpath>
-                <xpath expr="//field[@name='free_member']" position="attributes">
-                    <attribute name="invisible">1</attribute>
-                </xpath>
-                <xpath expr="//field[@name='free_member']" position="before">
-                    <field name="membership_number"/>
+                    <field name="membership_number" readonly="1"/>
                 </xpath>
                 <xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes">
                     <attribute name="invisible">1</attribute>
@@ -101,7 +65,7 @@
                     <attribute name="invisible">1</attribute>
                 </xpath>
                 <xpath expr="//field[@name='member_lines']" position="before">
-                    <separator></separator>
+                    <hr/>
                     <group>
                         <group>
                             <field name="membership_mandate_id" options="{'no_create': True}"/>