From 3d1a4faf1116399a5667dbdf79961136e083a1dd 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: Fri, 21 Aug 2026 07:21:08 +0200 Subject: [PATCH 1/2] [ADD] l10n_fr_einvoicing: 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 b93175de4b5c9f0d58eb6d64c3adfc03f2b464d7 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: Fri, 21 Aug 2026 07:21:33 +0200 Subject: [PATCH 2/2] [ADD] check if db is neutralized as an alternative to running_env in test,dev --- 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 760ea73..29d39e1 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 a83c759..d0d013e 100644 --- a/l10n_fr_einvoicing/models/res_company.py +++ b/l10n_fr_einvoicing/models/res_company.py @@ -547,7 +547,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" @@ -603,7 +605,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."