diff --git a/NEWS.rst b/NEWS.rst
index efe989234664650a92eb957b135088821213267e_TkVXUy5yc3Q=..44c22574708d0fd9a5189f02a3f5d595d558b2db_TkVXUy5yc3Q= 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -2,6 +2,11 @@
 Changelog
 =========
 
+16.0.1.3.0
+----------
+
+Update change set ab0e2f73d041: Add invoice template as standard
+
 16.0.1.2.3
 ----------
 
diff --git a/__manifest__.py b/__manifest__.py
index efe989234664650a92eb957b135088821213267e_X19tYW5pZmVzdF9fLnB5..44c22574708d0fd9a5189f02a3f5d595d558b2db_X19tYW5pZmVzdF9fLnB5 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -21,7 +21,7 @@
 {
     "name": "Redner",
     "license": "AGPL-3",
-    "version": "16.0.1.2.3",
+    "version": "16.0.1.3.0",
     "category": "Reporting",
     "author": "XCG Consulting",
     "website": "https://orbeet.io/",
diff --git a/data/ir_actions_report_demo.xml b/data/ir_actions_report_demo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44c22574708d0fd9a5189f02a3f5d595d558b2db_ZGF0YS9pcl9hY3Rpb25zX3JlcG9ydF9kZW1vLnhtbA==
--- /dev/null
+++ b/data/ir_actions_report_demo.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <!-- Function for making report template -->
+    <function model="ir.actions.report" name="_redner_demo_invoice_having_report">
+        <value
+            eval="[
+    ref('redner.redner_avoir_substitution'),
+    ref('redner.redner_avoir_logo_body_substitution'),
+    ref('redner.redner_avoir_logo_mime_type_substitution'),
+    ref('redner.redner_bic_societe_substitution'),
+    ref('redner.redner_condition_paiement_substitution'),
+    ref('redner.redner_facture_substitution'),
+    ref('redner.redner_facture_logo_body_substitution'),
+    ref('redner.redner_facture_logo_mime_type_substitution'),
+    ref('redner.redner_iban_societe_substitution'),
+    ref('redner.redner_invoice_line_ids_substitution'),
+    ref('redner.redner_invoice_line_ids_article_substitution'),
+    ref('redner.redner_invoice_line_ids_prixunitaire_substitution'),
+    ref('redner.redner_invoice_line_ids_quantity_substitution'),
+    ref('redner.redner_invoice_line_ids_totalht_substitution'),
+    ref('redner.redner_montant_ht_substitution'),
+    ref('redner.redner_montant_total_substitution'),
+    ref('redner.redner_montant_tva_substitution'),
+    ref('redner.redner_nom_banque_societe_substitution'),
+    ref('redner.redner_invoiceduedate_substitution'),
+    ref('redner.redner_logo_substitution'),
+    ref('redner.redner_num_AVOIR_substitution'),
+    ref('redner.redner_transaction_date_substitution'),
+    ref('redner.redner_date_invoice_substitution'),
+    ref('redner.redner_invoiceduedate_2_substitution'),
+    ref('redner.redner_logo_2_substitution'),
+    ref('redner.redner_num_facture_substitution'),
+    ref('redner.redner_codepostal_societe_substitution'),
+    ref('redner.redner_codepostalclient_substitution'),
+    ref('redner.redner_courriel_societe_substitution'),
+    ref('redner.redner_nomclient_substitution'),
+    ref('redner.redner_rue1_societe_substitution'),
+    ref('redner.redner_rue1client_substitution'),
+    ref('redner.redner_rue2_societe_substitution'),
+    ref('redner.redner_avoir_rue2_societe_rue2_societe_substitution'),
+    ref('redner.redner_rue2client_substitution'),
+    ref('redner.redner_avoir_rue2client_rue2client_substitution'),
+    ref('redner.redner_siret_societe_substitution'),
+    ref('redner.redner_tva_societe_substitution'),
+    ref('redner.redner_ville_societe_substitution'),
+    ref('redner.redner_villeclient_substitution'),
+    ref('redner.redner_codepostal_societe_2_substitution'),
+    ref('redner.redner_codepostalclient_2_substitution'),
+    ref('redner.redner_courriel_societe_2_substitution'),
+    ref('redner.redner_nomclient_2_substitution'),
+    ref('redner.redner_rue1_societe_2_substitution'),
+    ref('redner.redner_rue1client_2_substitution'),
+    ref('redner.redner_rue2_societe_2_substitution'),
+    ref('redner.redner_facture_rue2_societe_rue2_societe_substitution'),
+    ref('redner.redner_rue2client_2_substitution'),
+    ref('redner.redner_facture_rue2client_rue2client_substitution'),
+    ref('redner.redner_siret_societe_2_substitution'),
+    ref('redner.redner_tva_societe_2_substitution'),
+    ref('redner.redner_ville_societe_2_substitution'),
+    ref('redner.redner_villeclient_2_substitution'),
+    ref('redner.redner_invoice_line_ids_remise_substitution'),
+    ref('redner.redner_invoice_line_ids_unite_substitution'),
+    ref('redner.redner_lignes_tva_substitution'),
+    ref('redner.redner_lignes_tva_taxe_origine_substitution'),
+    ref('redner.redner_lignes_tva_amount_tax_ligne_substitution'),
+    ref('redner.redner_lignes_tva_base_taxe_substitution'),
+    ref('redner.redner_lignes_tva_montant_taxe_substitution'),
+    ref('redner.redner_ref_client_substitution'),
+    ref('redner.redner_invoice_line_ids_section_name_substitution'),
+    ref('redner.redner_invoice_line_ids_section_substitution'),
+    ref('redner.redner_invoice_line_ids_note_name_substitution'),
+    ref('redner.redner_invoice_line_ids_note_substitution'),
+    ref('redner.redner_invoice_line_ids_not_section_substitution'),]"
+        />
+    </function>
+</odoo>
diff --git a/data/redner_demo.xml b/data/redner_demo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44c22574708d0fd9a5189f02a3f5d595d558b2db_ZGF0YS9yZWRuZXJfZGVtby54bWw=
--- /dev/null
+++ b/data/redner_demo.xml
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <!-- Making redner template without using redner -->
+    <record id="redner_invoice_having" model="redner.template">
+        <field name="name">facture_avoir_v9_test_130620241317.odt</field>
+        <field name="language">
+            application/vnd.oasis.opendocument.text|od+mustache
+        </field>
+        <field
+            name="template_data"
+            type="base64"
+            file="redner/static/odt/facture_avoir_v9.odt"
+        />
+        <!-- Redner data record should not use Redner by default,
+         required configurations will be handled manually -->
+        <field name="use_redner">False</field>
+    </record>
+
+    <!-- Substitutions from redner template -->
+    <record id="redner_avoir_substitution" model="redner.substitution">
+        <field name="keyword">avoir</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.move_type=='out_refund' }}</field>
+    </record>
+
+    <record id="redner_avoir_logo_body_substitution" model="redner.substitution">
+        <field name="keyword">avoir.logo.body</field>
+    </record>
+
+    <record id="redner_avoir_logo_mime_type_substitution" model="redner.substitution">
+        <field name="keyword">avoir.logo.mime-type</field>
+    </record>
+
+    <record id="redner_bic_societe_substitution" model="redner.substitution">
+        <field name="keyword">bic_societe</field>
+        <field name="converter">mail_template</field>
+        <field name="value">
+            {{ object.company_id.partner_id.bank_ids[0].bank_id.bic }}
+        </field>
+    </record>
+
+    <record id="redner_condition_paiement_substitution" model="redner.substitution">
+        <field name="keyword">condition_paiement</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.property_payment_term_id.name</field>
+    </record>
+
+    <record id="redner_facture_substitution" model="redner.substitution">
+        <field name="keyword">facture</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.move_type=='out_invoice' }}</field>
+    </record>
+
+    <record id="redner_facture_logo_body_substitution" model="redner.substitution">
+        <field name="keyword">facture.logo.body</field>
+    </record>
+
+    <record id="redner_facture_logo_mime_type_substitution" model="redner.substitution">
+        <field name="keyword">facture.logo.mime-type</field>
+    </record>
+
+    <record id="redner_iban_societe_substitution" model="redner.substitution">
+        <field name="keyword">iban_societe</field>
+        <field name="converter">mail_template</field>
+        <field name="value">
+            {{ object.company_id.partner_id.bank_ids[0].acc_number }}
+        </field>
+    </record>
+
+    <record id="redner_invoice_line_ids_substitution" model="redner.substitution">
+        <field name="keyword">invoice_line_ids</field>
+        <field name="converter">relation-to-many</field>
+        <field name="value">invoice_line_ids</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_article_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.article</field>
+        <field name="converter">field</field>
+        <field name="value">name</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_prixunitaire_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.prixunitaire</field>
+        <field name="converter">field</field>
+        <field name="value">price_unit</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_quantity_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.quantity</field>
+        <field name="converter">field</field>
+        <field name="value">quantity</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_totalht_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.totalht</field>
+        <field name="converter">field</field>
+        <field name="value">price_subtotal</field>
+    </record>
+
+    <record id="redner_montant_ht_substitution" model="redner.substitution">
+        <field name="keyword">montant_ht</field>
+        <field name="converter">field</field>
+        <field name="value">amount_untaxed</field>
+    </record>
+
+    <record id="redner_montant_total_substitution" model="redner.substitution">
+        <field name="keyword">montant_total</field>
+        <field name="converter">field</field>
+        <field name="value">amount_total</field>
+    </record>
+
+    <record id="redner_montant_tva_substitution" model="redner.substitution">
+        <field name="keyword">montant_tva</field>
+        <field name="converter">field</field>
+        <field name="value">amount_tax</field>
+    </record>
+
+    <record id="redner_nom_banque_societe_substitution" model="redner.substitution">
+        <field name="keyword">nom_banque_societe</field>
+        <field name="converter">mail_template</field>
+        <field name="value">
+            {{ object.company_id.partner_id.bank_ids[0].bank_id.name }}
+        </field>
+    </record>
+
+    <record id="redner_invoiceduedate_substitution" model="redner.substitution">
+        <field name="keyword">invoiceduedate</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.invoice_date_due }}</field>
+    </record>
+
+    <record id="redner_logo_substitution" model="redner.substitution">
+        <field name="keyword">logo</field>
+        <field name="converter">image-file</field>
+        <field name="value">company_id.logo</field>
+    </record>
+
+    <record id="redner_num_AVOIR_substitution" model="redner.substitution">
+        <field name="keyword">num_AVOIR</field>
+        <field name="converter">field</field>
+        <field name="value">name</field>
+    </record>
+
+    <record id="redner_transaction_date_substitution" model="redner.substitution">
+        <field name="keyword">transaction_date</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.invoice_date }}</field>
+    </record>
+
+    <record id="redner_date_invoice_substitution" model="redner.substitution">
+        <field name="keyword">date_invoice</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.invoice_date }}</field>
+    </record>
+
+    <record id="redner_invoiceduedate_2_substitution" model="redner.substitution">
+        <field name="keyword">invoiceduedate</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.invoice_date_due }}</field>
+    </record>
+
+    <record id="redner_logo_2_substitution" model="redner.substitution">
+        <field name="keyword">logo</field>
+        <field name="converter">image-file</field>
+        <field name="value">company_id.logo</field>
+    </record>
+
+    <record id="redner_num_facture_substitution" model="redner.substitution">
+        <field name="keyword">num_facture</field>
+        <field name="converter">field</field>
+        <field name="value">name</field>
+    </record>
+
+    <record id="redner_codepostal_societe_substitution" model="redner.substitution">
+        <field name="keyword">codepostal_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.zip</field>
+    </record>
+
+    <record id="redner_codepostalclient_substitution" model="redner.substitution">
+        <field name="keyword">codepostalclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.zip</field>
+    </record>
+
+    <record id="redner_courriel_societe_substitution" model="redner.substitution">
+        <field name="keyword">courriel_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.email</field>
+    </record>
+
+    <record id="redner_nomclient_substitution" model="redner.substitution">
+        <field name="keyword">nomclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.name</field>
+    </record>
+
+    <record id="redner_rue1_societe_substitution" model="redner.substitution">
+        <field name="keyword">rue1_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.street</field>
+    </record>
+
+    <record id="redner_rue1client_substitution" model="redner.substitution">
+        <field name="keyword">rue1client</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.street</field>
+    </record>
+
+    <record id="redner_rue2_societe_substitution" model="redner.substitution">
+        <field name="keyword">rue2_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.street2</field>
+    </record>
+
+    <record
+        id="redner_avoir_rue2_societe_rue2_societe_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">avoir.rue2_societe.rue2_societe</field>
+    </record>
+
+    <record id="redner_rue2client_substitution" model="redner.substitution">
+        <field name="keyword">rue2client</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.street2</field>
+    </record>
+
+    <record
+        id="redner_avoir_rue2client_rue2client_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">avoir.rue2client.rue2client</field>
+    </record>
+
+    <record id="redner_siret_societe_substitution" model="redner.substitution">
+        <field name="keyword">siret_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.siret</field>
+    </record>
+
+    <record id="redner_tva_societe_substitution" model="redner.substitution">
+        <field name="keyword">tva_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.vat</field>
+    </record>
+
+    <record id="redner_ville_societe_substitution" model="redner.substitution">
+        <field name="keyword">ville_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.city</field>
+    </record>
+
+    <record id="redner_villeclient_substitution" model="redner.substitution">
+        <field name="keyword">villeclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.city</field>
+    </record>
+
+    <record id="redner_codepostal_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">codepostal_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.zip</field>
+    </record>
+
+    <record id="redner_codepostalclient_2_substitution" model="redner.substitution">
+        <field name="keyword">codepostalclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.zip</field>
+    </record>
+
+    <record id="redner_courriel_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">courriel_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.email</field>
+    </record>
+
+    <record id="redner_nomclient_2_substitution" model="redner.substitution">
+        <field name="keyword">nomclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.name</field>
+    </record>
+
+    <record id="redner_rue1_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">rue1_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.street</field>
+    </record>
+
+    <record id="redner_rue1client_2_substitution" model="redner.substitution">
+        <field name="keyword">rue1client</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.street</field>
+    </record>
+
+    <record id="redner_rue2_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">rue2_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.street2</field>
+    </record>
+
+    <record
+        id="redner_facture_rue2_societe_rue2_societe_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">facture.rue2_societe.rue2_societe</field>
+    </record>
+
+    <record id="redner_rue2client_2_substitution" model="redner.substitution">
+        <field name="keyword">rue2client</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.street2</field>
+    </record>
+
+    <record
+        id="redner_facture_rue2client_rue2client_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">facture.rue2client.rue2client</field>
+    </record>
+
+    <record id="redner_siret_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">siret_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.siret</field>
+    </record>
+
+    <record id="redner_tva_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">tva_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.vat</field>
+    </record>
+
+    <record id="redner_ville_societe_2_substitution" model="redner.substitution">
+        <field name="keyword">ville_societe</field>
+        <field name="converter">field</field>
+        <field name="value">company_id.city</field>
+    </record>
+
+    <record id="redner_villeclient_2_substitution" model="redner.substitution">
+        <field name="keyword">villeclient</field>
+        <field name="converter">field</field>
+        <field name="value">partner_id.city</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_remise_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.remise</field>
+        <field name="converter">field</field>
+        <field name="value">discount</field>
+    </record>
+
+    <record id="redner_invoice_line_ids_unite_substitution" model="redner.substitution">
+        <field name="keyword">invoice_line_ids.unite</field>
+        <field name="converter">mail_template</field>
+        <field name="value">
+            {{ object.product_uom_id.name if object.product_uom_id else "" }}
+        </field>
+    </record>
+
+    <record id="redner_lignes_tva_substitution" model="redner.substitution">
+        <field name="keyword">lignes_tva</field>
+        <field name="converter">relation-to-many</field>
+        <field name="value">line_ids</field>
+    </record>
+
+    <record
+        id="redner_lignes_tva_taxe_origine_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">lignes_tva.taxe_origine</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ bool(object.tax_line_id) }}</field>
+    </record>
+
+    <record
+        id="redner_lignes_tva_amount_tax_ligne_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">lignes_tva.amount_tax_ligne</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{object.tax_line_id.tax_group_id.name}}</field>
+    </record>
+
+    <record id="redner_lignes_tva_base_taxe_substitution" model="redner.substitution">
+        <field name="keyword">lignes_tva.base_taxe</field>
+        <field name="converter">field</field>
+        <field name="value">tax_base_amount</field>
+    </record>
+
+    <record
+        id="redner_lignes_tva_montant_taxe_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">lignes_tva.montant_taxe</field>
+        <field name="converter">field</field>
+        <field name="value">credit</field>
+    </record>
+
+    <record id="redner_ref_client_substitution" model="redner.substitution">
+        <field name="keyword">ref_client</field>
+        <field name="converter">field</field>
+        <field name="value">ref</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_section_name_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.section_name</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.name }}</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_section_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.section</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.display_type=='line_section' }}</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_note_name_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.note_name</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.name }}</field>
+    </record>
+
+    <record id="redner_invoice_line_ids_note_substitution" model="redner.substitution">
+        <field name="keyword">invoice_line_ids.note</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.display_type=='line_note' }}</field>
+    </record>
+
+    <record
+        id="redner_invoice_line_ids_not_section_substitution"
+        model="redner.substitution"
+    >
+        <field name="keyword">invoice_line_ids.not_section</field>
+        <field name="converter">mail_template</field>
+        <field name="value">{{ object.display_type=='product' }}</field>
+    </record>
+</odoo>
diff --git a/i18n/fr.po b/i18n/fr.po
index efe989234664650a92eb957b135088821213267e_aTE4bi9mci5wbw==..44c22574708d0fd9a5189f02a3f5d595d558b2db_aTE4bi9mci5wbw== 100644
--- a/i18n/fr.po
+++ b/i18n/fr.po
@@ -1,4 +1,4 @@
 # Translation of Odoo Server.
 # This file contains the translation of the following modules:
-# * redner
+# 	* redner
 # Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>, 2021.
@@ -4,5 +4,6 @@
 # Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>, 2021.
+# Houzéfa Abbasbhay <houzefa.abba@xcg-consulting.fr>, 2021.
 msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 16.0\n"
 "Report-Msgid-Bugs-To: \n"
@@ -5,13 +6,13 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 16.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-03 16:15+0000\n"
-"PO-Revision-Date: 2023-02-03 17:15+0100\n"
-"Last-Translator: Houzéfa Abbasbhay <houzefa.abba@xcg-consulting.fr>\n"
-"Language-Team: XCG Consulting\n"
+"POT-Creation-Date: 2024-06-13 17:24+0000\n"
+"PO-Revision-Date: 2024-06-13 17:37+0000\n"
+"Last-Translator: Arona Ben Cherif Diatta <aronabencherif.diatta@xcg.africa>\n"
+"Language-Team: \n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -13,9 +14,9 @@
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 3.4.3\n"
 
 #. module: redner
 #. odoo-python
@@ -56,6 +57,8 @@
 "Cannot find redner config url. Please add it in odoo.conf or in ir."
 "config_parameter"
 msgstr ""
+"Impossible de trouver l'url de configuration de redner. Veuillez l'ajouter "
+"dans odoo.conf ou dans ir.config_parameter"
 
 #. module: redner
 #: model:ir.model.fields,help:redner.field_redner_template__body
@@ -111,7 +114,7 @@
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_substitution__value
 msgid "Expression"
-msgstr "Expression"
+msgstr ""
 
 #. module: redner
 #. odoo-python
@@ -145,10 +148,10 @@
 #. module: redner
 #: model:ir.model.fields.selection,name:redner.selection__redner_template__language__text/html|mustache
 msgid "HTML + mustache"
-msgstr "HTML + mustache"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_report__id
 #: model:ir.model.fields,field_description:redner.field_redner_substitution__id
 #: model:ir.model.fields,field_description:redner.field_redner_template__id
 msgid "ID"
@@ -149,10 +152,10 @@
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_report__id
 #: model:ir.model.fields,field_description:redner.field_redner_substitution__id
 #: model:ir.model.fields,field_description:redner.field_redner_template__id
 msgid "ID"
-msgstr "ID"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,help:redner.field_redner_template__active
@@ -166,8 +169,9 @@
 #: model:ir.model.fields,help:redner.field_ir_actions_report__redner_multi_in_one
 msgid ""
 "If you execute a report on several records, by default Odoo will generate a "
-"ZIP file that contains as many files as selected records. If you enable this "
-"option, Odoo will generate instead a single report for the selected records."
+"ZIP file that contains as many files as selected records. If you enable "
+"this option, Odoo will generate instead a single report for the selected "
+"records."
 msgstr ""
 "Si vous exécutez un rapport sur plusieurs enregistrements, par défaut, Odoo "
 "générera un fichier ZIP qui contiendra autant de fichiers que "
@@ -185,6 +189,11 @@
 msgstr ""
 
 #. module: redner
+#: model:ir.model.fields,help:redner.field_redner_template__use_redner
+msgid "Indicate whether this redner template is synchronized with redner"
+msgstr "Indique si ce modèle redner est synchronisé avec redner"
+
+#. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_report__ir_actions_report_id
 msgid "Ir Actions Report"
 msgstr ""
@@ -244,7 +253,7 @@
 #. module: redner
 #: model:ir.model.fields.selection,name:redner.selection__redner_template__language__text/mjml|mustache
 msgid "MJML + mustache"
-msgstr "MJML + mustache"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_ir_actions_report__redner_multi_in_one
@@ -279,7 +288,7 @@
 #. module: redner
 #: model:ir.ui.menu,name:redner.redner_menu
 msgid "Redner"
-msgstr "Redner"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_template__redner_id
@@ -333,7 +342,7 @@
 #. module: redner
 #: model:ir.model,name:redner.model_ir_actions_report
 msgid "Report Action"
-msgstr ""
+msgstr "Signaler l'action"
 
 #. module: redner
 #: model:ir.model,name:redner.model_redner_report
@@ -343,7 +352,7 @@
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_ir_actions_report__report_type
 msgid "Report Type"
-msgstr ""
+msgstr "Type de rapport"
 
 #. module: redner
 #: model:ir.actions.server,name:redner.send_to_rednerd_server_action
@@ -358,8 +367,8 @@
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_template__slug
 msgid "Slug"
-msgstr "Slug"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_ir_actions_report__substitution_ids
 msgid "Substitution"
@@ -362,11 +371,11 @@
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_ir_actions_report__substitution_ids
 msgid "Substitution"
-msgstr "Substitution"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_mail_template__redner_substitution_ids
 #: model_terms:ir.ui.view,arch_db:redner.redner_report_view
 #: model_terms:ir.ui.view,arch_db:redner.view_email_template_form
 msgid "Substitutions"
@@ -367,10 +376,15 @@
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_mail_template__redner_substitution_ids
 #: model_terms:ir.ui.view,arch_db:redner.redner_report_view
 #: model_terms:ir.ui.view,arch_db:redner.view_email_template_form
 msgid "Substitutions"
-msgstr "Substitutions"
+msgstr ""
+
+#. module: redner
+#: model_terms:ir.ui.view,arch_db:redner.redner_template_view_form
+msgid "Synchronize with Redner"
+msgstr ""
 
 #. module: redner
 #: model_terms:ir.ui.view,arch_db:redner.redner_template_view_form
@@ -383,6 +397,13 @@
 msgstr "Modèle Libreoffice"
 
 #. module: redner
+#. odoo-python
+#: code:addons/redner/models/redner_template.py:0
+#, python-format
+msgid "Template has already been synced with redner !"
+msgstr "Le modèle a déjà été synchronisé avec redner !"
+
+#. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_template__body
 msgid "Template remote Id"
 msgstr ""
@@ -393,6 +414,11 @@
 msgstr "Nom de la variable du modèle"
 
 #. module: redner
+#: model_terms:ir.ui.view,arch_db:redner.redner_template_view_form
+msgid "Template will be synchronized with redner. Continue?"
+msgstr "Template will be synchronisez with redner. Continue?"
+
+#. module: redner
 #: model:ir.ui.menu,name:redner.redner_template_menu
 msgid "Templates"
 msgstr "Modèles"
@@ -416,6 +442,10 @@
 "browser PDF means the report will be rendered using Wkhtmltopdf and "
 "downloaded by the user."
 msgstr ""
+"Le type du rapport qui sera rendu, chacun ayant sa propre méthode de rendu. "
+"HTML signifie que le rapport sera ouvert directement dans votre navigateur. "
+"PDF signifie que le rapport sera rendu à l'aide de Wkhtmltopdf et "
+"téléchargé par l'utilisateur."
 
 #. module: redner
 #: model:ir.model.fields,help:redner.field_redner_template__name
@@ -430,5 +460,10 @@
 msgstr "Erreur redner : %r"
 
 #. module: redner
+#: model:ir.model.fields,field_description:redner.field_redner_template__use_redner
+msgid "Use redner"
+msgstr "Utilise redner"
+
+#. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_substitution__keyword
 msgid "Variable"
@@ -433,6 +468,6 @@
 #: model:ir.model.fields,field_description:redner.field_redner_substitution__keyword
 msgid "Variable"
-msgstr "Variable"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_template__detected_keywords
@@ -436,4 +471,5 @@
 
 #. module: redner
 #: model:ir.model.fields,field_description:redner.field_redner_template__detected_keywords
+#: model_terms:ir.ui.view,arch_db:redner.redner_template_view_form
 msgid "Variables"
@@ -439,5 +475,5 @@
 msgid "Variables"
-msgstr "Variables"
+msgstr ""
 
 #. module: redner
 #. odoo-python
@@ -461,7 +497,7 @@
 #. module: redner
 #: model:ir.model.fields.selection,name:redner.selection__ir_actions_report__report_type__redner
 msgid "redner"
-msgstr "redner"
+msgstr ""
 
 #. module: redner
 #: model:ir.model.fields,help:redner.field_redner_template__is_mjml
@@ -471,4 +507,4 @@
 #. module: redner
 #: model:ir.model.fields,help:redner.field_redner_template__language
 msgid "templating language"
-msgstr "langage du modèle"
+msgstr "langage du modèle"
\ No newline at end of file
diff --git a/models/ir_actions_report.py b/models/ir_actions_report.py
index efe989234664650a92eb957b135088821213267e_bW9kZWxzL2lyX2FjdGlvbnNfcmVwb3J0LnB5..44c22574708d0fd9a5189f02a3f5d595d558b2db_bW9kZWxzL2lyX2FjdGlvbnNfcmVwb3J0LnB5 100644
--- a/models/ir_actions_report.py
+++ b/models/ir_actions_report.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 #    Redner Odoo module
-#    Copyright © 2016 XCG Consulting <https://xcg-consulting.fr>
+#    Copyright © 2016, 2024 XCG Consulting <https://xcg-consulting.fr>
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
@@ -247,3 +247,22 @@
                 attachment_vals["name"],
             )
         return buffer
+
+    @api.model
+    def _redner_demo_invoice_having_report(self, substitutions_list):
+        # Check if account module is installed
+        check_account_module = self.env["ir.module.module"].search(
+            [("name", "=", "account")]
+        )
+        if check_account_module and check_account_module.state == "installed":
+            self.create(
+                {
+                    "name": "Facture_Avoir",
+                    "model": "account.move",
+                    "report_type": "redner",
+                    "report_name": "account_move",
+                    "redner_filetype": "pdf",
+                    "redner_tmpl_id": self.env.ref("redner.redner_invoice_having").id,
+                    "substitution_ids": [(6, 0, substitutions_list)],
+                }
+            )
diff --git a/models/redner_template.py b/models/redner_template.py
index efe989234664650a92eb957b135088821213267e_bW9kZWxzL3JlZG5lcl90ZW1wbGF0ZS5weQ==..44c22574708d0fd9a5189f02a3f5d595d558b2db_bW9kZWxzL3JlZG5lcl90ZW1wbGF0ZS5weQ== 100644
--- a/models/redner_template.py
+++ b/models/redner_template.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 #    Redner Odoo module
-#    Copyright © 2016 XCG Consulting <https://xcg-consulting.fr>
+#    Copyright © 2016, 2024 XCG Consulting <https://xcg-consulting.fr>
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
@@ -37,6 +37,13 @@
     _name = "redner.template"
     _description = "Redner Template"
 
+    use_redner = fields.Boolean(
+        string="Use redner",
+        default=True,
+        help="Indicate whether this redner template is synchronized with redner",
+        readonly=True,
+    )
+
     name = fields.Char(
         string="Name",
         required=True,
@@ -128,6 +135,8 @@
                 else (vals.get("body"), "text")
             )
 
+            if not vals.get("use_redner"):
+                return super().create(vals_list)
             # We depend on the API for consistency here
             # So raised error should not result with a created template
             vals["redner_id"] = self.redner.templates.account_template_add(
@@ -196,6 +205,37 @@
 
         return super().unlink()
 
+    def synchronize_template_with_redner(self):
+        """This method is used to join a template without
+        redner with redner"""
+        self.ensure_one()
+
+        if not self.use_redner:
+            produces, language = self.language.split("|")
+            # Check if template data is of type bytes before decoding
+            if isinstance(self.template_data or "", bytes):
+                template_data = self.template_data.decode()  # utf-8 by default
+            body, body_format = (
+                (template_data or "", "base64")
+                if language == "od+mustache"
+                else (self.body, "text")
+            )
+
+            # We depend on the API for consistency here
+            # So raised error should not result with a created template
+
+            redner_id = self.redner.templates.account_template_add(
+                language=language,
+                body=body,
+                name=self.name,
+                produces=produces,
+                body_format=body_format,
+                version=fields.Datetime.to_string(fields.Datetime.now()),
+            )
+            self.write({"redner_id": redner_id, "use_redner": True})
+        else:
+            raise ValidationError(_("Template has already been synced with redner !"))
+
     def copy(self, default=None):
         self.ensure_one()
         default = dict(default or {}, name=_("%s (copy)") % self.name)
diff --git a/tests/common.py b/tests/common.py
index efe989234664650a92eb957b135088821213267e_dGVzdHMvY29tbW9uLnB5..44c22574708d0fd9a5189f02a3f5d595d558b2db_dGVzdHMvY29tbW9uLnB5 100644
--- a/tests/common.py
+++ b/tests/common.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 #    Redner Odoo module
-#    Copyright © 2023 XCG Consulting <https://xcg-consulting.fr>
+#    Copyright © 2023, 2024 XCG Consulting <https://xcg-consulting.fr>
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
@@ -43,3 +43,19 @@
         values = self.env["redner.template"].default_get(["language"])
         values.update({"name": "test-name", "body": "hello {{ login }}"})
         return self.env["redner.template"].create(values)
+
+    @mock.patch("requests.sessions.Session.post")
+    def _create_redner_template_without_redner(self, requests_post_mock):
+        """Create a redner template without redner used in tests."""
+        requests_post_mock.return_value = mock.Mock(
+            status_code=200, json=lambda: {"name": "test-redner-id"}
+        )
+        values = self.env["redner.template"].default_get(["language"])
+        values.update(
+            {
+                "name": "test-name_without-redner",
+                "use_redner": False,
+                "body": "hello {{ login }}",
+            }
+        )
+        return self.env["redner.template"].create(values)
diff --git a/tests/test_redner_template.py b/tests/test_redner_template.py
index efe989234664650a92eb957b135088821213267e_dGVzdHMvdGVzdF9yZWRuZXJfdGVtcGxhdGUucHk=..44c22574708d0fd9a5189f02a3f5d595d558b2db_dGVzdHMvdGVzdF9yZWRuZXJfdGVtcGxhdGUucHk= 100644
--- a/tests/test_redner_template.py
+++ b/tests/test_redner_template.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 #    Redner Odoo module
-#    Copyright © 2023 XCG Consulting <https://xcg-consulting.fr>
+#    Copyright © 2023, 2024 XCG Consulting <https://xcg-consulting.fr>
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
@@ -24,6 +24,8 @@
 
 from .common import TestCommon
 
+from odoo.exceptions import ValidationError
+
 TEMPLATE_URL = "https://test-redner-url/api/v1/template/test-account"
 
 
@@ -82,3 +84,31 @@
             timeout=20,
         )
         requests_put_mock.reset_mock()
+
+    def test_synchronization_with_redner(self):
+        redner_template = self._create_redner_template_without_redner()
+
+        self.assertFalse(
+            redner_template.use_redner, "Value of 'Use redner' has changed"
+        )
+        self.assertFalse(
+            redner_template.redner_id, "Template is created without redner"
+        )
+
+        self.assetFalse(
+            redner_template.detected_keywords, "Template is created without keywords"
+        )
+
+        redner_template.synchronize_template_with_redner()  # Join a template with redner
+
+        self.assertTrue(
+            redner_template.use_redner, "Value of 'Use redner' equals True after join"
+        )
+        self.assertTrue(redner_template.redner_id, "Template is updated with redner")
+
+        self.assetFalse(
+            redner_template.detected_keywords, "Template is updated with keywords"
+        )
+
+        with self.assertRaises(ValidationError), self.cr.savepoint():
+            redner_template.synchronize_template_with_redner()  # Template has already been synced with redner
diff --git a/views/redner_template.xml b/views/redner_template.xml
index efe989234664650a92eb957b135088821213267e_dmlld3MvcmVkbmVyX3RlbXBsYXRlLnhtbA==..44c22574708d0fd9a5189f02a3f5d595d558b2db_dmlld3MvcmVkbmVyX3RlbXBsYXRlLnhtbA== 100644
--- a/views/redner_template.xml
+++ b/views/redner_template.xml
@@ -94,6 +94,16 @@
                             <group>
                                 <field name="locale_id" />
                             </group>
+                            <group class="d-flex align-items-start">
+                                <field name="use_redner" />
+                                <button
+                                    attrs="{'invisible': [('use_redner', '=', True)]}"
+                                    confirm="Template will be synchronized with redner. Continue?"
+                                    name="synchronize_template_with_redner"
+                                    string="Synchronize with Redner"
+                                    type="object"
+                                />
+                            </group>
                         </page>
                     </notebook>
                 </sheet>