diff --git a/energy_communities_service_invoicing/__init__.py b/energy_communities_service_invoicing/__init__.py index 79dbb940820f659ef874e246f7172f453b83a326..d750a11adfefa6e17241da58dc95fcfc2fdd2225 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 aaa9dbcc53614b1b6b4331913258e84d61534dd2..6cb1f667b4d750ed34bfcd90fb4ad7116bea9f48 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/models/account_move.py b/energy_communities_service_invoicing/models/account_move.py index fdfc3e71ede0f761cc9def327a190d4240803963..2fff56b99316b373cb28fd525c86ebf1e193c86a 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, + store=True, ) 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, ) @@ -29,26 +23,20 @@ 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", "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,14 +45,15 @@ 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() - # define configuration intercompany journal + def custom_compute_pack_type(self): + self._set_custom_pack_type_on_invoice() + + # Inter Company: + # define configuration journal def _prepare_invoice_data(self, dest_company): inv_data = super()._prepare_invoice_data(dest_company) if ( @@ -75,3 +64,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 diff --git a/energy_communities_service_invoicing/models/contract.py b/energy_communities_service_invoicing/models/contract.py index 78a27de59df6617e932f3653f0eda58fd9e828fe..bea8d71d3799d25d426dde821e879717425fdcb5 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 diff --git a/energy_communities_service_invoicing/views/account_move_views.xml b/energy_communities_service_invoicing/views/account_move_views.xml index 6b2f823090fa0f94f7ea0159ca40d9745c4f920e..c50ce50f3e4336e39d699703dd33ce763aa74ac5 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,8 +24,9 @@ <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> </odoo> + diff --git a/energy_communities_service_invoicing/views/menus.xml b/energy_communities_service_invoicing/views/menus.xml index 442ea07a9407e56c57ed39e0eb50e6b14cf781bf..644a24b102fafce967ba56f555371cf9dad7e8ff 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 4629ec8c5d4271cb4a420649e6c0e3cf8045b387..ab73851f9120d719232f171b8ae6a21e7cad1649 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 18db4ee90d77c009207f022cc2f926673dc3d114..e101d4f850972c38b28fd02a078889839f168926 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 a49c0c8189cf53dc63072ea80e138bf41b502cb5..b98b19ce1f88884e15f011b176c2926dec083b81 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>