From 09ba4f67a2e25b087eda3bbc844261cb018c6c18 Mon Sep 17 00:00:00 2001 From: Emanuel Buzey <buzeyemanuel@gmail.com> Date: Fri, 8 Sep 2023 14:27:40 +0200 Subject: [PATCH] [ADD] electric_distribution: New Features and Model Creation In this commit, I have implemented the following developments in the 'electric_distribution' module: 1. Created a new model for electric distribution company. 2. Added a menu with corresponding form and tree views. These views are now only visible to users with admin or platform-level access rights in the Settings section. 3. Implemented the standard Odoo import functionality to allow users to import a list of electric distribution companies efficiently. 4. The new companies, are added without removing any existing data. This ensures data continuity and prevents data loss. 5. The form view of the model, include all the fields required by the CNMC list. --- energy_project/__manifest__.py | 2 + energy_project/models/__init__.py | 1 + energy_project/models/distributor.py | 35 ++++++++++++ energy_project/security/ir.model.access.csv | 1 + energy_project/views/distributor_views.xml | 55 +++++++++++++++++++ .../views/res_config_settings_extension.xml | 31 +++++++++++ 6 files changed, 125 insertions(+) create mode 100644 energy_project/models/distributor.py create mode 100644 energy_project/views/distributor_views.xml create mode 100644 energy_project/views/res_config_settings_extension.xml diff --git a/energy_project/__manifest__.py b/energy_project/__manifest__.py index 4e589badd..68321090c 100644 --- a/energy_project/__manifest__.py +++ b/energy_project/__manifest__.py @@ -19,5 +19,7 @@ "security/ir.model.access.csv", "security/ir_rule_data.xml", "views/inscription_views.xml", + "views/distributor_views.xml", + "views/res_config_settings_extension.xml", ], } diff --git a/energy_project/models/__init__.py b/energy_project/models/__init__.py index 87b396af6..28955bc97 100644 --- a/energy_project/models/__init__.py +++ b/energy_project/models/__init__.py @@ -1,3 +1,4 @@ from . import project from . import project_type from . import inscription +from . import distributor diff --git a/energy_project/models/distributor.py b/energy_project/models/distributor.py new file mode 100644 index 000000000..8ddbc6274 --- /dev/null +++ b/energy_project/models/distributor.py @@ -0,0 +1,35 @@ +from odoo import api, fields, models + + +class Distributor(models.Model): + _name = "energy_project.distributor" + _description = "Electrical Distributor" + + nif = fields.Char(string="NIF empresa") + order = fields.Char(string="Nº de orden") + name = fields.Char(string="Nombre empresa") + phone = fields.Char(string="Teléfono Att cliente gratuito") + portal = fields.Char(string="Portal de medidas") + + def _load_records(self, data_list, update=False): + new_data_list = [] + for data in data_list: + values = data["values"] + if values.get("order"): + xml_id = "energy_project.distributor_%s" % (values.get("order")) + new_data_list.append(dict(xml_id=xml_id, values=values, noupdate=True)) + else: + new_data_list.append(data) + return super()._load_records(new_data_list, update) + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + def button_open_distributors(self): + return { + "type": "ir.actions.act_window", + "res_model": "energy_project.distributor", + "view_mode": "tree,form", + "target": "current", + } diff --git a/energy_project/security/ir.model.access.csv b/energy_project/security/ir.model.access.csv index 7663beb59..c5f2c1faf 100644 --- a/energy_project/security/ir.model.access.csv +++ b/energy_project/security/ir.model.access.csv @@ -5,3 +5,4 @@ access_energy_project_inscription_user,energy_project.inscription.user,model_ene access_energy_project_project_admin,energy_project.project.admin,model_energy_project_project,group_admin,1,1,1,1 access_energy_project_project_type_admin,energy_project.project_type.admin,model_energy_project_project_type,group_admin,1,1,1,1 access_energy_project_inscription_admin,energy_project.inscription.admin,model_energy_project_inscription,group_admin,1,1,1,1 +access_energy_project_distributor_admin,energy_project.distributor.admin,model_energy_project_distributor,group_admin,1,1,1,1 diff --git a/energy_project/views/distributor_views.xml b/energy_project/views/distributor_views.xml new file mode 100644 index 000000000..5f4fec6e2 --- /dev/null +++ b/energy_project/views/distributor_views.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <data> + <record id="distributor_form_view" model="ir.ui.view"> + <field name="name">energy_project.distributor.form</field> + <field name="model">energy_project.distributor</field> + <field name="arch" type="xml"> + <form string="Distributor"> + <sheet> + <div class="oe_title"> + <label for="name" /> + <h1> + <field name="name" placeholder="Name" /> + </h1> + </div> + <group> + <group> + <field name="nif" /> + <field name="order" readonly="True" /> + <field name="phone" /> + <field name="portal" /> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="distributor_tree_view" model="ir.ui.view"> + <field name="name">energy_project.distributor.tree</field> + <field name="model">energy_project.distributor</field> + <field name="arch" type="xml"> + <tree string="Distributor" import="1" create="1"> + <field name="nif" /> + <field name="order" /> + <field name="name" /> + <field name="phone" /> + <field name="portal" /> + </tree> + </field> + </record> + + <record id="distributor_act_window" model="ir.actions.act_window"> + <field name="name">Distributor</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">energy_project.distributor</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + There is no examples click here to add new Distributor. + </p> + </field> + </record> + </data> +</odoo> diff --git a/energy_project/views/res_config_settings_extension.xml b/energy_project/views/res_config_settings_extension.xml new file mode 100644 index 000000000..20cf3892a --- /dev/null +++ b/energy_project/views/res_config_settings_extension.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <record id="view_res_config_settings_view_form" model="ir.ui.view"> + <field name="name">res.config.settings.view.form.inherit.distributor</field> + <field name="model">energy_project.distributor</field> + <field name="priority" eval="10" /> + <field name="inherit_id" ref="base.res_config_settings_view_form" /> + <field name="arch" type="xml"> + <xpath expr="//div[hasclass('settings')]" position="inside"> + <div + class="app_settings_block" + data-string="Distribuidoras Eléctricas" + string="Distribuidoras Eléctricas" + data-key="energy_project" + groups="sales_team.group_sale_manager" + > + <div + style="display: flex; justify-content: center; align-items: center; height: 100vh;" + > + <button + string="Ver Distribuidoras Eléctricas" + type="object" + class="btn-link btn-lg btn-primary" + name="button_open_distributors" + /> + </div> + </div> + </xpath> + </field> + </record> +</odoo> -- GitLab