From b0942aac757885e9f6801e2519ef0d94b53a71af Mon Sep 17 00:00:00 2001
From: thibaud <thibaud@le-filament.com>
Date: Wed, 20 Mar 2024 18:23:39 +0100
Subject: [PATCH] [IMP] Added product generation after contract generation

---
 __manifest__.py               |  2 +-
 models/__init__.py            |  7 +++-
 models/financial_contract.py  | 17 ----------
 models/financial_deal_tool.py | 63 +++++++++++++++++++++++++++++++++++
 models/loan_manager_loan.py   |  2 +-
 views/financial_contract.xml  |  7 +---
 6 files changed, 72 insertions(+), 26 deletions(-)
 create mode 100644 models/financial_deal_tool.py

diff --git a/__manifest__.py b/__manifest__.py
index 9256174..3f6ad0a 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -5,7 +5,7 @@
     "website": "https://le-filament.com",
     "version": "16.0.1.0.0",
     "license": "AGPL-3",
-    "depends": ["financial_deal_contract", "loan_manager"],
+    "depends": ["financial_deal_contract", "loan_manager", "financial_deal_flow"],
     "data": [
         "security/ir.model.access.csv",
         # datas
diff --git a/models/__init__.py b/models/__init__.py
index 4c846b7..8f24eed 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1 +1,6 @@
-from . import financial_manager, financial_contract, loan_manager_loan
+from . import (
+    financial_manager,
+    financial_contract,
+    loan_manager_loan,
+    financial_deal_tool,
+)
diff --git a/models/financial_contract.py b/models/financial_contract.py
index be72c73..5f765ea 100644
--- a/models/financial_contract.py
+++ b/models/financial_contract.py
@@ -76,23 +76,6 @@ class FinancialContract(models.Model):
     # ------------------------------------------------------
     # Actions
     # ------------------------------------------------------
-    def btn_init_product(self):
-        # "duration_or_count": 15,
-        # "bank_account": "FR15 984 5351 864",
-        creation_dict = {
-            "description": self.name,
-            "amount": self.deal_tool_id.amount,
-            "payment_date": datetime.now(),
-            "periodicity": "6",
-            "rate": 1.60,
-            "partner_id": self.deal_id.partner_id.id,
-            "contract_id": self.id,
-        }
-
-        # Create financial tool associated
-        financial_tool_record = self.env[self.deal_tool_model].create(creation_dict)
-        self.deal_tool_model_reference_id = financial_tool_record.id
-
     def btn_open_tool_form(self):
         return {
             "name": _("Financial tool"),
diff --git a/models/financial_deal_tool.py b/models/financial_deal_tool.py
new file mode 100644
index 0000000..43b1925
--- /dev/null
+++ b/models/financial_deal_tool.py
@@ -0,0 +1,63 @@
+# Copyright 2023- Le Filament (https://le-filament.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
+
+from odoo import models
+from datetime import datetime
+
+
+class TemplateModel(models.Model):
+    _inherit = "financial.deal.tool"
+
+    # ------------------------------------------------------
+    # Fields declaration
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # SQL Constraints
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Default methods
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Computed fields / Search Fields
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Onchange / Constraints
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # CRUD methods (ORM overrides)
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Actions
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Business methods
+    # ------------------------------------------------------
+    def generate_contract(self):
+        # FIXME A hérité de la méthode extraitre dans financial deal_contract
+        contract = super().generate_contract()
+        # Create associated tool
+
+        # "duration_or_count": 15,
+        # "bank_account": "FR15 984 5351 864",
+        creation_dict = {
+            "description": self.deal_id.description,
+            "amount": self.amount,
+            "payment_date": datetime.now(),
+            "periodicity": "6",
+            "rate": 1.60,
+            "partner_id": self.deal_id.partner_id.id,
+            "contract_id": contract.id,
+        }
+
+        # Create financial tool associated
+        financial_tool_record = self.env[contract.deal_tool_model].create(creation_dict)
+        contract.deal_tool_model_reference_id = financial_tool_record.id
+
+        return contract
diff --git a/models/loan_manager_loan.py b/models/loan_manager_loan.py
index b8578a9..0a5b367 100644
--- a/models/loan_manager_loan.py
+++ b/models/loan_manager_loan.py
@@ -1,7 +1,7 @@
 # Copyright 2023- Le Filament (https://le-filament.com)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 
-from odoo import models, fields
+from odoo import fields, models
 
 
 class Loan(models.Model):
diff --git a/views/financial_contract.xml b/views/financial_contract.xml
index e468dad..8b4f3b3 100644
--- a/views/financial_contract.xml
+++ b/views/financial_contract.xml
@@ -31,16 +31,11 @@
         <field name="arch" type="xml">
             <xpath expr="//field[@name='state']" position="after">
                 <field name="deal_tool_model_reference_id" invisible="1"/>
-                <button
-                    name="btn_init_product"
-                    type="object"
-                    icon="fa-share"
-                    attrs="{'invisible':[('deal_tool_model_reference_id','!=',0)]}"
-                />
                 <button
                     name="btn_open_tool_form"
                     type="object"
                     icon="fa-calculator"
+                    title="see tool"
                     attrs="{'invisible':[('deal_tool_model_reference_id','=',0)]}"
                 />
             </xpath>
-- 
GitLab