Files
Odoo-Modules/fusion_claims/__init__.py
gsinghpal e9cf75ee48 changes
2026-03-14 12:04:20 -04:00

55 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2024-2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
# Part of the Fusion Claim Assistant product family.
import logging
from . import models
from . import wizard
_logger = logging.getLogger(__name__)
def _load_adp_device_codes(env):
"""Post-init hook: load device codes then link products to them.
Called on module install AND upgrade. Each step is idempotent.
"""
env['fusion.adp.device.code']._load_packaged_device_codes()
_link_products_to_device_codes(env)
def _link_products_to_device_codes(env):
"""Populate x_fc_adp_device_code_id and x_fc_is_adp_product for
existing products that already have a device code string set.
Uses raw SQL for speed since this may touch hundreds of rows.
"""
cr = env.cr
cr.execute("""
UPDATE product_template pt
SET x_fc_adp_device_code_id = adc.id,
x_fc_adp_price = adc.adp_price,
x_fc_is_adp_product = TRUE
FROM fusion_adp_device_code adc
WHERE pt.x_fc_adp_device_code IS NOT NULL
AND pt.x_fc_adp_device_code != ''
AND adc.device_code = pt.x_fc_adp_device_code
AND adc.active = TRUE
AND pt.x_fc_adp_device_code_id IS NULL
""")
linked = cr.rowcount
_logger.info("ADP migration: linked %d products to device code records", linked)
cr.execute("""
UPDATE product_template
SET x_fc_is_adp_product = TRUE
WHERE x_fc_adp_device_code IS NOT NULL
AND x_fc_adp_device_code != ''
AND (x_fc_is_adp_product IS NULL OR x_fc_is_adp_product = FALSE)
""")
toggled = cr.rowcount
_logger.info("ADP migration: toggled x_fc_is_adp_product on %d products", toggled)