diff --git a/models/acc_operation.py b/models/acc_operation.py
index 15b81f31b4995b8839bd10662d99ddab20720343..1fc24aac4acca453e14d3fd0c3cc2567bcf6caa5 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -172,6 +172,158 @@ class AccOperation(models.Model):
 
         return power_tab_by_prod
 
+    def process_create_account(
+        self, acc_injection_id, acc_delivery_id, date_start, date_end, power_total
+    ):
+        account_list = []
+        Account = self.env["acc.account"]
+
+        acc_account = Account.create(
+            {
+                "acc_operation_id": self.id,
+                "acc_injection_id": acc_injection_id.id,
+                "acc_delivery_id": acc_delivery_id.id,
+                "power_cons": power_total,
+                "start_date": date_start,
+                "end_date": date_end,
+            }
+        )
+
+        interval_ids = self.env["acc.sale.price"].search(
+            [
+                ("acc_operation_id", "=", self.id),
+                ("acc_injection_id", "=", acc_injection_id.id),
+                ("acc_delivery_id", "=", acc_delivery_id.id),
+                ("start_date", "<=", date_start),
+                ("end_date", "=", False),
+            ]
+        )
+        if not interval_ids:
+            price_ids = self.env["acc.sale.price"].search(
+                [
+                    ("acc_operation_id", "=", self.id),
+                    ("acc_injection_id", "=", acc_injection_id.id),
+                    ("acc_delivery_id", "=", acc_delivery_id.id),
+                    "|",
+                    ("end_date", ">=", date_start),
+                    ("end_date", "=", False),
+                ]
+            )
+            price2_ids = self.env["acc.sale.price"].search(
+                [
+                    ("acc_operation_id", "=", self.id),
+                    ("acc_injection_id", "=", acc_injection_id.id),
+                    ("acc_delivery_id", "=", acc_delivery_id.id),
+                    ("start_date", "<=", date_end),
+                ]
+            )
+            interval_ids = price_ids & price2_ids
+
+        # Création des lignes de facturation
+        # pour chaque période de tarifs trouvée
+        for interval in interval_ids:
+            if date_start > interval.start_date:
+                date_interval_start = date_start
+            else:
+                date_interval_start = interval.start_date
+
+            if interval.end_date:
+                if date_end < interval.end_date:
+                    date_interval_end = date_end
+                else:
+                    date_interval_end = interval.end_date
+            else:
+                date_interval_end = date_end
+
+            power_total = self.calc_power_by_cons_by_prod(
+                acc_injection_id,
+                acc_delivery_id,
+                date_interval_start,
+                date_interval_end,
+            )
+
+            AccountLine = self.env["acc.account.line"]
+
+            # Création de la ligne de facture
+            # par intervalle de période de prix
+            AccountLine.create(
+                {
+                    "quantity": power_total,
+                    "price_unit": interval.price,
+                    "acc_account_id": acc_account.id,
+                    "start_date": date_interval_start,
+                    "end_date": date_interval_end,
+                    "description": "Période du "
+                    + str(date_interval_start)
+                    + " au "
+                    + str(date_interval_end),
+                }
+            )
+            account_list.append(acc_account)
+
+        tax_interval_ids = self.env["acc.account.tax.tcfe"].search(
+            [
+                ("start_date", "<=", date_start),
+                ("end_date", "=", False),
+            ]
+        )
+        if not tax_interval_ids:
+            tax_ids = self.env["acc.account.tax.tcfe"].search(
+                [
+                    ("end_date", ">=", date_start),
+                ]
+            )
+            tax2_ids = self.env["acc.account.tax.tcfe"].search(
+                [
+                    ("start_date", "<=", date_end),
+                ]
+            )
+            tax_interval_ids = tax_ids & tax2_ids
+
+        # Création des lignes de facturation
+        # pour chaque période de taxes trouvée
+        for interval in tax_interval_ids:
+            if date_start > interval.start_date:
+                date_interval_start = date_start
+            else:
+                date_interval_start = interval.start_date
+
+            if interval.end_date:
+                if date_end < interval.end_date:
+                    date_interval_end = date_end
+                else:
+                    date_interval_end = interval.end_date
+            else:
+                date_interval_end = date_end
+
+            power_total = self.calc_power_by_cons_by_prod(
+                acc_injection_id,
+                acc_delivery_id,
+                date_interval_start,
+                date_interval_end,
+            )
+
+            AccountLine = self.env["acc.account.line"]
+
+            # Création de la ligne de facture
+            # par intervalle de période de prix
+            AccountLine.create(
+                {
+                    "quantity": power_total,
+                    "is_tax": True,
+                    "price_unit": interval.price,
+                    "acc_account_id": acc_account.id,
+                    "start_date": date_interval_start,
+                    "end_date": date_interval_end,
+                    "description": "TCFE - Période du "
+                    + str(date_interval_start)
+                    + " au "
+                    + str(date_interval_end),
+                }
+            )
+            account_list.append(acc_account)
+        return True
+
     def create_account(self, date_month, account_periodicity):
         """
         Fonction permettant de générer les factures à une date donné.
@@ -181,8 +333,6 @@ class AccOperation(models.Model):
                 6 pour semestre, 12 pour année)
         :return:
         """
-        account_list = []
-
         date_end = date_utils.end_of(date_month, "month")
         if account_periodicity == "1":
             date_start = date_utils.start_of(date_month, "month")
@@ -198,157 +348,37 @@ class AccOperation(models.Model):
                         acc_injection_id, acc_delivery_id, date_start, date_end
                     )
                     if power_total > 0:
-                        Account = self.env["acc.account"]
-
-                        acc_account = Account.create(
-                            {
-                                "acc_operation_id": self.id,
-                                "acc_injection_id": acc_injection_id.id,
-                                "acc_delivery_id": acc_delivery_id.id,
-                                "power_cons": power_total,
-                                "start_date": date_start,
-                                "end_date": date_end,
-                            }
-                        )
-
-                        interval_ids = self.env["acc.sale.price"].search(
-                            [
-                                ("acc_operation_id", "=", self.id),
-                                ("acc_injection_id", "=", acc_injection_id.id),
-                                ("acc_delivery_id", "=", acc_delivery_id.id),
-                                ("start_date", "<=", date_start),
-                                ("end_date", "=", False),
-                            ]
+                        # Création du lot
+                        batch_name = (
+                            "Factures du "
+                            + str(date_start)
+                            + " au "
+                            + str(date_end)
+                            + " - Opération :"
+                            + str(self.name)
+                            + " - Prod :"
+                            + str(acc_injection_id.name)
+                            + " - Conso :"
+                            + str(acc_delivery_id.name)
                         )
-                        if not interval_ids:
-                            price_ids = self.env["acc.sale.price"].search(
-                                [
-                                    ("acc_operation_id", "=", self.id),
-                                    ("acc_injection_id", "=", acc_injection_id.id),
-                                    ("acc_delivery_id", "=", acc_delivery_id.id),
-                                    "|",
-                                    ("end_date", ">=", date_start),
-                                    ("end_date", "=", False),
-                                ]
-                            )
-                            price2_ids = self.env["acc.sale.price"].search(
-                                [
-                                    ("acc_operation_id", "=", self.id),
-                                    ("acc_injection_id", "=", acc_injection_id.id),
-                                    ("acc_delivery_id", "=", acc_delivery_id.id),
-                                    ("start_date", "<=", date_end),
-                                ]
-                            )
-                            interval_ids = price_ids & price2_ids
-
-                        # Création des lignes de facturation
-                        # pour chaque période de tarifs trouvée
-                        for interval in interval_ids:
-                            if date_start > interval.start_date:
-                                date_interval_start = date_start
-                            else:
-                                date_interval_start = interval.start_date
-
-                            if interval.end_date:
-                                if date_end < interval.end_date:
-                                    date_interval_end = date_end
-                                else:
-                                    date_interval_end = interval.end_date
-                            else:
-                                date_interval_end = date_end
-
-                            power_total = self.calc_power_by_cons_by_prod(
-                                acc_injection_id,
-                                acc_delivery_id,
-                                date_interval_start,
-                                date_interval_end,
-                            )
-
-                            AccountLine = self.env["acc.account.line"]
-
-                            # Création de la ligne de facture
-                            # par intervalle de période de prix
-                            AccountLine.create(
-                                {
-                                    "quantity": power_total,
-                                    "price_unit": interval.price,
-                                    "acc_account_id": acc_account.id,
-                                    "start_date": date_interval_start,
-                                    "end_date": date_interval_end,
-                                    "description": "Période du "
-                                    + str(date_interval_start)
-                                    + " au "
-                                    + str(date_interval_end),
-                                }
-                            )
-                            account_list.append(acc_account)
-
-                        tax_interval_ids = self.env["acc.account.tax.tcfe"].search(
-                            [
-                                ("start_date", "<=", date_start),
-                                ("end_date", "=", False),
-                            ]
+                        batch = self.env["queue.job.batch"].get_new_batch(batch_name)
+
+                        self.with_context(
+                            job_batch=batch
+                        ).with_delay().process_create_account(
+                            acc_injection_id,
+                            acc_delivery_id,
+                            date_start,
+                            date_end,
+                            power_total,
                         )
-                        if not tax_interval_ids:
-                            tax_ids = self.env["acc.account.tax.tcfe"].search(
-                                [
-                                    ("end_date", ">=", date_start),
-                                ]
-                            )
-                            tax2_ids = self.env["acc.account.tax.tcfe"].search(
-                                [
-                                    ("start_date", "<=", date_end),
-                                ]
-                            )
-                            tax_interval_ids = tax_ids & tax2_ids
-
-                        # Création des lignes de facturation
-                        # pour chaque période de taxes trouvée
-                        for interval in tax_interval_ids:
-                            if date_start > interval.start_date:
-                                date_interval_start = date_start
-                            else:
-                                date_interval_start = interval.start_date
-
-                            if interval.end_date:
-                                if date_end < interval.end_date:
-                                    date_interval_end = date_end
-                                else:
-                                    date_interval_end = interval.end_date
-                            else:
-                                date_interval_end = date_end
-
-                            power_total = self.calc_power_by_cons_by_prod(
-                                acc_injection_id,
-                                acc_delivery_id,
-                                date_interval_start,
-                                date_interval_end,
-                            )
-
-                            AccountLine = self.env["acc.account.line"]
-
-                            # Création de la ligne de facture
-                            # par intervalle de période de prix
-                            AccountLine.create(
-                                {
-                                    "quantity": power_total,
-                                    "is_tax": True,
-                                    "price_unit": interval.price,
-                                    "acc_account_id": acc_account.id,
-                                    "start_date": date_interval_start,
-                                    "end_date": date_interval_end,
-                                    "description": "TCFE - Période du "
-                                    + str(date_interval_start)
-                                    + " au "
-                                    + str(date_interval_end),
-                                }
-                            )
-                            account_list.append(acc_account)
+                        # lancement de la file d'attente
+                        batch.enqueue()
 
         action = self.env["ir.actions.actions"]._for_xml_id(
             "acc_account.action_acc_account"
         )
-        action["domain"] = [("id", "in", account_list)]
+        action["domain"] = [("acc_operation_id", "=", self.id)]
         return action
 
     def calc_power_by_cons_by_prod(