Confusion avec l'ID de commande, l'ID d'incrément de commande et je ne reçois pas l'ID de commande comme 20001201

28

Je suis un peu confus avec l' ID de commande et l' ID d' incrément de commande , alors quelqu'un peut-il m'aider à comprendre la différence entre ces deux?

J'ai un observateur pour sales_order_place_after où je stocke les détails des ventes dans un tableau personnalisé.

Mais avec

$orderId = $observer->getEvent()->getOrder()->getId();

Je reçois les identifiants de commande comme des identifiants normaux comme 112 ou 113 ou 110, etc. pas comme 20001201

Alors, quel est le véritable identifiant de commande, 20001201 ou 112?

Je dois continuer à traiter les données de commande en fonction de cet identifiant de commande, j'utilise 112, 113 etc. et cela fonctionne, mais je dois clarifier cela.

Charlie
la source

Réponses:

23

La différence est:

  • order_id est l'ID de commande Magento interne
  • l'ID d'incrément de commande est l'ID que vous communiquez à votre client

Vous pouvez facilement charger une commande en utilisant l'id interne order_id:

Mage::getModel('sales/order')->load($orderId);

PS: Si vous en avez besoin, vous pouvez facilement obtenir l'ID d'incrémentation d'une commande chargée:

$order->getIncrementId();
mpaepper
la source
1
Vous voulez dire que le développeur utilise l'ID et les clients internes et que les autres utilisent Increment_id?
Charlie
Charlie, le post de Marius ci-dessous fait la différence entre les deux, et la réponse de mpaepper montre en fait la méthode qui est appelée sur une commande pour renvoyer l'ID d'incrément (qui est en fait l'`` ID de commande '' dans la vue d'administration et dans le client).
Joshua Chavanne
26

id= la sales_flat_ordervaleur de la clé primaire de la table. Ceci est auto-incrémenté pour chaque commande que vous recevez dans votre boutique. Il commence généralement à partir de 1 et monte.

increment id= un numéro "convivial" généré avant la passation de la commande. Il doit être unique et utilisé par les méthodes de paiement en ligne comme référence (mais pas seulement).
L'ID d'incrément par défaut ressemble à ceci.

                  100000104
                  ||   || |
 store view id ---||   || |
                   |---||-|
                     |   |----- an increment number kept in the table eav_entity_store
    a lot of zeros --|

Le nombre de zéros est variable. Il est ajouté à l'aide de str_padsorte que la longueur de l'ID d'incrémentation sans l'ID de magasin soit 8.

Marius
la source
Faites attention à ma nouvelle question, mais le premier octet n'est-il pas une valeur de préfixe de la table EAV et non store_view_id?
someGuyOnTheWeb
4
@someGuyOnTheWeb. Eh bien ... oui et non. Techniquement, le préfixe (pas seulement le premier octet ... j'ai travaillé sur des projets qui avaient un préfixe à 2 chiffres) vient du tableau eav_entity_store. Mais pour la première commande, il n'y a aucun enregistrement dans ce tableau. Donc, un est créé. Lorsqu'il est créé, l'ID de magasin est stocké sous increment_prefix. Voyez comment cela fonctionne dans la méthode Mage_Eav_Model_Entity_Type::fetchNewIncrementId. A partir de la ligne: if (!$entityStoreConfig->getId()) {.
Marius
5

Une commande client contient deux valeurs, entity_id (Order Id) et increment_id (Order Increment Id). L'entité_id est la clé primaire de la table des commandes. Cela signifie que vous l'utilisez pour charger l'entité de commande réelle. Voir ci-dessous

Mage::getModel("sales/order")->load($enityId);

Et se débrouiller

$order->getId(); ou $order->getEntityId();

L'incrément_id est normalement un numéro plus convivial qui est souvent spécifique à un site Web / magasin, c.-à-d. 20001201 le 2 en face signifie souvent que c'est une commande de votre deuxième magasin / site Web (je ne me souviens pas lequel). Ceci est souvent appelé l'identifiant de commande réel. Vous pouvez charger une entité de commande à l'aide de cet increment_id

Mage::getModel("sales/order")->loadByIncrementId($incrementId);

Et se débrouiller

$order->getRealOrderId(); or $order->getIncrementId();
Danny Dev Nz
la source
0

La order_id, qui, je crois, est la même que entity_id, est la clé primaire de la table sales_order utilisée pour joindre toutes les tables eav ensemble. Il est utilisé en interne dans magento.

order_increment_id est utilisé pour afficher au client

TBI Infotech
la source