Aller au contenu principal

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

ComposantFichierRôle
SaleCommandsrc/AppBundle/Command/Sale/V2/SaleCommand.phpImport des nouvelles commandes
UpdateSaleCommandsrc/AppBundle/Command/Sale/V2/UpdateSaleCommand.phpSynchronisation des statuts
SaleServicesrc/AppBundle/Services/SaleService.phpLogique d'import et d'upsert
ProductQtyLogServicesrc/AppBundle/Services/ProductQtyLogService.phpJournalisation 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 Sale et SaleProduct
  • Mise à jour du curseur de dernier ID Magento
  • Écriture d'entrées SaleLog pour la synchronisation

Stock

  • Décrémentation du stock via ProductQtyLogService::productChangeLog(..., 'sale') quand une vente passe en processing ou complete
  • 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

  1. Commandes manquantes — vérifier le curseur dans la config (SaleService::getLastMagentoId())
  2. Statut incorrect — consulter les SaleLog pour la vente concernée
  3. Stock incohérent — vérifier les logs de ProductQtyLogService pour les mutations
  4. Concurrence — vérifier les logs de LockableTrait pour les exécutions bloquées
  5. Rejeu — relancer manuellement avec le bon curseur ou en forcant l'ID

Commandes associées

  • menzzo:v2:sales — import principal
  • menzzo:v2:sales:update — synchronisation des statuts
  • menzzo:v2:sales:payment — traitement des paiements
  • sale:expedition:import — import des expéditions