diff --git a/contract/README.rst b/contract/README.rst index 51b61c9279a..729a7597257 100644 --- a/contract/README.rst +++ b/contract/README.rst @@ -7,7 +7,7 @@ Recurring - Contracts Management !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:870eb5ef4a75e77c81e61000a359c9564347edb98cdb17636574ab3adf0849b2 + !! source digest: sha256:855fe3836f0861d94b63c7bc305fb406984ce3f957c863a25eee4e5bc1384292 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png diff --git a/contract/__manifest__.py b/contract/__manifest__.py index 1e3d7af40e5..c5d4d0dadcc 100644 --- a/contract/__manifest__.py +++ b/contract/__manifest__.py @@ -11,7 +11,7 @@ { "name": "Recurring - Contracts Management", - "version": "16.0.1.1.1", + "version": "16.0.2.0.0", "category": "Contract Management", "license": "AGPL-3", "author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)", diff --git a/contract/migrations/16.0.2.0.0/pre-migrate.py b/contract/migrations/16.0.2.0.0/pre-migrate.py new file mode 100644 index 00000000000..bb310b8aef4 --- /dev/null +++ b/contract/migrations/16.0.2.0.0/pre-migrate.py @@ -0,0 +1,33 @@ +# © 2023 initOS GmbH +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import json +import logging + +_logger = logging.getLogger(__name__) + + +def migrate(cr, version): + """Migrate analytic account from contract line to analytic distribution""" + + _logger.info("Migrating analytic distribution for contract.line") + cr.execute( + """ + SELECT id, analytic_account_id, analytic_distribution + FROM contract_line + WHERE analytic_account_id IS NOT NULL + """ + ) + for line_id, analytic_account_id, analytic_distribution in cr.fetchall(): + analytic_account_id = str(analytic_account_id) + if analytic_distribution: + analytic_distribution[analytic_account_id] = ( + analytic_distribution.get(analytic_account_id, 0) + 100 + ) + else: + analytic_distribution = {analytic_account_id: 100} + + cr.execute( + "UPDATE contract_line SET analytic_distribution = %s WHERE id = %s", + (json.dumps(analytic_distribution), line_id), + ) diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index 1e830d8680c..df29a7d570f 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -33,10 +33,6 @@ class ContractLine(models.Model): ondelete="cascade", ) currency_id = fields.Many2one(related="contract_id.currency_id") - analytic_account_id = fields.Many2one( - string="Analytic account", - comodel_name="account.analytic.account", - ) date_start = fields.Date(required=True) date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False) termination_notice_date = fields.Date( @@ -560,23 +556,12 @@ def _prepare_invoice_line(self): ) name = self._insert_markers(dates[0], dates[1]) - analytic_distribution = self.analytic_distribution - analytic_account_id = self.analytic_account_id.id - if analytic_account_id: - analytic_account_id = str(analytic_account_id) - if analytic_distribution: - analytic_distribution[analytic_account_id] = ( - analytic_distribution.get(analytic_account_id, 0) + 100 - ) - else: - analytic_distribution = {analytic_account_id: 100} - return { "quantity": self._get_quantity_to_invoice(*dates), "product_uom_id": self.uom_id.id, "discount": self.discount, "contract_line_id": self.id, - "analytic_distribution": analytic_distribution, + "analytic_distribution": self.analytic_distribution, "sequence": self.sequence, "name": name, "price_unit": self.price_unit, diff --git a/contract/static/description/index.html b/contract/static/description/index.html index 9ce4dbec53b..17d2adcfedc 100644 --- a/contract/static/description/index.html +++ b/contract/static/description/index.html @@ -367,7 +367,7 @@
This module enables contracts management with recurring
diff --git a/contract/views/contract.xml b/contract/views/contract.xml
index d7ae9478c7c..a32b0f923c9 100644
--- a/contract/views/contract.xml
+++ b/contract/views/contract.xml
@@ -216,11 +216,6 @@
invisible="1"
/>