From 645e7fc39933db7567b01831db43457cc3944efd Mon Sep 17 00:00:00 2001 From: Xavier Fernandez Date: Tue, 9 Jul 2024 11:20:16 +0200 Subject: [PATCH] import_siae: prefer active conventions --- .../management/commands/_import_siae/vue_af.py | 4 +++- tests/companies/test_import_siae_command.py | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/itou/companies/management/commands/_import_siae/vue_af.py b/itou/companies/management/commands/_import_siae/vue_af.py index 046750c8e0..a89f7a8566 100644 --- a/itou/companies/management/commands/_import_siae/vue_af.py +++ b/itou/companies/management/commands/_import_siae/vue_af.py @@ -150,4 +150,6 @@ def get_conventions_by_siae_key(vue_af_df): end_at=timezone.make_aware(row.end_at).date(), ) ) - return {key: max(conventions, key=lambda i: i.end_at) for key, conventions in siae_conventions.items()} + return { + key: max(conventions, key=lambda i: (i.is_active, i.end_at)) for key, conventions in siae_conventions.items() + } diff --git a/tests/companies/test_import_siae_command.py b/tests/companies/test_import_siae_command.py index a302481b68..9f93a7c9de 100644 --- a/tests/companies/test_import_siae_command.py +++ b/tests/companies/test_import_siae_command.py @@ -20,6 +20,7 @@ ) from itou.companies.management.commands._import_siae.utils import anonymize_fluxiae_df, could_siae_be_deleted from itou.companies.management.commands._import_siae.vue_af import ( + Convention, get_conventions_by_siae_key, get_vue_af_df, ) @@ -52,6 +53,23 @@ def setUp(self): for file in files: shutil.copy(file, self.tmp_path) + @freeze_time("2024-07-09") + def test_get_conventions_by_siae_key(self): + data = [ + (1, "ACI", False, pd.Timestamp("2024-12-31 00:00")), + (1, "ACI", True, pd.Timestamp("2024-09-30 00:00")), + (2, "AI", False, pd.Timestamp("2024-08-31 00:00")), + (2, "AI", False, pd.Timestamp("2024-07-31 00:00")), + (3, "AI", False, pd.Timestamp("2024-07-31 00:00")), + ] + # This is missing a bunch of columns, but only those are relevant for get_conventions_by_siae_key + vue_af_df_simplified = pd.DataFrame(data, columns=["asp_id", "kind", "has_active_state", "end_at"]) + assert get_conventions_by_siae_key(vue_af_df_simplified) == { + (1, "ACI"): Convention(True, datetime.date(2024, 9, 30)), + (2, "AI"): Convention(False, datetime.date(2024, 8, 31)), + (3, "AI"): Convention(False, datetime.date(2024, 7, 31)), + } + def test_uncreatable_conventions_for_active_siae_with_active_convention(self): siret_to_siae_row = get_siret_to_siae_row(get_vue_structure_df()) conventions_by_siae_key = get_conventions_by_siae_key(get_vue_af_df())