# TODO - Évolutions CLEO ## Fonctionnalités à développer ### Module Devis #### 6. Modifier un devis archivé **Priorité**: Haute **Description**: Permettre la modification d'un devis archivé et son renvoi pour traitement sans nécessiter de duplication. **Tâches**: - [ ] Ajouter un bouton "Réactiver" sur les devis archivés (statut 20) - [ ] Permettre le changement de statut d'archivé vers "En cours" - [ ] Conserver l'historique de réactivation dans `devis_histo` - [ ] Adapter les droits selon les rôles (RR, DV, DIR-CO) #### 8. Dupliquer une ligne produit **Priorité**: Moyenne **Description**: Permettre la duplication d'une ligne produit dans un même devis (utile pour les gratuités). **Tâches**: - [ ] Ajouter un bouton "Dupliquer" sur chaque ligne produit - [ ] Gérer la duplication avec prix à 0 pour les gratuités - [ ] Conserver l'ordre des lignes après duplication - [ ] Mettre à jour automatiquement les totaux #### 16. Système de recherche avancée **Priorité**: Haute **Description**: Ajouter une recherche multi-critères pour les devis en cours et archivés. **Tâches**: - [ ] Créer une interface de recherche unifiée - [ ] Implémenter la recherche par : - [ ] Numéro de devis - [ ] Nom d'établissement/client - [ ] Référence produit - [ ] Numéro d'opportunité - [ ] Ajouter des filtres par statut (en cours/archivé) - [ ] Paginer les résultats de recherche - [ ] Export des résultats en Excel #### 19. Gestion des contacts multiples **Priorité**: Haute **Description**: Permettre la gestion de plusieurs contacts par client. **Tâches**: - [ ] Créer une table `clients_contacts` - [ ] Migration des contacts existants vers la nouvelle structure - [ ] Interface CRUD pour les contacts - [ ] Sélecteur de contact à la création/modification de devis - [ ] Historique des contacts par devis #### 21. Actualisation tarifaire **Priorité**: Moyenne **Description**: Permettre l'actualisation des prix selon la dernière grille tarifaire. **Tâches**: - [ ] Ajouter un bouton "Actualiser les tarifs" - [ ] Comparer les prix actuels avec la grille en vigueur - [ ] Afficher les différences avant validation - [ ] Recalculer automatiquement les marges - [ ] Tracer l'actualisation dans l'historique ### Module SAP #### 14. Gestion de la prise en charge **Priorité**: Haute **Description**: Ajouter la traçabilité de la prise en charge et du transfert EDI. **Tâches**: - [ ] Ajouter les champs en base de données : - [ ] `chk_prise_en_charge` (boolean) - [ ] `fk_user_prise_en_charge` (int) - [ ] `date_prise_en_charge` (datetime) - [ ] `fk_user_transfert_edi` (int) - [ ] `date_transfert_edi` (datetime) - [ ] `erreur_transfert_edi` (text) - [ ] Interface de prise en charge avec case à cocher - [ ] Affichage du nom du gestionnaire (ex: "Angela Monteiro") - [ ] Possibilité de décocher en cas d'erreur - [ ] Log des transferts EDI - [ ] Gestion et affichage des erreurs EDI #### 16. Recherche dans le module SAP **Priorité**: Moyenne **Description**: Implémenter la recherche dans le module SAP (voir point 16 des Devis). **Tâches**: - [ ] Réutiliser le composant de recherche des devis - [ ] Adapter aux spécificités SAP - [ ] Filtres supplémentaires (état EDI, prise en charge) ## Améliorations techniques prioritaires ### Sécurité (URGENT) - [ ] Migrer les credentials DB vers des variables d'environnement - [ ] Remplacer toutes les requêtes SQL par des requêtes préparées - [ ] Audit et correction des failles XSS ### Performance - [ ] Implémenter la pagination côté serveur pour toutes les listes - [ ] Ajouter des index sur les colonnes fréquemment recherchées - [ ] Mettre en cache les requêtes récurrentes ### Qualité du code - [ ] Ajouter la documentation PHPDoc sur les fonctions principales - [ ] Créer des tests unitaires pour les fonctions critiques - [ ] Standardiser la gestion des erreurs ## Planning prévisionnel ### Sprint 1 (2 semaines) - Sécurité - Correction des vulnérabilités critiques - Migration des configurations sensibles ### Sprint 2 (3 semaines) - Fonctionnalités prioritaires - Point 6 : Modification devis archivés - Point 14 : Prise en charge SAP - Point 16 : Recherche avancée ### Sprint 3 (3 semaines) - Gestion des contacts - Point 19 : Contacts multiples - Migration des données existantes ### Sprint 4 (2 semaines) - Améliorations - Point 8 : Duplication lignes produits - Point 21 : Actualisation tarifaire ### Sprint 5 (2 semaines) - Optimisations - Performances et pagination - Tests et documentation ## Notes de développement ### Structure de la table `clients_contacts` (à créer) ```sql CREATE TABLE clients_contacts ( rowid INT PRIMARY KEY AUTO_INCREMENT, fk_client INT NOT NULL, nom VARCHAR(100), prenom VARCHAR(100), fonction VARCHAR(100), telephone VARCHAR(20), mobile VARCHAR(20), email VARCHAR(255), principal TINYINT DEFAULT 0, active TINYINT DEFAULT 1, date_creat DATETIME, fk_user_creat INT, date_modif DATETIME, fk_user_modif INT, FOREIGN KEY (fk_client) REFERENCES clients(rowid) ); ``` ### Modifications table `devis` pour SAP ```sql ALTER TABLE devis ADD COLUMN chk_prise_en_charge TINYINT DEFAULT 0; ALTER TABLE devis ADD COLUMN fk_user_prise_en_charge INT; ALTER TABLE devis ADD COLUMN date_prise_en_charge DATETIME; ALTER TABLE devis ADD COLUMN fk_user_transfert_edi INT; ALTER TABLE devis ADD COLUMN date_transfert_edi DATETIME; ALTER TABLE devis ADD COLUMN erreur_transfert_edi TEXT; ``` --- *Document créé le 11 septembre 2025* *À mettre à jour au fur et à mesure de l'avancement des développements*