From 3f1c6dbab8f3055ffb573df3ad4be35eca13bdb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20BOYER?= <t.boyer@si17.lan> Date: Thu, 13 Feb 2025 17:44:08 +0100 Subject: [PATCH] [Bilan] Fix calcul et paragraphe des sous-traitants --- CHANGELOG.md | 5 +- .../Generator/Word/ContractorGenerator.php | 58 +++++++++++++------ 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5c075358..1b2eb5b2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ CHANGELOG ========= ## [2.4.9] - 2025-XX-XX ### Ajout -- [Global] Ajout des champs absents dans les documents Word générés depuis la liste des différents modules. - [Formulaire] Ajout d'un label aux champs type et liste des structures dans la gestion des droits des modèles d'AIPD et dans les référentiels, ainsi que dans la duplication. - [Accessibilité] Ajout du plan d'actions 2025. - [Preuves] Ajout de la possibilité de déposer des documents ayant comme extension .txt, .log, .csv et .md. @@ -24,14 +23,16 @@ CHANGELOG - [Traitements] Le critère « Décisions automatisées avec effet » est renommé en « Décision automatique avec effet juridique ». - [Traitements] Le critère « Exclusion automatique d'un service » est renommé en « Exclusion du bénéfice d’un droit, d’un service ou contrat ». - [Traitements] Déplacement des mesures de sécurité et confidentialité par ordre alphabétique. +- [Sous-traitants] Inversion de la case à cocher de l'envoi de données hors UE en dans l'UE. - [Indice de maturité] Modification du bouton de modification pour s'afficher que s'il y a des préconisations dans la synthèse d'un indice de maturité. - [Bilan] Modification de l'affichage des données du dernier indice de maturité dans le bilan. - [AIPD] Modification des dates des avis des acteurs pour ne rien afficher par défaut dans le PDF d'une AIPD. ### Fix -- [Traitements] Fix de certains champs manquants dans le document Word généré depuis la liste des traitements. +- [Global] Fix de certains champs manquants dans les documents PDF et Word générés depuis les différents modules. - [Indice de maturité] Fix de l'affichage du graphique dans le bilan et la synthèse d'un indice de maturité. - [Bilan] Fix de l'affichage de la date dans le tableau des actions de protection mises en place. - [Bilan] Fix de certaines données présentes dans le tableau annexe du registre des traitements. +- [Bilan] Fix de certaines données calculées dans le paragraphe du registre des sous-traitants. - [Registre public] Fix affichage des durées de conservation. - [Migration] Fix d'une migration qui cause une erreur lors du déploiement. diff --git a/src/Domain/Reporting/Generator/Word/ContractorGenerator.php b/src/Domain/Reporting/Generator/Word/ContractorGenerator.php index 652ab0ad9..838bd1c1f 100644 --- a/src/Domain/Reporting/Generator/Word/ContractorGenerator.php +++ b/src/Domain/Reporting/Generator/Word/ContractorGenerator.php @@ -56,6 +56,25 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat $nbMaintainsTreatmentRegister = 0; $nbSendingDataOutsideEu = 0; + foreach ($data as $contractor) { + // Verified contractual clauses + if ($contractor->isContractualClausesVerified()) { + ++$nbVerifiedContractualClauses; + } + // Adopted security features + if ($contractor->isAdoptedSecurityFeatures()) { + ++$nbAdoptedSecurityFeatures; + } + // Maintains treatment register + if ($contractor->isMaintainsTreatmentRegister()) { + ++$nbMaintainsTreatmentRegister; + } + // Sending data outside EU + if (!$contractor->isSendingDataOutsideEu()) { + ++$nbSendingDataOutsideEu; + } + } + $section->addTitle('Registre des sous-traitants', 2); if (empty($data)) { @@ -65,7 +84,27 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat } $section->addText("Un recensement des sous-traitants gérants des données à caractère personnel de {$collectivity} a été effectué."); - $section->addText("Il y a {$nbContractors} sous-traitants identifiés, les clauses contractuelles de {$nbVerifiedContractualClauses} d’entre eux ont été vérifiées. {$nbAdoptedSecurityFeatures} sous-traitants ont adopté les éléments de sécurité nécessaires. {$nbMaintainsTreatmentRegister} sous-traitants tiennent à jour un registre des traitements. {$nbSendingDataOutsideEu} sous-traitants envois des données hors UE."); + $section->addText("Il y a " . ($nbContractors == 1 ? " un sous-traitant identifié." : "{$nbContractors} sous-traitants identifiés.")); + $section->addListItem( + ($nbVerifiedContractualClauses == 0 ? "Aucune clause contractuelle n’a été vérifiée ;" : + ($nbVerifiedContractualClauses == 1 ? "1 clause contractuelle a été vérifiée ;" : + "{$nbVerifiedContractualClauses} clauses contractuelles vérifiées ;")) + ); + $section->addListItem( + ($nbAdoptedSecurityFeatures == 0 ? "Aucun sous-traitant n’a adopté les éléments de sécurité nécessaires ;" : + ($nbAdoptedSecurityFeatures == 1 ? "1 sous-traitant a adopté les éléments de sécurité nécessaires ;" : + "{$nbAdoptedSecurityFeatures} sous-traitants ont adopté les éléments de sécurité nécessaires ;")) + ); + $section->addListItem( + ($nbMaintainsTreatmentRegister == 0 ? "Aucun sous-traitant ne tient à jour un registre des traitements ;" : + ($nbMaintainsTreatmentRegister == 1 ? "1 sous-traitant tient à jour un registre des traitements ;" : + "{$nbMaintainsTreatmentRegister} sous-traitants tiennent à jour un registre des traitements ;")) + ); + $section->addListItem( + ($nbSendingDataOutsideEu == 0 ? "Aucun sous-traitant n'envoie des données hors Union européenne." : + ($nbSendingDataOutsideEu == 1 ? "1 sous-traitant envoie des données hors Union européenne." : + "{$nbSendingDataOutsideEu} sous-traitants envoient des données hors Union européenne.")) + ); $ContractorsListTable = $section->addTable($this->tableStyle); $ContractorsListTable->addRow(null, ['tblHeader' => true, 'cantsplit' => true]); @@ -89,23 +128,6 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat $cell->addText($contractor->isMaintainsTreatmentRegister() ? 'Oui' : 'Non'); $cell = $ContractorsListTable->addCell(1500); $cell->addText($contractor->isSendingDataOutsideEu() ? 'Oui' : 'Non'); - - // Verified contractual clauses - if ($contractor->isContractualClausesVerified()) { - ++$nbVerifiedContractualClauses; - } - // Adopted security features - if ($contractor->isAdoptedSecurityFeatures()) { - ++$nbAdoptedSecurityFeatures; - } - // Maintains treatment register - if ($contractor->isMaintainsTreatmentRegister()) { - ++$nbMaintainsTreatmentRegister; - } - // Sending data outside EU - if (!$contractor->isSendingDataOutsideEu()) { - ++$nbSendingDataOutsideEu; - } } } -- GitLab