# 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*