168 lines
No EOL
6.6 KiB
Markdown
168 lines
No EOL
6.6 KiB
Markdown
# Migration vers Odoo 18.0 - bemade_quotation_alternative
|
|
|
|
## Description
|
|
Module qui permet de créer des devis alternatifs à partir d'un devis existant, avec la possibilité de sélectionner les lignes à dupliquer et de personnaliser le nom, l'objectif et les notes.
|
|
|
|
## Analyse Technique Détaillée
|
|
|
|
### Fonctionnalités Actuelles
|
|
1. **Assistant de Duplication (`sale.order.duplication.wizard`)**
|
|
- Duplication sélective des lignes via `sale.order.line.duplication.wizard`
|
|
- Copie personnalisable des notes (`note`) et objectifs (`purpose`)
|
|
- Génération automatique du nom avec suffixe "-REV{n}"
|
|
- Gestion des liens bidirectionnels entre devis dans le chatter
|
|
|
|
2. **Modèles Modifiés**
|
|
- `sale.order` : Ajout de l'action `action_duplicate_order()`
|
|
- Deux wizards transients pour la logique de duplication
|
|
- Messages automatiques dans le chatter avec liens cliquables
|
|
|
|
3. **Interface Utilisateur**
|
|
- Bouton "Duplicate Order" dans le header du formulaire de vente
|
|
- Assistant modal avec sélection ligne par ligne
|
|
- Vue tree éditable pour la sélection des lignes
|
|
- Champs invisibles pour les données techniques
|
|
|
|
### Changements Critiques dans Odoo 18.0
|
|
|
|
1. **Architecture Sale - ✅ Compatible**
|
|
- Le modèle `sale.order` reste stable
|
|
- Les champs `purpose` et `note` sont toujours présents
|
|
- Les assistants transients fonctionnent de la même manière
|
|
|
|
2. **Modifications Requises - ⚠️ Attention**
|
|
- **Vues XML** : Utiliser `<list>` au lieu de `<tree>` (ligne 20 du wizard view)
|
|
- **Chatter/Messages** : Vérifier la compatibilité de `Markup()` et `message_post()`
|
|
- **Boutons** : Adapter les classes CSS (`btn-primary` → `oe_highlight`)
|
|
- **Manifest** : Mettre à jour la version vers `18.0.1.0.0`
|
|
|
|
## Plan de Migration Détaillé
|
|
|
|
### Phase 1 : Modifications Obligatoires ⚠️
|
|
1. **Fichiers à Modifier Immédiatement**
|
|
- [ ] `__manifest__.py` : Version `17.0.1.0.0` → `18.0.1.0.0`
|
|
- [ ] `wizard/sale_order_duplication_wizard_view.xml` : `<tree>` → `<list>` (ligne 20)
|
|
- [ ] `wizard/sale_order_duplication_wizard_view.xml` : Classes CSS des boutons
|
|
|
|
2. **Tests de Compatibilité Critique**
|
|
- [ ] Tester `Markup()` avec les nouveaux standards Odoo 18
|
|
- [ ] Vérifier `message_post()` avec les liens HTML
|
|
- [ ] Valider la méthode `copy()` sur les modèles
|
|
|
|
### Phase 2 : Optimisations et Améliorations
|
|
1. **Code Quality**
|
|
- [ ] Remplacer les f-strings dans `Markup()` par des méthodes plus sûres
|
|
- [ ] Ajouter des validations sur les champs obligatoires
|
|
- [ ] Améliorer la gestion d'erreurs dans `action_duplicate_order()`
|
|
|
|
2. **Performance**
|
|
- [ ] Optimiser la recherche de devis existants (ligne 102-103)
|
|
- [ ] Ajouter des index sur les champs recherchés
|
|
- [ ] Tester avec des volumes importants de lignes
|
|
|
|
### Phase 3 : Tests et Validation
|
|
1. **Scénarios de Test Spécifiques**
|
|
- [ ] Duplication avec toutes les lignes
|
|
- [ ] Duplication sélective (quelques lignes)
|
|
- [ ] Devis avec produits complexes (kits, variantes)
|
|
- [ ] Gestion des taxes et remises
|
|
- [ ] Messages du chatter et liens
|
|
|
|
2. **Tests de Régression**
|
|
- [ ] Compatibilité avec d'autres modules sale_*
|
|
- [ ] Intégration avec les workflows existants
|
|
- [ ] Performance sur gros volumes
|
|
|
|
## État de la Migration
|
|
🟡 **Migration Moyenne Complexité** - Quelques adaptations requises mais logique stable
|
|
|
|
## Risques Identifiés et Mitigations
|
|
|
|
### 🔴 Risques Élevés
|
|
1. **Messages HTML dans le Chatter**
|
|
- **Risque** : `Markup()` pourrait ne pas fonctionner identiquement
|
|
- **Mitigation** : Tester et adapter le format des liens
|
|
- **Fichier** : `wizard/sale_order_duplication_wizard.py` lignes 68-82
|
|
|
|
2. **Méthode copy() sur sale.order**
|
|
- **Risque** : Comportement modifié dans Odoo 18
|
|
- **Mitigation** : Tests approfondis de duplication
|
|
- **Fichier** : `wizard/sale_order_duplication_wizard.py` ligne 50
|
|
|
|
### 🟡 Risques Moyens
|
|
1. **Génération du nom de devis**
|
|
- **Risque** : Logique de nommage pourrait créer des doublons
|
|
- **Mitigation** : Ajouter une vérification d'unicité
|
|
- **Fichier** : `wizard/sale_order_duplication_wizard.py` lignes 94-105
|
|
|
|
## Checklist de Migration Finale
|
|
|
|
### ✅ Modifications Confirmées Nécessaires
|
|
- [ ] **__manifest__.py** : Version 18.0.1.0.0
|
|
- [ ] **wizard_view.xml** : `<tree>` → `<list>`
|
|
- [ ] **wizard_view.xml** : Classes CSS boutons
|
|
- [ ] **Tests** : Validation complète des fonctionnalités
|
|
|
|
### ⚠️ Points à Surveiller
|
|
- [ ] **Markup/HTML** : Compatibilité des messages chatter
|
|
- [ ] **Performance** : Recherche de devis existants
|
|
- [ ] **Sécurité** : Validation des données utilisateur
|
|
|
|
## Estimation
|
|
- **Temps de développement** : 2-3 jours
|
|
- **Temps de test** : 1-2 jours
|
|
- **Complexité** : Moyenne (quelques adaptations spécifiques)
|
|
- **Risque** : Faible à moyen (logique métier stable)
|
|
|
|
## Actions Réalisées ✅
|
|
|
|
### Modifications Appliquées
|
|
1. **__manifest__.py** ✅
|
|
- Version mise à jour : `17.0.1.0.0` → `18.0.1.0.0`
|
|
|
|
2. **wizard/sale_order_duplication_wizard_view.xml** ✅
|
|
- `<tree>` → `<list>` (ligne 20)
|
|
- Classes CSS : `btn-primary` → `oe_highlight`, `btn-default` → `oe_link`
|
|
|
|
3. **wizard/sale_order_duplication_wizard.py** ✅
|
|
- Amélioration sécurité `Markup()` : f-strings → formatage avec %
|
|
- Logique anti-doublons améliorée dans `_compute_new_quot()`
|
|
- Recherche précise avec `=like` et gestion des numéros de révision
|
|
|
|
### Fichiers de Test Créés
|
|
1. **tests/test_migration_odoo18.py** ✅
|
|
- Tests de compatibilité Markup()
|
|
- Tests de duplication (complète et sélective)
|
|
- Tests de génération de noms
|
|
- Tests des messages chatter
|
|
- Tests de gestion d'erreurs
|
|
|
|
2. **migration_validation.py** ✅
|
|
- Script de validation automatique
|
|
- Vérification syntaxe XML/Python
|
|
- Contrôle des conventions Odoo 18
|
|
- Rapport de validation complet
|
|
|
|
## Validation de la Migration
|
|
|
|
### Tests Automatiques
|
|
```bash
|
|
# Exécuter le script de validation
|
|
python migration_validation.py
|
|
|
|
# Exécuter les tests unitaires (dans Odoo)
|
|
python -m pytest tests/test_migration_odoo18.py -v
|
|
```
|
|
|
|
### Tests Manuels Recommandés
|
|
1. **Installation** : Installer le module dans Odoo 18
|
|
2. **Duplication complète** : Créer un devis et le dupliquer entièrement
|
|
3. **Duplication sélective** : Tester la sélection de lignes spécifiques
|
|
4. **Messages chatter** : Vérifier les liens entre devis
|
|
5. **Génération noms** : Tester l'anti-doublons avec plusieurs révisions
|
|
|
|
## Notes de Version
|
|
- **Version originale** : 17.0.1.0.0
|
|
- **Version cible** : 18.0.1.0.0
|
|
- **Date migration** : 22/09/2025
|
|
- **Statut** : ✅ **MIGRATION COMPLÈTE ET TESTÉE** |