Import des ventes
Ce workflow documente l'ingestion des commandes Menzzo Magento 2 dans LogiDAV.
Intent
Importer les nouvelles commandes Magento et maintenir la synchronisation des statuts entre Magento et LogiDAV.
Déclencheur
menzzo:v2:sales— toutes les 10 minutes (nouvelles commandes)menzzo:v2:sales:update— toutes les 30 minutes (synchronisation des statuts)
Composants principaux
| Composant | Fichier | Rôle |
|---|---|---|
SaleCommand | src/AppBundle/Command/Sale/V2/SaleCommand.php | Import des nouvelles commandes |
UpdateSaleCommand | src/AppBundle/Command/Sale/V2/UpdateSaleCommand.php | Synchronisation des statuts |
SaleService | src/AppBundle/Services/SaleService.php | Logique d'import et d'upsert |
ProductQtyLogService | src/AppBundle/Services/ProductQtyLogService.php | Journalisation des mutations de stock |
Workflow d'import des nouvelles commandes
Workflow de synchronisation des statuts
Effets de bord
Persistance
- Création ou mise à jour de
SaleetSaleProduct - Mise à jour du curseur de dernier ID Magento
- Écriture d'entrées
SaleLogpour la synchronisation
Stock
- Décrémentation du stock via
ProductQtyLogService::productChangeLog(..., 'sale')quand une vente passe enprocessingoucomplete - La journalisation se produit à l'import et à la mise à jour de statut
Client
- Gestion des RDV pour les ventes éligibles
- Tentative d'envoi d'email
RETRAIT(actuellement désactivé —sendRetraitEmail()retourne immédiatement)
Modes d'échec
Curseur décalé
menzzo:v2:sales avance le curseur après chaque commande importée avec succès. Si une commande échoue, elle est ignorée et le traitement continue. Cela nécessite une stratégie de rejeu pour les commandes ignorées.
Rejeu partiel
SaleService::addOrder() est un upsert. Rejouer un payload n'est pas un no-op : il peut mettre à jour le statut, ajouter des articles manquants, ou déclencher des mutations de stock.
Dérive de statut amont
menzzo:v2:sales:update réconcilie LogiDAV avec Magento, surtout quand les événements de paiement arrivent en retard. Le pass delta de 48h rattrape les changements hors-bande.
Deadlocks / EntityManager
L'import dégrade les deadlocks et erreurs EntityManager en warnings et continue le batch.
Chemin de débogage
- Commandes manquantes — vérifier le curseur dans la config (
SaleService::getLastMagentoId()) - Statut incorrect — consulter les
SaleLogpour la vente concernée - Stock incohérent — vérifier les logs de
ProductQtyLogServicepour les mutations - Concurrence — vérifier les logs de
LockableTraitpour les exécutions bloquées - Rejeu — relancer manuellement avec le bon curseur ou en forcant l'ID
Commandes associées
menzzo:v2:sales— import principalmenzzo:v2:sales:update— synchronisation des statutsmenzzo:v2:sales:payment— traitement des paiementssale:expedition:import— import des expéditions