Files
contract/contract/migrations/16.0.2.0.0/post-migrate.py
2024-02-01 08:21:13 +01:00

34 lines
1.1 KiB
Python

# © 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),
)