From fdd57cac36a9e83dc7c4b1bbb80f1993b3b764c6 Mon Sep 17 00:00:00 2001 From: thibaud <thibaud@le-filament.com> Date: Mon, 18 Mar 2024 12:20:25 +0100 Subject: [PATCH] [IMP] Linked deal_flow_tool_type with corresponding tool (loan manager) --- __manifest__.py | 7 ++--- models/financial_contract.py | 57 +++++++++++++++++++++++++++++++++++- views/financial_contract.xml | 3 +- 3 files changed, 60 insertions(+), 7 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index 3116aa0..3bb7d09 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -1,14 +1,11 @@ { "name": "Financial - Deal Contract", "summary": "Du deal flow au contrat", - "author": "Le Filament", + "author": "Le Filament, Odoo Community Association (OCA)", "website": "https://le-filament.com", "version": "16.0.1.0.0", "license": "AGPL-3", - "depends": [ - "financial_deal_flow", - "financial_contract", - ], + "depends": ["financial_deal_flow", "financial_contract", "loan_manager"], "data": [ # "security/ir.model.access.csv", # datas diff --git a/models/financial_contract.py b/models/financial_contract.py index a44c6e5..94b6fd8 100644 --- a/models/financial_contract.py +++ b/models/financial_contract.py @@ -1,12 +1,16 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from datetime import datetime + +from ocb.odoo import api from odoo import fields, models +MAP_DICT = {"loan": "loan.manager.loan", "invest": "", "warranty": ""} + class FinancialContract(models.Model): _inherit = "financial.contract" - deal_tool_id = fields.Many2one( comodel_name="financial.deal.tool", string="Deal Tool", @@ -18,7 +22,58 @@ class FinancialContract(models.Model): related="deal_tool_id.deal_id", store=True, ) + deal_tool_model_id = fields.Many2one( + "ir.model", compute="_compute_deal_tool_model_id", store=True + ) + deal_tool_model_id_referenced_id = fields.Integer( + readonly=True, help="Id of the financial tool for this contract" + ) + # ------------------------------------------------------ + # SQL Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Default methods + # ------------------------------------------------------ # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ + @api.depends("deal_tool_id") + def _compute_deal_tool_model_id(self): + if self.deal_tool_id.type: + self.deal_tool_model_id = self.env["ir.model"].search( + [("model", "=", MAP_DICT[self.deal_tool_id.type])] + ) + + # ------------------------------------------------------ + # Onchange / Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # CRUD methods (ORM overrides) + # ------------------------------------------------------ + + @api.model + def create(self, values): + contract = super().create(values) + # Create financial tool associated + financial_tool_record = self.env[contract.deal_tool_model_id.model].create( + { + "description": contract.name, + "first_term_date": datetime.now, + "payment_date": datetime.now, + "amount": contract.deal_tool_id.amount, + "partner_id": contract.deal_id.partner_id, + } + ) + self.deal_tool_model_id_referenced_id = financial_tool_record.id + return contract + + # ------------------------------------------------------ + # Actions + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Business methods + # ------------------------------------------------------ diff --git a/views/financial_contract.xml b/views/financial_contract.xml index 2bc1b25..14195bc 100644 --- a/views/financial_contract.xml +++ b/views/financial_contract.xml @@ -12,7 +12,8 @@ /> <field name="arch" type="xml"> <xpath expr="//field[@name='partner_id']" position="before"> - <field name="deal_id" readonly="True" /> + <field name="deal_tool_id" /> + <field name="deal_tool_model_id" /> </xpath> </field> </record> -- GitLab