From 4924db528fa1fa5b82004c4e8e5054fbdc4e92bb Mon Sep 17 00:00:00 2001 From: fkantelberg Date: Tue, 7 Nov 2023 13:27:37 +0100 Subject: [PATCH 1/2] [FIX] Show analytic distribution and hide analytic account --- contract/models/contract_line.py | 14 +++++++++++++- contract/views/contract.xml | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index 6e3e1cae2f..1e830d8680 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -559,12 +559,24 @@ def _prepare_invoice_line(self): self.last_date_invoiced, self.recurring_next_date ) 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": self.analytic_distribution, + "analytic_distribution": analytic_distribution, "sequence": self.sequence, "name": name, "price_unit": self.price_unit, diff --git a/contract/views/contract.xml b/contract/views/contract.xml index 0c64822367..d7ae9478c7 100644 --- a/contract/views/contract.xml +++ b/contract/views/contract.xml @@ -219,6 +219,12 @@ + @@ -318,6 +324,12 @@ + From f7c4b5c71f03caaf20c2bc3a0a8217ddbbb7439d Mon Sep 17 00:00:00 2001 From: fkantelberg Date: Thu, 4 Jan 2024 09:44:21 +0100 Subject: [PATCH 2/2] [MIG] contract: Remove analytic_account_id and add migration --- contract/README.rst | 2 +- contract/__manifest__.py | 2 +- contract/migrations/16.0.2.0.0/pre-migrate.py | 33 +++++++++++++++++++ contract/models/contract_line.py | 18 +--------- contract/static/description/index.html | 2 +- contract/views/contract.xml | 10 ------ contract/views/contract_line.xml | 8 ----- 7 files changed, 37 insertions(+), 38 deletions(-) create mode 100644 contract/migrations/16.0.2.0.0/pre-migrate.py diff --git a/contract/README.rst b/contract/README.rst index fc4cadbd90..01a37ea558 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:19d8f78874c9775e7c788c7eed046d74ff47c6b86acb42ce1e80aeb905eed3c7 + !! source digest: sha256:08650aaf9f41e3d6c539cc52fdb02a84ad85f7bf3cdb4f63ebbd561f443bdd04 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png diff --git a/contract/__manifest__.py b/contract/__manifest__.py index 3166520b7d..2da7ec4579 100644 --- a/contract/__manifest__.py +++ b/contract/__manifest__.py @@ -11,7 +11,7 @@ { "name": "Recurring - Contracts Management", - "version": "16.0.1.1.3", + "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 0000000000..bb310b8aef --- /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 1e830d8680..aa3c6f7440 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( @@ -559,24 +555,12 @@ def _prepare_invoice_line(self): self.last_date_invoiced, self.recurring_next_date ) 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 adb072f1e4..cac18f3660 100644 --- a/contract/static/description/index.html +++ b/contract/static/description/index.html @@ -366,7 +366,7 @@

Recurring - Contracts Management

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:19d8f78874c9775e7c788c7eed046d74ff47c6b86acb42ce1e80aeb905eed3c7 +!! source digest: sha256:08650aaf9f41e3d6c539cc52fdb02a84ad85f7bf3cdb4f63ebbd561f443bdd04 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Production/Stable License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runboat

This module enables contracts management with recurring diff --git a/contract/views/contract.xml b/contract/views/contract.xml index d7ae9478c7..a32b0f923c 100644 --- a/contract/views/contract.xml +++ b/contract/views/contract.xml @@ -216,11 +216,6 @@ invisible="1" /> - - - -