Demandes d'évolutions : Statut de commande "abandonnée"

  • 77534.1

    17/04/2013 15:54


    Mathias
    Rang : Expert
    Bonjour,

    je pense qu'il manque un statut a une commande.
    Aujourd'hui les différents statuts sont :
    const INITIATED = "initiated";
    const IN_PROGRESS = "in_progress";
    const CANCELED = "canceled";
    const COMPLETE = "complete";
    


    Voici un cas d'usage qui pose problème :
    - j'ai la génération différée des numéros d'activée
    - j'ai le module marketing pour faire des bons de réduction

    1 - j'ajoute un produit à mon panier
    2 - je valide les étapes du parcours de paiement jusqu'à l'avant dernière où je choisi mon mode de paiement et où je peux saisir mon bon de réduction
    3 - je saisi un bon de réduction, je valide
    4 - sur la dernière étape, je choisi de revenir à l'étape précédente
    5 - je supprime mon code de réduction de ma commande
    6 - je valide
    7 - je paye ma commande
    8 - je vais dans mon compte -> mes commandes (block orderList)
    9 - je constate que j'ai 3 commandes de listées, qui ont toutes le même numéro et dont seule la dernière a le statut "en cours" les autres ont le statut "annulées".
    10 - je fais une commande entière de base
    11 - j'annule cette commande depuis le BO car disons que le client utilise son droit de rétractation.
    12 - je vais dans mon compte -> mes commandes (block orderlist)
    13 - je constate que ma dernière commande a le statut "annulée"

    Il n'y a donc pas de différence au niveau du statut de la commande entre :
    - d'une part, une commande passée, réellement annulée où des process utilisateur / fournisseurs ont été engagés,
    - d'autre part, une commande abandonnée par le système car RBS Change fonctionne de la sorte, lorsqu'un critère déterminant est modifié au sein de la commande et qui implique la génération d'un nouveau document "order".

    D'un point de vue utilisateur, c'est difficile d'expliquer ce que sont ces commandes annulées dans son espace client.

    Du coup, je suggère qu'il y ait un statut en plus de type "abandonné", qui dans le cycle de vie de la commande pourrait être symbolisé comme tel :
    initiated -> abandonnée
    initiated -> in_progress -> canceled

    je dois pouvoir réussir à trouver un contournement sur mon projet en enlevant de la requête les commande squi ont un numéro identiques ET un status annulées, mais a priori c'est valable uniquement pour les projet à généréations différée des numéros...

    (d'ailleurs au passage, j'ai un doute sur le fait que les numéros soient identiques, vous confirmez bien que c'est dû à la génération différées ?)

    Merci !

    Édité par Mathias 17/04/2013 15:56


    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 77534.2 en réponse à 77534.1 écrit par Mathias

    20/04/2013 15:11


    Mathias
    Rang : Expert
    Bon en fait il y a plus simple...
    Dans le block orderList, il suffit (après injection du block) de modifier la requête des orders.

    j'ai le besoin suivant :
    j'affiche toutes les commandes :
    - du client en cours
    - qui ont un status différent de "INITIATED"
    - qui ont une facture attachée avec un statut de paiement = SUCCESS ou FAILED. (comme ça on retrouve aussi les commandes dont le paiement a échoué).

    qui correspond à la requête suivante :
    $query = order_OrderService::getInstance()->createQuery()
            ->add(Restrictions::published())
            ->add(Restrictions::ne('orderStatus', order_OrderService::INITIATED))
            ->add(Restrictions::eq('customer.id', $customer->getId()))
            ->addOrder(Order::desc('document_creationdate'));
          $criteria1 = $query->createCriteria('bill');
          $criteria1->add(Restrictions::orExp(Restrictions::eq('status', order_BillService::SUCCESS),Restrictions::eq('status', order_BillService::FAILED)));
    
           return $query->find();



    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 77534.3 en réponse à 77534.2 écrit par Mathias

    22/04/2013 16:15


    Mathias
    Rang : Expert
    il y a un problème dans ma requête :
    - j'ai toujours les commandes annulées par le système :( car elles ont elles aussi une facture attachée. Une meilleure façon de les identifier via le champs transactionId qui ne doit pas être égal à "resetForCart"
    - j'ai aussi filtré à tort le status "WAITING"

    voici donc une meilleur approche :
    $query = order_OrderService::getInstance()->createQuery()
            ->add(Restrictions::published())
            ->add(Restrictions::ne('orderStatus', order_OrderService::INITIATED))
            ->add(Restrictions::eq('customer.id', $customer->getId()))
            ->addOrder(Order::desc('document_creationdate'));
          $criteria1 = $query->createCriteria('bill');
          $criteria1->add(Restrictions::ne('status',order_BillService::INITIATED));
          $criteria1->add(Restrictions::ne('transactionId','resetForCart'));

    Édité par Mathias 22/04/2013 16:16


    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1425 membres
Aucun membre connecté