From ac899779715a4fb4b83623efd9263c6cef2ae376 Mon Sep 17 00:00:00 2001
From: Remi <remi@le-filament.com>
Date: Mon, 1 Jul 2024 10:18:50 +0200
Subject: [PATCH] [FIX] bank statement creation

---
 wizard/ebics_statement_rop_import_wizard.py | 73 ++++++++-------------
 1 file changed, 26 insertions(+), 47 deletions(-)

diff --git a/wizard/ebics_statement_rop_import_wizard.py b/wizard/ebics_statement_rop_import_wizard.py
index 3a2b9dc..550b769 100644
--- a/wizard/ebics_statement_rop_import_wizard.py
+++ b/wizard/ebics_statement_rop_import_wizard.py
@@ -48,11 +48,28 @@ class EbicsStatementRopImport(models.TransientModel):
             <hr/>
         """
         ebics_mvt_file_id = ebics_wizard_act.get("context").get("ebics_file_ids")
-        ebics_mvt_file = self.env["ebics.file"].search(
-            [("id", "in", ebics_mvt_file_id)]
-        )
+        ebics_mvt_file = self.env["ebics.file"].browse(ebics_mvt_file_id)
         if ebics_mvt_file:
-            ebics_mvt_file.ensure_one()
+            # Process EBICS MVT (= create bank statement)
+            ebics_mvt_file.process()
+            bank_statement = ebics_mvt_file.bank_statement_ids
+            bank_statement.ensure_one()
+            self.log += f"""
+                <strong><u>Import des mouvements enrichis<u></strong><br/>
+                Référence : {bank_statement.name}
+                 - Journal : {bank_statement.journal_id.name}
+                 - Date : {bank_statement.date} <br/>
+                Solde Initial : {bank_statement.balance_start} €<br/>
+                Solde Final : {bank_statement.balance_end} €
+                <hr/>
+            """
+        else:
+            self.log += """
+                <strong><u>Import des mouvements enrichis<u></strong><br/>
+                Aucune donnée n'a pu être téléchargée,
+                 il n'y a donc pas de données à importer.
+                <hr/>
+            """
 
         # Download EBICS ROP
         ebics_rop_obj = self.env["ebics.xfer"].create(
@@ -71,50 +88,11 @@ class EbicsStatementRopImport(models.TransientModel):
             <hr/>
         """
         ebics_rop_file_id = ebics_rop_wizard_act.get("context").get("ebics_file_ids")
-        ebics_rop_file = self.env["ebics.file"].search(
-            [("id", "in", ebics_rop_file_id)]
-        )
-        if ebics_rop_file:
-            ebics_rop_file.ensure_one()
-
-        # Import EBICS mvt file
-        if ebics_mvt_file:
-            journal_id = self.env["account.journal"].search(
-                [("bank_account_id", "=", ebics_conf_id.bank_id.id)]
-            )
-            import_mvt = self.env["account.bank.statement.import"].create(
-                {
-                    "data_file": ebics_mvt_file.data,
-                    "filename": ebics_mvt_file.name,
-                }
-            )
-            import_mvt_act = import_mvt.with_context(
-                journal_id=journal_id.id
-            ).import_file()
-            bank_statement_id = import_mvt_act.get("context").get("statement_ids")
-            bank_statement = self.env["account.bank.statement"].browse(
-                bank_statement_id
-            )
-            bank_statement.ensure_one()
-            self.log += f"""
-                <strong><u>Import des mouvements enrichis<u></strong><br/>
-                Référence : {bank_statement.name}
-                 - Journal : {bank_statement.journal_id.name}
-                 - Date : {bank_statement.date} <br/>
-                Solde Initial : {bank_statement.balance_start} €<br/>
-                Solde Final : {bank_statement.balance_end} €
-                <hr/>
-            """
+        ebics_rop_file = self.env["ebics.file"].browse(ebics_rop_file_id)
 
-        else:
-            self.log += """
-                <strong><u>Import des mouvements enrichis<u></strong><br/>
-                Aucune donnée n'a pu être téléchargée,
-                 il n'y a donc pas de données à importer.
-                <hr/>
-            """
-
-        if ebics_rop_file and ebics_mvt_file:
+        if ebics_rop_file and bank_statement:
+            # Process EBICS ROP file
+            ebics_rop_file.ensure_one()
             # Suppression de lignes CORPORATE
             line_to_delete = bank_statement.line_ids.filtered(
                 lambda line: "CORPORATE CARD" in line.name
@@ -132,6 +110,7 @@ class EbicsStatementRopImport(models.TransientModel):
             for ropl in rop_lines:
                 ropl.update({"statement_id": bank_statement.id})
                 self.env["account.bank.statement.line"].create(ropl)
+            ebics_rop_file.state = "done"
 
             self.log += f"""
                         <strong><u>Création des lignes ROP<u></strong><br/>
-- 
GitLab