diff --git a/__manifest__.py b/__manifest__.py index 7e17d4052ca0b65d8e5f92a8723960b58f4e3682..dca11bcd475bc3ede1de33be29d1a1e30d51b867 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -6,19 +6,18 @@ "version": "16.0.1.0.0", "license": "AGPL-3", "depends": [ + "financial_deal_flow", "financial_partner", ], "data": [ - "security/ir.model.access.csv", + # security + # "security/ir.model.access.csv", # datas # views "views/financial_contract.xml", - "views/financial_condition.xml", - "views/financial_condition_contract.xml", "views/res_partner.xml", # views menu "views/menus.xml", - "data/sequence.xml" # wizard ], "assets": { diff --git a/data/sequence.xml b/data/sequence.xml deleted file mode 100644 index c43605ea936a3095088b199eea396b9669a2481c..0000000000000000000000000000000000000000 --- a/data/sequence.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<odoo> - <data noupdate="1"> - <!-- Demandes sequences --> - <record model="ir.sequence" id="financial_contract_sequence"> - <field name="name">Contract number</field> - <field name="code">financial_contract_seq</field> - <field eval="1" name="number_next"/> - <field eval="1" name="number_increment"/> - <field eval="False" name="use_date_range"/> - <field eval="False" name="company_id"/> - <field name="prefix">FC</field> - <field name="padding">5</field> - </record> - - </data> -</odoo> diff --git a/models/__init__.py b/models/__init__.py index 6f8db4ae0657ff750ada01297c503e750a940946..e4d34bb4da9ddd771434491978569b2fbac467c7 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,4 +1,4 @@ from . import financial_contract +from . import financial_deal +from . import res_company from . import res_partner -from . import financial_condition -from . import financial_condition_contract diff --git a/models/financial_condition_contract.py b/models/financial_condition_contract.py deleted file mode 100644 index b0b0f2b38b7e0db67bb58369d53570291c66135a..0000000000000000000000000000000000000000 --- a/models/financial_condition_contract.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2023- Le Filament (https://le-filament.com) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) - -from odoo import fields, models - - -class FinancialConditionContract(models.Model): - _name = "financial.condition.contract" - _description = "Link between a condition precedent and a contract" - _rec_name = "condition_id" - # ------------------------------------------------------ - # Fields declaration - # ------------------------------------------------------ - name = fields.Char() - condition_id = fields.Many2one("financial.condition") - contract_id = fields.Many2one("financial.contract") - raised = fields.Boolean() - milestone = fields.Date() - comment = fields.Text() - - # ------------------------------------------------------ - # SQL Constraints - # ------------------------------------------------------ - - # ------------------------------------------------------ - # Default methods - # ------------------------------------------------------ - - # ------------------------------------------------------ - # Computed fields / Search Fields - # ------------------------------------------------------ - - # ------------------------------------------------------ - # Onchange / Constraints - # ------------------------------------------------------ - - # ------------------------------------------------------ - # CRUD methods (ORM overrides) - # ------------------------------------------------------ - - # ------------------------------------------------------ - # Actions - # ------------------------------------------------------ - - # ------------------------------------------------------ - # Business methods - # ------------------------------------------------------ diff --git a/models/financial_contract.py b/models/financial_contract.py index e0e30e779f0c93c82a3a75cb6fc8a956b38d7a28..cd398df363ab4ce895caee2409bd0d73ffd2cbac 100644 --- a/models/financial_contract.py +++ b/models/financial_contract.py @@ -1,55 +1,11 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import _, fields, models, api -from odoo.exceptions import UserError +from odoo import models class FinancialContract(models.Model): - _name = "financial.contract" - _inherit = ["mail.thread", "mail.activity.mixin"] - _description = "Financial Contract" - _order = "create_date" - _check_company_auto = True - _rec_names_search = ["name", "partner_id.name", "partner_id.member_number"] - - name = fields.Char("Numéro", readonly=True) - partner_id = fields.Many2one( - comodel_name="res.partner", - string="Coopérative", - domain="[('is_cooperative', '=', True)]", - tracking=1, - required=True, - index=True, - ) - state = fields.Selection( - [ - ("init", "Initialisation"), - ("running", "En cours"), - ("done", "Terminé"), - ("cancel", "Annulé"), - ], - string="Statut", - tracking=1, - default="init", - ) - active = fields.Boolean( - default=True, - tracking=1, - ) - description = fields.Text("Description du projet") - company_id = fields.Many2one( - comodel_name="res.company", required=True, default=lambda self: self.env.company - ) - currency_id = fields.Many2one( - comodel_name="res.currency", related="company_id.currency_id" - ) - condition_contract_ids = fields.One2many( - "financial.condition.contract", - string="Conditions", - inverse_name="contract_id", - domain="[('contract_id','=','active_id')]", - ) + _inherit = "financial.contract" # ------------------------------------------------------ # Computed fields / Search Fields @@ -58,24 +14,3 @@ class FinancialContract(models.Model): # ------------------------------------------------------ # CRUD (Override ORM) # ------------------------------------------------------ - def unlink(self): - """ - Restrict contract deletion depending on state - """ - for contract in self: - if contract.state != "init": - raise UserError( - _("Seuls les deals à l'état Projet peuvent être supprimés") - ) - return super().unlink() - - @api.model - def create(self, values): - # On récupère le no de demande - name = self.env["ir.sequence"].next_by_code("financial_contract_seq") - values["name"] = name - - # On crée le record - res = super().create(values) - - return res diff --git a/models/financial_deal.py b/models/financial_deal.py new file mode 100644 index 0000000000000000000000000000000000000000..6511bcd2945bbed0ee9abbe380b7c71ec2c1ede5 --- /dev/null +++ b/models/financial_deal.py @@ -0,0 +1,34 @@ +# © 2019 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, models +from odoo.exceptions import UserError + + +class FinancialDeal(models.Model): + _inherit = "financial.deal" + + # ------------------------------------------------------ + # Computed fields / Search Fields + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Inherit parent + # ------------------------------------------------------ + def action_stage_validated(self): + res = super().action_stage_validated() + + for contract in self.coop_contract_ids: + if not contract.company_id.contract_sequence_id: + raise UserError( + _( + f"Aucune séquence configurée pour les contrats de la société {contract.company_id.name}" + ) + ) + if not contract.number: + contract.number = contract.company_id.contract_sequence_id.next_by_id() + return res + + # ------------------------------------------------------ + # CRUD (Override ORM) + # ------------------------------------------------------ diff --git a/models/financial_condition.py b/models/res_company.py similarity index 62% rename from models/financial_condition.py rename to models/res_company.py index 02b68cfc66136d64bc6623f1ff3149ff20b67843..cc206802dc1b719910116eac21e8c44335e5f46f 100644 --- a/models/financial_condition.py +++ b/models/res_company.py @@ -1,18 +1,18 @@ # Copyright 2023- Le Filament (https://le-filament.com) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) -from odoo import fields, models +from odoo import api, fields, models -class FinancialCondition(models.Model): - _name = "financial.condition" - _description = "Configuration of a condition precedent" +class ResCompany(models.Model): + _inherit = "res.company" + + contract_sequence_id = fields.Many2one("ir.sequence") # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ - name = fields.Char() - category = fields.Selection([("a", "Cat. A"), ("b", "Cat B")]) + # ------------------------------------------------------ # SQL Constraints # ------------------------------------------------------ @@ -32,6 +32,25 @@ class FinancialCondition(models.Model): # ------------------------------------------------------ # CRUD methods (ORM overrides) # ------------------------------------------------------ + @api.model + def create(self, values): + # Crée une séquence dédiée à la société + res = super().create(values) + + res.contract_sequence_id = self.env["ir.sequence"].create( + { + "name": f"Contrats - {res.name}", + "company_id": res.id, + "number_next": 1, + "number_increment": 1, + "use_date_range": True, + "prefix": "C%(year)s%(month)s", + "padding": 4, + "implementation": "no_gap", + "code": f"financial.contract.company_{res.id}", + } + ) + return res # ------------------------------------------------------ # Actions diff --git a/models/res_partner.py b/models/res_partner.py index 433e42026d4f9950ac6584069dfc076247dc8429..181200505cf92a7f04dbc631837c6c2953631224 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -45,6 +45,16 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Actions # ------------------------------------------------------ + def action_view_contract(self): + self.ensure_one() + return { + "type": "ir.actions.act_window", + "name": "Contrats", + "res_model": "financial.contract", + "view_mode": "tree,form", + "domain": [("deal_type", "=", "external"), ("partner_id", "=", self.id)], + "flags": {"mode": "readonly"}, + } # ------------------------------------------------------ # Business methods diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 74d757b6c41a50d9249ea1789fbe117215bbf1b7..97dd8b917b8a258799a3ebf0095f13ff73d7cf68 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,4 +1 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_financial_contract,access_financial_contract,model_financial_contract,base.group_user,1,1,1,1 -access_financial_condition,access_financial_condition,model_financial_condition,base.group_user,1,1,1,1 -access_financial_condition_contract,access_financial_condition_contract,model_financial_condition_contract,base.group_user,1,1,1,1 diff --git a/security/security_rules.xml b/security/security_rules.xml deleted file mode 100644 index 762300405cc11066d569e78555e16154d6ad2580..0000000000000000000000000000000000000000 --- a/security/security_rules.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" ?> -<!-- Copyright 2022 Le Filament - License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> -<odoo> - <!-- - Category - --> -<!-- <record id="module_cgscop_category" model="ir.module.category">--> -<!-- <field name="name">CG Scop</field>--> -<!-- <field name="sequence">10</field>--> -<!-- </record>--> -<!-- <record id="module_cgscop_administration_category" model="ir.module.category">--> -<!-- <field name="name">Administration CG Scop</field>--> -<!-- <field name="parent_id" ref="cgscop_partner.module_cgscop_category" />--> -<!-- </record>--> - - <!-- - Group user - --> -<!-- <record id="group_edit_all_ur" model="res.groups">--> -<!-- <field name="name">Modification des coopératives de toutes les UR</field>--> -<!-- <field name="category_id" ref="cgscop_partner.module_cgscop_category" />--> -<!-- </record>--> - - <!-- - Group rules - --> -<!-- <record id="res_partner_rule_ur" model="ir.rule">--> -<!-- <field name="name">Modification des partenaires de mon UR</field>--> -<!-- <field name="model_id" ref="base.model_res_partner" />--> -<!-- <field--> -<!-- name="domain_force"--> -<!-- >['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field>--> -<!-- <field name="groups" eval="[(6, 0, [ref('base.group_user')])]" />--> -<!-- <field name="perm_read" eval="False" />--> -<!-- <field name="perm_write" eval="True" />--> -<!-- <field name="perm_create" eval="True" />--> -<!-- <field name="perm_unlink" eval="False" />--> -<!-- </record>--> - -</odoo> diff --git a/static/description/icon.png b/static/description/icon.png index d96ec15a443e96f0ace3fb5543d3a419c87c49ea..a04374ee2970f59b609e8af5a93b9f5be586ece4 100644 Binary files a/static/description/icon.png and b/static/description/icon.png differ diff --git a/views/financial_condition.xml b/views/financial_condition.xml deleted file mode 100644 index 4366c07f282f8774351ca1fd946f409f100919cd..0000000000000000000000000000000000000000 --- a/views/financial_condition.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<odoo> - <data> - - <record id="financial_condition_form_view" model="ir.ui.view"> - <field name="name">financial_condition.form - </field> - <field name="model">financial.condition</field> - <field name="arch" type="xml"> - <form string="Conditions"> - <sheet> - <div class="oe_title"> - <label for="name" /> - <h1> - <field name="name" placeholder="Name" /> - </h1> - </div> - <group> - <field name="category" /> - </group> - </sheet> - </form> - </field> - </record> - - <record id="financial_condition_tree_view" model="ir.ui.view"> - <field name="name">financial_condition.tree - </field> - <field name="model">financial.condition</field> - <field name="arch" type="xml"> - <tree string="Conditions"> - <field name="name" /> - </tree> - </field> - </record> - - - <record - id="financial_condition_act_window" - model="ir.actions.act_window" - > - <field name="name">Conditions</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">financial.condition</field> - <field name="view_mode">tree,form</field> - </record> - </data> -</odoo> diff --git a/views/financial_condition_contract.xml b/views/financial_condition_contract.xml deleted file mode 100644 index acab917bc04f1179cfa9b2382d3808bf8b808c85..0000000000000000000000000000000000000000 --- a/views/financial_condition_contract.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<odoo> - <data> - - <record id="financial_condition_contract_view_form" model="ir.ui.view"> - <field name="name">financial_condition_contract_view_form - </field> - <field name="model">financial.condition.contract</field> - <field name="arch" type="xml"> - <form string="financial_condition_contract_form"> - <sheet> - <group> - <field name="condition_id" /> - <field name="raised" /> - <field name="milestone" /> - <field name="comment" /> - </group> - </sheet> - </form> - </field> - </record> - - <record id="financial_conditioncontract_view_tree" model="ir.ui.view"> - <field name="name">financial_condition_contract_view_tree - </field> - <field name="model">financial.condition.contract</field> - <field name="arch" type="xml"> - <tree string="financial_condition_contract_tree"> - <field name="name" /> - <field name="raised" /> - <field name="milestone" /> - <field name="comment" /> - </tree> - </field> - </record> - - <record - id="financial_condition_contract_action" - model="ir.actions.act_window" - > - <field name="name">financial_condition_contract</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">financial.condition.contract</field> - <field name="view_mode">tree,form</field> - </record> - </data> -</odoo> diff --git a/views/financial_contract.xml b/views/financial_contract.xml index 93753761ba4d345a8ec7b4ca197811e4330567c8..9657bf9de4f0ecab76ccc9c6f068b8127f07152a 100644 --- a/views/financial_contract.xml +++ b/views/financial_contract.xml @@ -2,114 +2,348 @@ <!-- Copyright 2024 Le Filament License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> - <!-- Form --> - <record model="ir.ui.view" id="financial_deal_contract_view"> - <field name="name">financial.contract.form</field> + <!-- Kanban --> +<!-- <record model="ir.ui.view" id="financial_contract_kanban_view">--> +<!-- <field name="name">financial.deal.contract</field>--> +<!-- <field name="model">financial.contract</field>--> +<!-- <field name="arch" type="xml">--> +<!-- <kanban--> +<!-- default_group_by="state"--> +<!-- class="o_kanban_small_column o_opportunity_kanban"--> +<!-- archivable="false"--> +<!-- >--> +<!-- <field name="state" />--> +<!-- <field name="name" />--> +<!-- <field name="partner_id" />--> +<!-- <field name="active" />--> +<!-- <templates>--> +<!-- <t t-name="kanban-box">--> +<!-- <div class="oe_kanban_global_click">--> +<!-- <!– TODO: Ajouter css pour bandeau archivage –>--> +<!-- <!– <div class="ribbon ribbon-top-right" attrs="{'invisible': [('active', '=', True)]}">–>--> +<!-- <!– <span class="bg-danger">Archivé</span>–>--> +<!-- <!– </div>–>--> +<!-- <div class="oe_kanban_content">--> +<!-- <div class="o_kanban_record_title">--> +<!-- <strong>--> +<!-- <field name="name" />--> +<!-- - --> +<!-- <field name="partner_id" />--> +<!-- </strong>--> +<!-- </div>--> +<!-- <div class="o_kanban_record_subtitle">--> +<!-- <!– <t t-if="record.total_amount.raw_value">–>--> +<!-- <!– <field–>--> +<!-- <!– name="total_amount"–>--> +<!-- <!– widget="monetary"–>--> +<!-- <!– options="{'currency_field': 'currency_id'}"/>–>--> +<!-- <!– </t>–>--> +<!-- </div>--> +<!-- <div class="oe_clear" />--> +<!-- </div>--> +<!-- </div>--> +<!-- </t>--> +<!-- </templates>--> +<!-- </kanban>--> +<!-- </field>--> +<!-- </record>--> + + <!-- Tree Internal --> + <record id="financial_contract_all_tree_view" model="ir.ui.view"> + <field name="name">financial.contract.all.tree</field> <field name="model">financial.contract</field> <field name="arch" type="xml"> - <form string="Contract"> - <header> - <field name="state" widget="statusbar" /> - </header> - <sheet> - <field name="active" invisible="1" /> - <widget - name="web_ribbon" - title="Archivé" - bg_color="bg-danger" - attrs="{'invisible': [('active', '=', True)]}" - /> - <h1> - <field name="name" /> - </h1> - <group> - <group string="Coopérative"> - <field - name="partner_id" - options="{'no_create': 1, 'no_edit': 1}" - /> - </group> - </group> - <notebook> - <page string="Conditions precedent"> - <field name="condition_contract_ids" /> - </page> - </notebook> - </sheet> - <div class="oe_chatter"> - <field name="message_follower_ids" /> - <field name="activity_ids" /> - <field name="message_ids" /> - </div> - </form> + <tree> + <field name="company_id" /> + <field name="type" /> + <field name="product_id" /> + <field name="amount" string="Montant" /> + <button + name="show_amortization" + type="object" + icon="fa-calculator" + class="btn-outline-primary" + title="Tableau d'amortissement" + attrs="{'invisible': [('type', '!=', 'loan')]}" + /> + <field name="currency_id" invisible="1" /> + </tree> </field> </record> - <!-- Tree --> - <record model="ir.ui.view" id="financial_contract_view"> - <field name="name">financial.contract.tree</field> + <!-- Tree Loan --> + <record id="financial_contract_loan_tree_view" model="ir.ui.view"> + <field name="name">financial.contract.loan.tree</field> <field name="model">financial.contract</field> <field name="arch" type="xml"> <tree> <field name="currency_id" invisible="1" /> - <field name="name" /> + <field name="type" invisible="1" /> <field name="partner_id" /> + <field name="product_id" /> <field name="state" /> - <!-- <field name="total_amount" />--> + <field name="expiration_date" /> + <field name="amount" string="Montant" /> + <field name="rate" /> + <field name="duration" /> + <field name="periodicity" /> + <field name="delay_type" /> + <field name="delay_duration" /> + <field name="payment_date" /> + <field name="first_term_date" /> + <field name="company_id" /> + <button + name="show_amortization" + type="object" + icon="fa-calculator" + class="btn-outline-primary" + title="Tableau d'amortissement" + attrs="{'invisible': [('type', '!=', 'loan')]}" + /> </tree> </field> </record> - <!-- Kanban --> - <record model="ir.ui.view" id="financial_contract_kanban_view"> - <field name="name">financial.deal.contract</field> + <!-- Tree Invest --> + <record id="financial_contract_invest_tree_view" model="ir.ui.view"> + <field name="name">financial.contract.invest.tree</field> <field name="model">financial.contract</field> <field name="arch" type="xml"> - <kanban - default_group_by="state" - class="o_kanban_small_column o_opportunity_kanban" - archivable="false" - > + <tree> + <field name="currency_id" invisible="1" /> + <field name="type" invisible="1" /> + <field name="partner_id" /> + <field name="product_id" /> <field name="state" /> - <field name="name" /> + <field name="expiration_date" /> + <field name="amount" string="Montant" /> + <field name="securities_number" /> + <field name="nominal" /> + <field name="fixed_rate" /> + <field name="performance_indicator" /> + <field name="performance_month" /> + <field name="issue_date" /> + <field name="payment_date" /> + <field name="company_id" /> + <button + name="show_amortization" + type="object" + icon="fa-calculator" + class="btn-outline-primary" + title="Tableau d'amortissement" + attrs="{'invisible': [('type', '!=', 'loan')]}" + /> + </tree> + </field> + </record> + + <!-- Tree Guarantee --> + <record id="financial_contract_guarantee_tree_view" model="ir.ui.view"> + <field name="name">financial.contract.guarantee.tree</field> + <field name="model">financial.contract</field> + <field name="arch" type="xml"> + <tree> + <field name="currency_id" invisible="1" /> + <field name="type" invisible="1" /> + <field name="partner_id" /> + <field name="product_id" /> + <field name="state" /> + <field name="expiration_date" /> + <field name="amount" string="Montant" /> + <field name="external_loan_id" /> + <field name="fmg_amount" /> + <field name="social_share_amount" /> + <field name="guarantee_rate" /> + <field name="is_counter_guarantee" /> + <field name="loan_balance" /> + <field name="guarantee_balance" /> + <field name="final_risk_guarantee" /> + <field name="payment_date" /> + <field name="company_id" /> + <button + name="show_amortization" + type="object" + icon="fa-calculator" + class="btn-outline-primary" + title="Tableau d'amortissement" + attrs="{'invisible': [('type', '!=', 'loan')]}" + /> + </tree> + </field> + </record> + <!-- Tree Partner --> + <record id="financial_contract_partner_tree_view" model="ir.ui.view"> + <field name="name">financial.contract.partner.tree</field> + <field name="model">financial.contract</field> + <field name="arch" type="xml"> + <tree> <field name="partner_id" /> - <field name="active" /> - <templates> - <t t-name="kanban-box"> - <div class="oe_kanban_global_click"> - <!-- TODO: Ajouter css pour bandeau archivage --> - <!-- <div class="ribbon ribbon-top-right" attrs="{'invisible': [('active', '=', True)]}">--> - <!-- <span class="bg-danger">Archivé</span>--> - <!-- </div>--> - <div class="oe_kanban_content"> - <div class="o_kanban_record_title"> - <strong> - <field name="name" /> - - - <field name="partner_id" /> - </strong> - </div> - <div class="o_kanban_record_subtitle"> - <!-- <t t-if="record.total_amount.raw_value">--> - <!-- <field--> - <!-- name="total_amount"--> - <!-- widget="monetary"--> - <!-- options="{'currency_field': 'currency_id'}"/>--> - <!-- </t>--> - </div> - <div class="oe_clear" /> - </div> - </div> - </t> - </templates> - </kanban> + <field name="deal_partner_id" /> + <field name="type" /> + <field name="amount" string="Montant" /> + <field name="currency_id" invisible="1" /> + <button + name="show_amortization" + type="object" + icon="fa-calculator" + class="btn-outline-primary" + title="Tableau d'amortissement" + attrs="{'invisible': [('type', '!=', 'loan')]}" + /> + </tree> + </field> + </record> + + <!-- Search --> + <record id="financial_contract_search_view" model="ir.ui.view"> + <field name="name">financial.contract.search</field> + <field name="model">financial.contract</field> + <field name="arch" type="xml"> + <search string="Contracts"> + <field name="name" /> + <!-- Filter --> + <filter name="expiration_date" date="expiration_date" /> + <filter + string="Prêt" + name="loan" + domain="[('type', '=', 'loan')]" + /> + <filter + string="Investissement" + name="invest" + domain="[('type', '=', 'invest')]" + /> + <filter + string="Garantie" + name="guarantee" + domain="[('type', '=', 'guarantee')]" + /> + <separator /> + <filter + string="Proposition" + name="proposal" + domain="[('state', '=', 'proposal')]" + /> + <filter + string="Contrat signé" + name="contract" + domain="[('state', '=', 'contract')]" + /> + <filter + string="Terminé" + name="done" + domain="[('state', '=', 'done')]" + /> + <filter + string="Annulé" + name="cancel" + domain="[('state', '=', 'cancel')]" + /> + <separator /> + <filter + string="Archivé" + name="inactive" + domain="[('active', '=', False)]" + /> + <!-- Group by --> + <group expand="0" name="group_by" string="Group By"> + <filter + name="group_partner_id" + string="Coopérative" + context="{'group_by' : 'partner_id'}" + /> + <filter + name="group_state" + string="Statut" + context="{'group_by': 'state'}" + /> + <filter + string="Type d'outil" + name="group_type" + context="{'group_by':'type'}" + /> + </group> + </search> </field> </record> - <!-- Action --> - <record model="ir.actions.act_window" id="financial_contract_act_window"> - <field name="name">Contrats</field> + <!-- Actions --> + <record model="ir.actions.act_window" id="financial_contract_all_action"> + <field name="name">Tous les contrats</field> + <field name="res_model">financial.contract</field> + <field name="view_mode">tree,form</field> +<!-- <field name="domain">[('deal_type', '=', 'internal'), ('state', 'in', ['proposal', 'contract', 'done', 'cancel'])]</field>--> + <field name="domain">[('deal_type', '=', 'internal')]</field> + </record> + <record model="ir.actions.act_window" id="financial_contract_loan_action"> + <field name="name">Prêts</field> + <field name="res_model">financial.contract</field> + <field name="view_mode">tree,form</field> + <field + name="view_ids" + eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('financial_contract_loan_tree_view')}), + ]" + /> + <field + name="domain" + >[('deal_type', '=', 'internal'), ('type', '=', 'loan'), ('state', 'in', ['proposal', 'contract', 'done', 'cancel'])]</field> + </record> + <record model="ir.actions.act_window" id="financial_contract_invest_action"> + <field name="name">Titres participatifs</field> + <field name="res_model">financial.contract</field> + <field name="view_mode">tree,form</field> + <field + name="view_ids" + eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('financial_contract_invest_tree_view')}), + ]" + /> + <field + name="domain" + >[('deal_type', '=', 'internal'), ('type', '=', 'invest'), ('state', 'in', ['proposal', 'contract', 'done', 'cancel'])]</field> + </record> + <record + model="ir.actions.act_window" + id="financial_contract_guarantee_action" + > + <field name="name">Guaranties</field> + <field name="res_model">financial.contract</field> + <field name="view_mode">tree,form</field> + <field + name="view_ids" + eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('financial_contract_guarantee_tree_view')}), + ]" + /> + <field + name="domain" + >[('deal_type', '=', 'internal'), ('type', '=', 'guarantee'), ('state', 'in', ['proposal', 'contract', 'done', 'cancel'])]</field> + </record> + <record + model="ir.actions.act_window" + id="financial_contract_guarantee_action" + > + <field name="name">Garanties</field> + <field name="res_model">financial.contract</field> + <field name="view_mode">tree,form</field> + <field + name="domain" + >[('deal_type', '=', 'internal'), ('type', '=', 'guarantee'), ('state', 'in', ['proposal', 'contract', 'done', 'cancel'])]</field> + </record> + <record + model="ir.actions.act_window" + id="financial_contract_external_action" + > + <field name="name">Contrats partenaires</field> <field name="res_model">financial.contract</field> - <field name="view_mode">kanban,tree,form</field> + <field name="view_mode">tree,form</field> + <field + name="view_ids" + eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('financial_contract_partner_tree_view')}), + ]" + /> + <field name="domain">[('deal_type', '=', 'external')]</field> </record> </odoo> diff --git a/views/menus.xml b/views/menus.xml index ccc8e91a9b2c54d30c88a69647b527933b967c1d..54c4fd78310ef0d4ce77d97e34c1572df8e6c2c9 100644 --- a/views/menus.xml +++ b/views/menus.xml @@ -10,38 +10,46 @@ <!-- Menu --> <menuitem - id="menu_financial_contract" - name="Contrats" + id="menu_financial_contract_all" + name="Tous les contrats" parent="financial_contract_menu_root" - action="financial_contract_act_window" + action="financial_contract_all_action" sequence="10" /> + <menuitem + id="menu_financial_contract_loan" + name="Prêts participatifs" + parent="financial_contract_menu_root" + action="financial_contract_loan_action" + sequence="20" + /> + <menuitem + id="menu_financial_contract_invest" + name="Titres participatifs" + parent="financial_contract_menu_root" + action="financial_contract_invest_action" + sequence="30" + /> + <menuitem + id="menu_financial_contract_guarantee" + name="Garanties" + parent="financial_contract_menu_root" + action="financial_contract_guarantee_action" + sequence="40" + /> + <menuitem + id="menu_financial_contract_external" + parent="financial_contract_menu_root" + action="financial_contract_external_action" + sequence="50" + /> + <!-- Configuration --> <menuitem id="menu_financial_contract_configuration" name="Configuration" parent="financial_contract_menu_root" - sequence="10" + sequence="100" /> - <menuitem - id="menu_financial_condition" - name="Conditions" - parent="menu_financial_contract_configuration" - action="financial_condition_act_window" - sequence="10" - /> - <!-- <menuitem--> - <!-- id="menu_financial_deal_config"--> - <!-- name="Configuration"--> - <!-- parent="financial_deal_menu_root"--> - <!-- sequence="100"--> - <!-- />--> - <!-- <menuitem--> - <!-- id="menu_financial_deal"--> - <!-- name="Partenaires financiers"--> - <!-- parent="menu_financial_deal_config"--> - <!-- action="financial_deal_partner_act_window"--> - <!-- sequence="10"--> - <!-- />--> </odoo> diff --git a/views/res_partner.xml b/views/res_partner.xml index d29e109b8992a1bc9d84486fd24643585bf6c7ba..f5e7d7756321ea442304790e717284c481009da5 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -10,11 +10,11 @@ <field name="arch" type="xml"> <xpath expr="//div[@name='button_box']" position="inside"> <button - name="%(financial_contract_act_window)d" + name="action_view_contract" class="oe_stat_button" icon="fa-file-text-o" attrs="{'invisible': [('financial_contract_count', '=', 0)]}" - type="action" + type="object" > <field name="financial_contract_count"