diff --git a/addons/mcs_operating_system/hooks.py b/addons/mcs_operating_system/hooks.py index b7ea46b..5d12f76 100644 --- a/addons/mcs_operating_system/hooks.py +++ b/addons/mcs_operating_system/hooks.py @@ -38,7 +38,6 @@ class OperatingSystemSetup: values = {"mcs_is_client_account": True} if not partner.mcs_account_status: values["mcs_account_status"] = "active" - values.update(self._client_company_currency_values(partner)) partner.write(values) def _ensure_active_portfolio(self): @@ -142,47 +141,10 @@ class OperatingSystemSetup: values["mcs_is_client_account"] = True if not partner.mcs_account_status: values["mcs_account_status"] = "active" - values.update(self._client_company_currency_values(partner)) if values: partner.write(values) return partner - def _client_company_currency_values(self, partner): - invoice = self.Invoice.search( - [ - ("move_type", "=", "out_invoice"), - ("state", "=", "posted"), - ("commercial_partner_id", "=", partner.commercial_partner_id.id), - ("company_id", "!=", False), - ], - order="invoice_date desc, id desc", - limit=1, - ) - if invoice: - return { - "mcs_client_company_id": invoice.company_id.id, - "mcs_currency_id": invoice.currency_id.id or invoice.company_currency_id.id, - } - project = self.Project.search( - [("partner_id", "=", partner.id), ("company_id", "!=", False)], - order="write_date desc, id desc", - limit=1, - ) - if project: - return { - "mcs_client_company_id": project.company_id.id, - "mcs_currency_id": project.company_id.currency_id.id, - } - if partner.currency_id: - company = self.env["res.company"].sudo().search( - [("currency_id", "=", partner.currency_id.id)], limit=1 - ) - values = {"mcs_currency_id": partner.currency_id.id} - if company: - values["mcs_client_company_id"] = company.id - return values - return {} - def _ensure_project(self, partner, account_name, workstream, delivery_type): is_internal = partner.name == "Internal" project_name = "%s - %s" % (partner.name, workstream) diff --git a/addons/mcs_operating_system/models/crm_lead.py b/addons/mcs_operating_system/models/crm_lead.py index cebda6c..cdc8920 100644 --- a/addons/mcs_operating_system/models/crm_lead.py +++ b/addons/mcs_operating_system/models/crm_lead.py @@ -107,10 +107,6 @@ class CrmLead(models.Model): partner = lead.partner_id if partner: values = {"mcs_is_client_account": True} - company = lead.company_id or self.env.company - if company: - values["mcs_client_company_id"] = company.id - values["mcs_currency_id"] = company.currency_id.id if not partner.mcs_account_owner_id and lead.user_id: values["mcs_account_owner_id"] = lead.user_id.id partner.write(values) diff --git a/addons/mcs_operating_system/models/res_partner.py b/addons/mcs_operating_system/models/res_partner.py index fcf531c..2c1b57b 100644 --- a/addons/mcs_operating_system/models/res_partner.py +++ b/addons/mcs_operating_system/models/res_partner.py @@ -33,11 +33,13 @@ class ResPartner(models.Model): mcs_currency_id = fields.Many2one( "res.currency", string="MCS Currency", + compute="_compute_mcs_account_metrics", default=lambda self: self.env.company.currency_id, ) mcs_client_company_id = fields.Many2one( "res.company", string="MCS Company", + compute="_compute_mcs_account_metrics", help="Company inferred from this client's invoices or delivery projects.", ) mcs_monthly_revenue = fields.Monetary( @@ -116,18 +118,13 @@ class ResPartner(models.Model): "mcs_is_client_account": "boolean", "mcs_account_status": "varchar", "mcs_account_health": "varchar", - "mcs_currency_id": "integer", - "mcs_client_company_id": "integer", "mcs_monthly_revenue": "numeric", "mcs_contracted_value": "numeric", "mcs_monthly_hours": "double precision", "mcs_effective_hourly_revenue": "numeric", "mcs_total_invoiced": "numeric", - "mcs_total_invoiced_display": "varchar", "mcs_total_outstanding": "numeric", - "mcs_total_outstanding_display": "varchar", "mcs_total_overdue": "numeric", - "mcs_total_overdue_display": "varchar", "mcs_last_invoice_date": "date", "mcs_account_owner_id": "integer", "mcs_next_account_action": "varchar", diff --git a/addons/mcs_operating_system/views/res_partner_views.xml b/addons/mcs_operating_system/views/res_partner_views.xml index 96b136b..ce726d9 100644 --- a/addons/mcs_operating_system/views/res_partner_views.xml +++ b/addons/mcs_operating_system/views/res_partner_views.xml @@ -74,14 +74,9 @@ - - - - - @@ -95,6 +90,6 @@ [('mcs_is_client_account','=',True)] - {'default_mcs_is_client_account': True, 'group_by': 'mcs_client_company_id'} + {'default_mcs_is_client_account': True}