Fonctionnalités principales : 1. Marchés hybrides - Onglet Mercurial - Ajout onglet Mercurial avec style distinct (vert, gras, blanc) - Affichage des produits mercuriaux pour marchés hybrides - Filtrage automatique des produits "Hors Marché 999" - Documentation Phase 2 avec CAS 1 et CAS 2 de marchés hybrides - Règles métier pour validation différenciée (devis 100% mercurial vs mixte) 2. Corrections bugs - Fix flag chkChange sur onglet "Sélection Produits" (callback asynchrone) - Plus d'alerte intempestive après sauvegarde des produits 3. Outils de déploiement - Nouveau script deploy-file.sh pour déploiement unitaire (DEV/PROD) - Amélioration deploy-cleo.sh 4. Gestion multi-contacts (v2.0.3) - Contrôleur AJAX cjxcontacts.php - Script migration clients_contacts - Documentation complète 5. Documentation - Mise à jour TODO.md avec Phase 2 marchés hybrides - Mise à jour README.md v2.0.3 - Ajout RULES.md - Ajout migration_clients_contacts.sql 6. Nettoyage - Suppression fichiers obsolètes (conf_new.php, conf_old.php, uof_linet_20250911.sql) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.3 KiB
4.3 KiB
Règles métier - Application CLEO
Ce document recense les règles métier et de développement identifiées dans l'application CLEO.
1. Gestion des rôles et permissions
1.1 Hiérarchie des rôles
-
DIR-CO (fk_role = 1) : Direction commerciale
- Accès complet aux devis (propres + statut >= 2)
- Vision globale de l'activité
-
DV (fk_role = 2) : Directeur des ventes
- Accès à ses propres devis
- Accès aux devis de ses RR subordonnés (statut >= 3)
- Récupération des RR via
fk_parentdans la tableusers
-
RR (fk_role = 3) : Responsable régional
- Accès uniquement à ses propres devis
-
Admin (fk_role = 90) : Administration système
- Accès complet à l'administration
1.2 Visibilité des devis (mdevis.php)
La clause WHERE pour filtrer les devis dépend du rôle :
- DIR-CO :
d.fk_user = :fkUser OR d.fk_statut_devis >= 2 - DV :
d.fk_user = :fkUser OR (d.fk_statut_devis >= 3 AND d.fk_user IN ([RR_IDS])) - RR :
d.fk_user = :fkUser
2. Gestion des marchés et produits
2.1 Types de marchés
- Marché standard : Contient ses propres produits uniquement
- Marché hybride (
chk_marche_hybride = 1) : Combine les produits du marché + produits du marché 999 - Marché avec remise sur TG (
chk_remise_sur_tg = 1) : Charge uniquement les produits du marché 999 - Marché 999 : Marché "Hors marché" ou "Tarif général"
2.2 Chargement des produits (load_devis_marche_produits)
| Type de marché | chk_remise_sur_tg | chk_marche_hybride | Produits chargés |
|---|---|---|---|
| Spécifique | 1 | - | Tous les produits du marché 999 |
| Spécifique | 0 | 0 | Produits du marché uniquement |
| Spécifique | 0 | 1 | Produits du marché + produits du 999 non présents |
| 999 (Hors marché) | - | - | Tous les produits du marché 999 |
2.3 Terme "Purchasing"
Quand terme_achat = 'Purchasing' dans marches_listes :
- Récupère les prix d'achat nets depuis le marché 999
- Applique les paliers de remise du marché 999
3. Sécurité et développement
3.1 Accès base de données
- Obligatoire : Utiliser la classe
Databaseavec ses méthodes - Interdit : Appeler directement
$db->prepare()sur l'objet Database - Méthodes disponibles :
$db->fetchAll($sql, $params): Récupérer plusieurs lignes$db->fetchOne($sql, $params): Récupérer une ligne$db->query($sql, $params): Exécuter une requête$db->lastInsertId(): Récupérer le dernier ID inséré
3.2 Protection contre les injections SQL
- Utiliser
intval()pour les entiers dans les requêtes non préparées - Utiliser
nettoie_input()pour nettoyer les entrées utilisateur - Privilégier les requêtes préparées via la classe Database
3.3 Variables de sécurité
$cidSafe = intval($cid): Version sécurisée pour les requêtes SQL- Attention lors de la modification de variables : recalculer ou utiliser directement
intval()
4. Statuts des devis
4.1 Statuts principaux
- 1 : En cours
- 2 : Validé niveau 1
- 3 : Validé niveau 2
- 20 : Archivé
4.2 Réactivation des devis
- Un devis archivé (statut 20) peut être réactivé (statut 1)
- La réactivation est tracée dans
devis_histo - Disponible selon les droits du rôle
5. Conventions de nommage
5.1 Fichiers
- Contrôleurs :
c*.phppour les standards,cjx*.phppour AJAX - Modèles :
m*.php - Vues :
v*.php
5.2 Tables de base de données
- Tables principales : Nom simple (
devis,clients,produits) - Tables de référence : Préfixe
x_(x_familles,x_statuts) - Tables système : Préfixe
y_(y_pages) ouz_(z_logs,z_sessions)
6. Gestion des prix et marges
6.1 Prix nets
chk_prix_net = 1: Prix non modifiable (marché hybride)chk_prix_net = 0: Prix modifiable avec marges
6.2 Paliers de remise
Les produits peuvent avoir jusqu'à 6 paliers de remise :
prc_discount_1avecquantite_1prc_discount_2avecquantite_2- ... jusqu'à 6
Document créé le 16 septembre 2025 À mettre à jour au fur et à mesure des découvertes