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