Confusión con la identificación de la orden, la identificación del incremento de la orden y no obtengo la identificación del pedido como 20001201


28

Estoy un poco confundido con la identificación de la orden y la identificación del incremento de la orden , entonces, ¿alguien puede ayudarme a comprender la diferencia entre estos dos?

Tengo un observador para sales_order_place_after donde guardo los detalles de ventas en una tabla personalizada.

Pero con

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

Obtengo los identificadores de pedido como identificadores normales como 112 o 113 o 110, etc.no como 20001201

Entonces, ¿cuál es el ID de orden real, 20001201 o 112?

Necesito procesar aún más los datos de pedido en función de esta identificación de pedido, uso 112, 113, etc. y funciona, pero necesito aclarar esto.

Respuestas:


23

La diferencia es:

  • order_id es el ID de pedido interno de Magento
  • ID de incremento de pedido es la ID que usted le comunica a su cliente

Puede cargar fácilmente un pedido utilizando el interno order_id:

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

PD: si lo necesita, puede obtener fácilmente el ID de incremento de un pedido cargado:

$order->getIncrementId();

1
¿Quieres decir que el desarrollador usa la identificación interna y los clientes y otros usan Increment_id?
Charlie

Charlie, la publicación de Marius a continuación diferencia entre los dos, y la respuesta de mpaepper en realidad muestra el método que se solicita en un pedido para devolver el ID de incremento (que es efectivamente el 'ID de pedido' en la vista de administrador y en el cliente).
Joshua Chavanne

26

id= el sales_flat_ordervalor de la clave primaria de la tabla. Esto se incrementa automáticamente para cada pedido que recibe en su tienda. Suele comenzar desde 1 y sube.

increment id= un número "fácil de usar" generado antes de realizar el pedido. Debe ser único y se utiliza como método de pago en línea como referencia (pero no solo).
La identificación de incremento por defecto se ve así.

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

El número de ceros es variable. Se agrega usando str_padpara que la longitud de la identificación de incremento sin la identificación de la tienda sea 8.


¿Te importa mi nueva pregunta, pero el primer byte no es un valor de prefijo de la tabla EAV y no store_view_id?
someGuyOnTheWeb

44
@someGuyOnTheWeb. Bueno ... si y no. Técnicamente, el prefijo (no solo el primer byte ... He trabajado en proyectos que tenían un prefijo de 2 dígitos) proviene de la tabla eav_entity_store. Pero para el primer orden no hay registro en esa tabla. Entonces uno es creado. Cuando se crea, la identificación de la tienda se almacena como increment_prefix. Vea cómo funciona en el método Mage_Eav_Model_Entity_Type::fetchNewIncrementId. A partir de la línea: if (!$entityStoreConfig->getId()) {.
Marius

5

Un pedido de ventas contiene dos valores, entity_id (Id. De pedido) e increment_id (Id. De incremento de pedido). Entity_id es la clave principal en la tabla de pedidos. Esto significa que lo usa para cargar la entidad de pedido real. Vea abajo

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

Y pasar

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

El increment_id es normalmente un número más amigable que a menudo es específico del sitio web / tienda, es decir, 20001201 el 2 en el frente a menudo significará que es un pedido de su segunda tienda / sitio web (no puedo recordar cuál). Esto a menudo se conoce como el ID de orden real. Puede cargar una entidad de pedido utilizando este increment_id

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

Y pasar

$order->getRealOrderId(); or $order->getIncrementId();

0

La order_id, que creo que es la misma entity_id, es la clave principal en la tabla sales_order utilizada para unir todas las tablas eav. Se usa internamente en magento.

order_increment_id se utiliza para mostrar al cliente

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.