From 00d55162fae1cd4b80a61ddeca177c927e7bf1c7 Mon Sep 17 00:00:00 2001 From: daniquilez <dani.quilez@gmail.com> Date: Wed, 12 Mar 2025 11:09:18 +0100 Subject: [PATCH 1/4] =?UTF-8?q?[IMP]=20=E2=9C=A8=20Disable=20inter=20compa?= =?UTF-8?q?ny=20invoice=20auto=20validation=20on=20service=20invoicing=20i?= =?UTF-8?q?nstallation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- energy_communities_service_invoicing/__init__.py | 16 ++++++++++++++++ .../__manifest__.py | 1 + .../views/account_move_views.xml | 1 + 3 files changed, 18 insertions(+) diff --git a/energy_communities_service_invoicing/__init__.py b/energy_communities_service_invoicing/__init__.py index 79dbb9408..d750a11ad 100644 --- a/energy_communities_service_invoicing/__init__.py +++ b/energy_communities_service_invoicing/__init__.py @@ -1,3 +1,19 @@ from . import components from . import models from . import wizards + +import logging +from odoo import SUPERUSER_ID, api + +logger = logging.getLogger(__name__) + + +def post_setup_intercompany_invoicing_config(cr, registry): + logger.info("Running Inter company setup") + env = api.Environment(cr, SUPERUSER_ID, {}) + companies = env["res.company"].search([]) + for company in companies: + company.write({"invoice_auto_validation": False}) + logger.info( + "Inter company invoice auto validation disabled by default on all companies." + ) diff --git a/energy_communities_service_invoicing/__manifest__.py b/energy_communities_service_invoicing/__manifest__.py index aaa9dbcc5..6cb1f667b 100644 --- a/energy_communities_service_invoicing/__manifest__.py +++ b/energy_communities_service_invoicing/__manifest__.py @@ -45,6 +45,7 @@ "wizards/service_invoicing_action_create.xml", "views/menus.xml", ], + "post_init_hook": "post_setup_intercompany_invoicing_config", # only loaded in demonstration mode "demo": [], } diff --git a/energy_communities_service_invoicing/views/account_move_views.xml b/energy_communities_service_invoicing/views/account_move_views.xml index 6b2f82309..0cfbea8f7 100644 --- a/energy_communities_service_invoicing/views/account_move_views.xml +++ b/energy_communities_service_invoicing/views/account_move_views.xml @@ -14,3 +14,4 @@ </field> </record> </odoo> + -- GitLab From c88f490d31ed9b5b5c2f4360ea654e1a2e2ff8cd Mon Sep 17 00:00:00 2001 From: daniquilez <dani.quilez@gmail.com> Date: Wed, 12 Mar 2025 11:26:43 +0100 Subject: [PATCH 2/4] =?UTF-8?q?[REF]=20=E2=99=BB=EF=B8=8F=20Modify=20ref?= =?UTF-8?q?=5Finvoice=5Fid=20from=20system=20auto=5Finvoice=5Fid=20on=20ac?= =?UTF-8?q?count=5Fmove?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/account_move.py | 41 +++++++------------ .../models/contract.py | 4 +- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/energy_communities_service_invoicing/models/account_move.py b/energy_communities_service_invoicing/models/account_move.py index fdfc3e71e..17adda591 100644 --- a/energy_communities_service_invoicing/models/account_move.py +++ b/energy_communities_service_invoicing/models/account_move.py @@ -7,20 +7,14 @@ class AccountMove(models.Model): _name = "account.move" _inherit = ["account.move", "pack.type.mixin"] - ref_invoice_id = fields.Many2one( - comodel_name="account.move", - compute="_compute_ref_invoice_id_related_contract_id_is_contract", - compute_sudo=True, - store=False, - ) related_contract_id = fields.Many2one( comodel_name="contract.contract", - compute="_compute_ref_invoice_id_related_contract_id_is_contract", + compute="_compute_related_contract_id_is_contract", compute_sudo=True, store=False, ) is_contract = fields.Boolean( - compute="_compute_ref_invoice_id_related_contract_id_is_contract", + compute="_compute_related_contract_id_is_contract", compute_sudo=True, store=True, ) @@ -31,24 +25,17 @@ class AccountMove(models.Model): domain="[('hierarchy_level','=','community')]", ) - @api.depends("invoice_line_ids", "ref") - def _compute_ref_invoice_id_related_contract_id_is_contract(self): + @api.depends("invoice_line_ids", "auto_invoice_id") + def _compute_related_contract_id_is_contract(self): for record in self: - record.ref_invoice_id = False record.related_contract_id = False record.is_contract = False - rel_inv = False - if record.ref: - rel_inv = ( - self.env["account.move"] - .sudo() - .search([("name", "=", record.ref)], limit=1) - ) - if rel_inv: - record.ref_invoice_id = rel_inv.id - record.is_contract = rel_inv.is_contract - if rel_inv.related_contract_id: - record.related_contract_id = rel_inv.related_contract_id.id + if record.auto_invoice_id: + record.is_contract = record.auto_invoice_id.is_contract + if record.auto_invoice_id.related_contract_id: + record.related_contract_id = ( + record.auto_invoice_id.related_contract_id.id + ) else: if record.invoice_line_ids: first_move_line = record.invoice_line_ids[0] @@ -57,13 +44,13 @@ class AccountMove(models.Model): record.related_contract_id = rel_contract.id record.is_contract = True - def custom_compute_pack_type(self): - self._set_custom_pack_type_on_invoice() - - @api.depends("ref", "invoice_line_ids") + @api.depends("invoice_line_ids", "auto_invoice_id") def _compute_pack_type(self): super()._compute_pack_type() + def custom_compute_pack_type(self): + self._set_custom_pack_type_on_invoice() + # define configuration intercompany journal def _prepare_invoice_data(self, dest_company): inv_data = super()._prepare_invoice_data(dest_company) diff --git a/energy_communities_service_invoicing/models/contract.py b/energy_communities_service_invoicing/models/contract.py index 78a27de59..bea8d71d3 100644 --- a/energy_communities_service_invoicing/models/contract.py +++ b/energy_communities_service_invoicing/models/contract.py @@ -274,8 +274,8 @@ class ContractContract(models.Model): ] ) for invoice in all_received_invoices: - if invoice.sudo().ref_invoice_id: - if invoice.sudo().ref_invoice_id.id in issued_invoices: + if invoice.sudo().auto_invoice_id: + if invoice.sudo().auto_invoice_id.id in issued_invoices: received_invoices.append(invoice.id) return received_invoices -- GitLab From 9668a148d919da994e804c94b75d453c1b0fbabb Mon Sep 17 00:00:00 2001 From: daniquilez <dani.quilez@gmail.com> Date: Wed, 12 Mar 2025 11:43:00 +0100 Subject: [PATCH 3/4] =?UTF-8?q?[IMP]=20=E2=9C=A8=20Propagate=20lin=20name?= =?UTF-8?q?=20from=20origin=20to=20inter=20company=20invoice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/account_move.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/energy_communities_service_invoicing/models/account_move.py b/energy_communities_service_invoicing/models/account_move.py index 17adda591..8f59f28e7 100644 --- a/energy_communities_service_invoicing/models/account_move.py +++ b/energy_communities_service_invoicing/models/account_move.py @@ -51,7 +51,8 @@ class AccountMove(models.Model): def custom_compute_pack_type(self): self._set_custom_pack_type_on_invoice() - # define configuration intercompany journal + # Inter Company: + # define configuration journal def _prepare_invoice_data(self, dest_company): inv_data = super()._prepare_invoice_data(dest_company) if ( @@ -62,3 +63,15 @@ class AccountMove(models.Model): "journal_id" ] = dest_company.sudo().service_invoicing_purchase_journal_id.id return inv_data + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + # Inter Company: + # propagate name from origin invoice + @api.model + def _prepare_account_move_line(self, dest_move, dest_company): + vals = super()._prepare_account_move_line(dest_move, dest_company) + vals["name"] = self.name + return vals -- GitLab From 3e2cbd73c8f7a27efcd0e347682e286c2d8e3dee Mon Sep 17 00:00:00 2001 From: daniquilez <dani.quilez@gmail.com> Date: Wed, 12 Mar 2025 15:29:34 +0100 Subject: [PATCH 4/4] =?UTF-8?q?[FIX]=20=F0=9F=90=9B=20Bugfixing=20service?= =?UTF-8?q?=20invoicing=20views?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/account_move.py | 3 +- .../views/account_move_views.xml | 17 +++- .../views/menus.xml | 4 +- .../views/service_invoicing_views.xml | 78 +++++++++---------- .../models/selfconsumption.py | 6 +- .../views/contract_views.xml | 12 +-- 6 files changed, 65 insertions(+), 55 deletions(-) diff --git a/energy_communities_service_invoicing/models/account_move.py b/energy_communities_service_invoicing/models/account_move.py index 8f59f28e7..2fff56b99 100644 --- a/energy_communities_service_invoicing/models/account_move.py +++ b/energy_communities_service_invoicing/models/account_move.py @@ -11,7 +11,7 @@ class AccountMove(models.Model): comodel_name="contract.contract", compute="_compute_related_contract_id_is_contract", compute_sudo=True, - store=False, + store=True, ) is_contract = fields.Boolean( compute="_compute_related_contract_id_is_contract", @@ -23,6 +23,7 @@ class AccountMove(models.Model): string="Related community", related="related_contract_id.community_company_id", domain="[('hierarchy_level','=','community')]", + store=True, ) @api.depends("invoice_line_ids", "auto_invoice_id") diff --git a/energy_communities_service_invoicing/views/account_move_views.xml b/energy_communities_service_invoicing/views/account_move_views.xml index 0cfbea8f7..c50ce50f3 100644 --- a/energy_communities_service_invoicing/views/account_move_views.xml +++ b/energy_communities_service_invoicing/views/account_move_views.xml @@ -1,4 +1,19 @@ <odoo> + <record id="account_move_search" model="ir.ui.view"> + <field name="name">account.move search view (in service invoicing)</field> + <field name="model">account.move</field> + <field name="inherit_id" ref="account.view_account_invoice_filter" /> + <field name="arch" type="xml"> + <filter name="groupy_by_partner" position="after"> + <filter + string="Related community" + name="group_by_related_community" + domain="[]" + context="{'group_by':'related_community_company_id'}" + /> + </filter> + </field> + </record> <record id="account_move_form" model="ir.ui.view"> <field name="name">account.move.form.inherit</field> <field name="model">account.move</field> @@ -9,7 +24,7 @@ <field name="is_contract" invisible="True" /> <field name="invoice_origin" attrs="{'invisible': [('is_contract','=',False)]}" /> <field name="related_contract_id" attrs="{'invisible': [('is_contract','=',False)]}" /> - <field name="related_community_company_id" attrs="{'invisible': [('pack_type' ,'=', 'platform_pack')]}" /> + <field name="related_community_company_id" attrs="{'invisible': [('pack_type' ,'!=', 'platform_pack')]}" /> </xpath> </field> </record> diff --git a/energy_communities_service_invoicing/views/menus.xml b/energy_communities_service_invoicing/views/menus.xml index 442ea07a9..644a24b10 100644 --- a/energy_communities_service_invoicing/views/menus.xml +++ b/energy_communities_service_invoicing/views/menus.xml @@ -32,14 +32,14 @@ <menuitem name="Service invoices issued" id="view_service_invoices_issued_menu" - action="view_service_invoices_issued_window" + action="view_service_invoices_issued_act_window" groups="energy_communities.role_platform_admin_res_groups" sequence="500" /> <menuitem name="Service invoices received" id="view_service_invoices_received_menu" - action="view_service_invoices_received_window" + action="view_service_invoices_received_act_window" groups="energy_communities.role_platform_admin_res_groups,energy_communities.role_coord_admin_res_groups,energy_communities.role_coord_worker_res_groups" sequence="500" /> diff --git a/energy_communities_service_invoicing/views/service_invoicing_views.xml b/energy_communities_service_invoicing/views/service_invoicing_views.xml index 4629ec8c5..ab73851f9 100644 --- a/energy_communities_service_invoicing/views/service_invoicing_views.xml +++ b/energy_communities_service_invoicing/views/service_invoicing_views.xml @@ -9,6 +9,22 @@ <field name="domain">[('community_company_id','!=',False)]</field> <field name="context">{"search_default_not_finished":1,"search_default_paused":1}</field> </record> + <record + id="action_view_service_invoicing_tree_platform_manager" + model="ir.actions.act_window.view" + > + <field name="view_mode">tree</field> + <field name="view_id" ref="view_service_invoicing_tree"/> + <field name="act_window_id" ref="view_service_invoicing_window_platform_manager"/> + </record> + <record + id="action_view_contract_contract_customer_form_platform_manager" + model="ir.actions.act_window.view" + > + <field name="view_mode">form</field> + <field name="view_id" ref="view_contract_contract_customer_form_platform_admin"/> + <field name="act_window_id" ref="view_service_invoicing_window_platform_manager"/> + </record> <record id="view_service_invoicing_window_coord_admin" @@ -20,6 +36,22 @@ <field name="domain">[('community_company_id','!=',False)]</field> <field name="context">{"search_default_not_finished":1,"search_default_paused":1}</field> </record> + <record + id="action_view_service_invoicing_tree_coord_admin" + model="ir.actions.act_window.view" + > + <field name="view_mode">tree</field> + <field name="view_id" ref="view_service_invoicing_tree"/> + <field name="act_window_id" ref="view_service_invoicing_window_coord_admin"/> + </record> + <record + id="action_view_contract_contract_customer_form_coord_admin" + model="ir.actions.act_window.view" + > + <field name="view_mode">form</field> + <field name="view_id" ref="view_contract_contract_customer_form_coord_admin"/> + <field name="act_window_id" ref="view_service_invoicing_window_coord_admin"/> + </record> <record id="view_service_packs_window" @@ -52,23 +84,25 @@ </record> <record - id="view_service_invoices_issued_window" + id="view_service_invoices_issued_act_window" model="ir.actions.act_window" > <field name="name">Service invoices (issued)</field> <field name="res_model">account.move</field> <field name="view_mode">tree,form</field> <field name="domain" eval="[('move_type', 'in', ['out_invoice', 'out_refund']), ('pack_type', '=', 'platform_pack')]"/> + <field name="context">{"default_move_type": "out_invoice","search_default_group_by_related_community":1}</field> </record> <record - id="view_service_invoices_received_window" + id="view_service_invoices_received_act_window" model="ir.actions.act_window" > <field name="name">Service invoices (received)</field> <field name="res_model">account.move</field> <field name="view_mode">tree,form</field> <field name="domain" eval="[('move_type', 'in', ['in_invoice', 'in_refund']), ('pack_type', '=', 'platform_pack')]"/> + <field name="context">{"default_move_type": "in_invoice","search_default_group_by_related_community":1}</field> </record> <record @@ -81,44 +115,4 @@ <field name="domain">[('service_invoicing_action','!=','none')]</field> </record> - <record - id="action_view_service_invoicing_tree_platform_manager" - model="ir.actions.act_window.view" - > - <field name="sequence" eval="1"/> - <field name="view_mode">tree</field> - <field name="view_id" ref="view_service_invoicing_tree"/> - <field name="act_window_id" ref="view_service_invoicing_window_platform_manager"/> - </record> - - <record - id="action_view_service_invoicing_tree_coord_admin" - model="ir.actions.act_window.view" - > - <field name="sequence" eval="1"/> - <field name="view_mode">tree</field> - <field name="view_id" ref="view_service_invoicing_tree"/> - <field name="act_window_id" ref="view_service_invoicing_window_coord_admin"/> - </record> - - <record - id="action_view_contract_contract_customer_form_platform_manager" - model="ir.actions.act_window.view" - > - <field name="sequence" eval="2"/> - <field name="view_mode">form</field> - <field name="view_id" ref="view_contract_contract_customer_form_platform_admin"/> - <field name="act_window_id" ref="view_service_invoicing_window_platform_manager"/> - </record> - - <record - id="action_view_contract_contract_customer_form_coord_admin" - model="ir.actions.act_window.view" - > - <field name="sequence" eval="1"/> - <field name="view_mode">form</field> - <field name="view_id" ref="view_contract_contract_customer_form_coord_admin"/> - <field name="act_window_id" ref="view_service_invoicing_window_coord_admin"/> - </record> - </odoo> diff --git a/energy_selfconsumption/models/selfconsumption.py b/energy_selfconsumption/models/selfconsumption.py index 18db4ee90..e101d4f85 100644 --- a/energy_selfconsumption/models/selfconsumption.py +++ b/energy_selfconsumption/models/selfconsumption.py @@ -210,11 +210,11 @@ class Selfconsumption(models.Model): "type": "ir.actions.act_window", "name": "Contracts", "views": [ - [self.env.ref("energy_selfconsumption.contract_tree_view").id, "tree"], - [ + (self.env.ref("energy_selfconsumption.contract_tree_view").id, "tree"), + ( self.env.ref("contract.contract_contract_customer_form_view").id, "form", - ], + ), ], "res_model": "contract.contract", "domain": [("project_id", "=", self.id)], diff --git a/energy_selfconsumption/views/contract_views.xml b/energy_selfconsumption/views/contract_views.xml index a49c0c818..b98b19ce1 100644 --- a/energy_selfconsumption/views/contract_views.xml +++ b/energy_selfconsumption/views/contract_views.xml @@ -24,12 +24,12 @@ <field name="arch" type="xml"> <xpath expr="/search" position="inside"> <group expand="1" string="Group By"> - <filter - string="Next Period Date Start" - name="filter_next_period_date_end" - domain="[]" - context="{'group_by':'next_period_date_end'}" - /> + <filter + string="Next Period Date Start" + name="filter_next_period_date_end" + domain="[]" + context="{'group_by':'next_period_date_end'}" + /> </group> </xpath> </field> -- GitLab