From 6b54d3b1e62ff99cf9fd3cb91e126cdb6297ca8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <30716308+remi-filament@users.noreply.github.com> Date: Thu, 20 Aug 2026 21:30:07 +0200 Subject: [PATCH 1/2] [ADD] neutralize script --- l10n_fr_einvoicing/data/neutralize.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 l10n_fr_einvoicing/data/neutralize.sql diff --git a/l10n_fr_einvoicing/data/neutralize.sql b/l10n_fr_einvoicing/data/neutralize.sql new file mode 100644 index 0000000..165f236 --- /dev/null +++ b/l10n_fr_einvoicing/data/neutralize.sql @@ -0,0 +1,2 @@ +UPDATE res_company SET fr_ctc_client_id = NULL, fr_ctc_client_secret = NULL, fr_ctc_accredited_platform = NULL, fr_ctc_auth_method = NULL; +DELETE FROM fr_einvoicing_token; From c6c708ffc34f33193377b7fb0bb8bd37c499d57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <30716308+remi-filament@users.noreply.github.com> Date: Thu, 20 Aug 2026 21:30:42 +0200 Subject: [PATCH 2/2] [IMP] check if DB is neutralized on top of running_env --- l10n_fr_einvoicing/models/fr_einvoicing_event.py | 4 +++- l10n_fr_einvoicing/models/res_company.py | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/l10n_fr_einvoicing/models/fr_einvoicing_event.py b/l10n_fr_einvoicing/models/fr_einvoicing_event.py index 1bac117..aa230a7 100644 --- a/l10n_fr_einvoicing/models/fr_einvoicing_event.py +++ b/l10n_fr_einvoicing/models/fr_einvoicing_event.py @@ -112,7 +112,9 @@ def create(self, vals_list): return events def _auto_process(self): - if tools.config.get("running_env") in ("dev", "test"): + if tools.config.get("running_env") in ("dev", "test") or self.env[ + "ir.config_parameter" + ].sudo().get_param("database.is_neutralized"): result = {"logs": []} company = self[0].company_id try: diff --git a/l10n_fr_einvoicing/models/res_company.py b/l10n_fr_einvoicing/models/res_company.py index a8a67c4..b1430f8 100644 --- a/l10n_fr_einvoicing/models/res_company.py +++ b/l10n_fr_einvoicing/models/res_company.py @@ -535,7 +535,9 @@ def _fr_ctc_authorization_code_redirect(self): running_env = tools.config.get("running_env") siren = self.partner_id._get_siren(raise_if_none=True) optional_uri_params = {"superpdp_company_number": siren} - if running_env in ("test", "dev"): + if running_env in ("test", "dev") or self.env[ + "ir.config_parameter" + ].sudo().get_param("database.is_neutralized"): optional_uri_params["superpdp_company_number_scheme"] = "sandbox" else: optional_uri_params["superpdp_company_number_scheme"] = "fr_siren" @@ -591,7 +593,16 @@ def _fr_ctc_superpdp_sandbox_create( # WARNING: Burger Queen and Tricatel suffixes are different in earch sandbox # so you MUST customize the 2 arguments logger.info("Start to create a SUPER PDP sandbox") - if tools.config.get("running_env") not in ("test", "dev"): + running_env = tools.config.get("running_env", False) + if not running_env and not self.env["ir.config_parameter"].sudo().get_param( + "database.is_neutralized" + ): + logger.warning( + "You are trying to create a SUPER PDP sandbox but database is not " + "neutralized. Aborting." + ) + return False + elif running_env and running_env not in ("test", "dev"): logger.warning( "You are trying to create a SUPER PDP sandbox but running_env is not " "test/dev. Aborting."