Skip to content

Commit

Permalink
[IMP] l10n_fr_siret: improve data migration script
Browse files Browse the repository at this point in the history
Improve data migration for fields siret/siren/nic: if we have a valid siren inside a bad siret, we keep the siren.
  • Loading branch information
alexis-via committed Feb 25, 2025
1 parent dcfbc8d commit 1dc5d17
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions l10n_fr_siret/post_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

import logging

from stdnum.fr.siret import is_valid
from stdnum.fr.siren import is_valid as siren_is_valid
from stdnum.fr.siret import is_valid as siret_is_valid

from odoo import SUPERUSER_ID, api

Expand All @@ -15,19 +16,30 @@
def set_siren_nic(cr, registry):
with api.Environment.manage():
env = api.Environment(cr, SUPERUSER_ID, {})
logger.info('Starting data migration of fields siret/siren/nic on res.partner')
partners = (
env["res.partner"]
.with_context(active_test=False)
.search([("siret", "!=", False), ("parent_id", "=", False)])
)
for partner in partners:
if is_valid(partner.siret):
logger.info("Setting SIREN and NIC on partner %s", partner.display_name)
partner.write({"siret": partner.siret})
ini_siret = partner.siret.replace(' ', '')
if len(ini_siret) == 14 and siret_is_valid(ini_siret):
logger.debug("Setting SIREN and NIC on partner %s", partner.display_name)
partner.write({"siret": ini_siret})
elif len(ini_siret) == 9 and siren_is_valid(ini_siret):
logger.debug('Setting SIREN on partner %s', partner.display_name)
partner.write({'siren': ini_siret})

Check warning on line 32 in l10n_fr_siret/post_install.py

View check run for this annotation

Codecov / codecov/patch

l10n_fr_siret/post_install.py#L31-L32

Added lines #L31 - L32 were not covered by tests
elif len(ini_siret) > 9 and siren_is_valid(ini_siret[:9]):
logger.info(

Check warning on line 34 in l10n_fr_siret/post_install.py

View check run for this annotation

Codecov / codecov/patch

l10n_fr_siret/post_install.py#L34

Added line #L34 was not covered by tests
'Setting SIREN %s on partner %s. Wrong additional chars ignored '
'(bad initial SIRET was %s)',
ini_siret[:9], partner.display_name, ini_siret)
partner.write({'siren': ini_siret[:9]})

Check warning on line 38 in l10n_fr_siret/post_install.py

View check run for this annotation

Codecov / codecov/patch

l10n_fr_siret/post_install.py#L38

Added line #L38 was not covered by tests
else:
logger.warning(
"Remove SIRET %s on partner %s because checksum is wrong",
partner.siret,
partner.display_name,
)
"Remove SIRET %s on partner %s (bad length and/or checksum, "
"doesn't start with valid SIREN)",
ini_siret, partner.display_name)
partner.write({"siret": False})
logger.info('End of data migration of fields siret/siren/nic on res.partner')

0 comments on commit 1dc5d17

Please sign in to comment.