diff --git a/app/entreprises/app_relations_entreprises.py b/app/entreprises/app_relations_entreprises.py index 580e685f23..77f31706f1 100644 --- a/app/entreprises/app_relations_entreprises.py +++ b/app/entreprises/app_relations_entreprises.py @@ -470,6 +470,43 @@ def check_site_import(row_data: list): return True +def check_correspondants_import(m): + ligne = 1 + if m[0] != CORRESPONDANTS_KEYS: + flash( + f'Veuillez utilisez la feuille excel à remplir (Feuille "Correspondants", ligne {ligne})' + ) + return False + for correspondant_data in m[1:]: + ligne += 1 + if correspondant_data[0] == "": + flash( + f'Erreur lors de l\'importation (Feuille "Correspondants", ligne {ligne})' + ) + return False + correspondant = EntrepriseCorrespondant.query.filter_by( + id=correspondant_data[0] + ).first() + if correspondant is not None and check_correspondant_import( + correspondant_data[1:-1] + ): + correspondant.civilite = correspondant_data[1].strip() + correspondant.nom = correspondant_data[2].strip() + correspondant.prenom = correspondant_data[3].strip() + correspondant.telephone = correspondant_data[4].strip() + correspondant.mail = correspondant_data[5].strip() + correspondant.poste = correspondant_data[6].strip() + correspondant.service = correspondant_data[7].strip() + correspondant.origine = correspondant_data[8].strip() + correspondant.notes = correspondant_data[9].strip() + else: + flash( + f'Erreur lors de l\'importation (Feuille "Correspondants", ligne {ligne})' + ) + return False + return True + + def check_correspondant_import(correspondant_data: list, site_data: list = None): """ Verifie les données d'une ligne Excel (correspondant) @@ -486,23 +523,26 @@ def check_correspondant_import(correspondant_data: list, site_data: list = None) if correspondant_data[0].strip() not in ["H", "F"]: return False - # entreprise_id existant - entreprise = Entreprise.query.filter_by(siret=site_data[0], visible=True).first() - if entreprise is None: - return False - - # correspondant possède le meme nom et prénom dans la meme entreprise - correspondant = EntrepriseCorrespondant.query.filter_by( - nom=correspondant_data[1].strip(), - prenom=correspondant_data[2].strip(), - entreprise_id=entreprise.id, - ).first() - if correspondant is not None: - return False - if ( correspondant_data[3].strip() == "" and correspondant_data[4].strip() == "" ): # 1 moyen de contact return False + if site_data is not None: + # entreprise_id existant + entreprise = Entreprise.query.filter_by( + siret=site_data[0], visible=True + ).first() + if entreprise is None: + return False + + # correspondant possède le meme nom et prénom dans la meme entreprise + correspondant = EntrepriseCorrespondant.query.filter_by( + nom=correspondant_data[1].strip(), + prenom=correspondant_data[2].strip(), + entreprise_id=entreprise.id, + ).first() + if correspondant is not None: + return False + return True diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 637d247a9e..a116c76845 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -1422,8 +1422,8 @@ def import_donnees(): file.save(file_path) diag, lm = sco_excel.excel_file_to_list_are(file_path) os.remove(file_path) - if len(lm) < 3: - flash("Veuillez utilisez la feuille excel à remplir (3 feuilles)") + if lm is None or len(lm) < 2: + flash("Veuillez utilisez la feuille excel à remplir") return redirect(url_for("entreprises.import_donnees")) entreprises_import = are.check_entreprises_import(lm[0]) sites_import, correspondants_import = are.check_sites_import(lm[1]) @@ -1431,6 +1431,7 @@ def import_donnees(): entreprises_import is False or sites_import is False or correspondants_import is False + or (len(lm) > 2 and are.check_correspondants_import(lm[2]) is False) ): return redirect(url_for("entreprises.import_donnees")) for entreprise in entreprises_import: diff --git a/app/templates/entreprises/import_donnees.html b/app/templates/entreprises/import_donnees.html index 35ed75fb95..c92bf764e1 100644 --- a/app/templates/entreprises/import_donnees.html +++ b/app/templates/entreprises/import_donnees.html @@ -69,7 +69,8 @@ Adresse : {{ entreprise.adresse }}
Code postal : {{ entreprise.codepostal }}
Ville : {{ entreprise.ville }}
- Pays : {{ entreprise.pays }} + Pays : {{ entreprise.pays }}
+ Fiche entreprise {% for site in entreprise.sites %}
@@ -92,7 +93,8 @@ Adresse : {{ site.adresse }}
Code postal : {{ site.codepostal }}
Ville : {{ site.ville }}
- Pays : {{ site.pays }} + Pays : {{ site.pays }}
+ Fiche entreprise
{% endfor %} {% endif %} @@ -123,6 +125,7 @@ {% if correspondant.notes %} Notes : {{ correspondant.notes }}
{% endif %} + Fiche entreprise {% endfor %}