Implémentation complète de la duplication de lignes produits dans les devis :
Backend (controllers/cjxdevis.php):
- Ajout endpoint duplicate_ligne_produit avec paramètre gratuite
- Recalcul automatique des ordres lors de la duplication
- Suppression du warning "Undefined array key user"
- Gestion correcte de l'ordre des lignes (fix ordre=0)
Frontend (pub/res/js/jdevis.js):
- Bouton ➕ pour dupliquer une ligne produit
- Duplication directe en gratuité (remise 100%) sans confirmation
- Bouton 🗑️ pour supprimer les lignes à 100% de remise
- Colorisation violet clair (rgba(138, 43, 226, 0.2)) des lignes gratuites
- Limitation à 2 occurrences max par produit (➕ disparaît après)
- Badge (x2) dans l'onglet Sélection pour les produits dupliqués
- Déduplication de la liste de sélection (1 produit = 1 ligne)
- Première colonne sans retour à la ligne (white-space: nowrap)
- Fix: loadProduitsDevis n'existe pas → showDevisProduits
- Fix: ReferenceError remiseProduit avant initialisation
Bugs corrigés:
- Bug #1: Warning PHP "Undefined array key user" (ligne 165)
- Bug #2: Ligne dupliquée ne s'affiche pas (ordre=0)
- Bug #3: ReferenceError loadProduitsDevis non définie
- Bug #4: ReferenceError remiseProduit avant initialisation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>