2010-07-12 23 views
11

He encontrado que hay dos propiedades diferentes de la orden en Magento API disponibles.ID de orden de la API de Magento frente al ID de incremento

order_id y order_increment_id. Para el orden de la muestra, pueden ser algo como order_increment_id = 100000080 y order_id = 81.

La pregunta es: ¿Cuál es la diferencia entre ellos? ¿Cómo se los considera usados? En la interfaz de usuario de la tienda web veo que mi pedido tiene "Order #" = 100000080. ¿Para qué sirve la propiedad order_id?

Respuesta

12

He estado trabajando con la API de magento desde hace casi un año y puedo asegurarle que la única ID que debe usar es la order_increment_id. Se usa como ID principal en la llamada order.info. Lo mismo es cierto para las API de facturación y envío: también usan el ID de incremento apropiado como el principal.

order_id, que creo que es lo mismo que entity_id, es la clave principal en la tabla sales_order que se utiliza para unir todas las tablas eav juntas. Se usa internamente en magento, pero al trabajar con la API no necesita preocuparse.

+0

Esto es cierto para la API SOAP. Si está utilizando la API REST, quiere la ID de la entidad, no la ID del incremento. http://devdocs.magento.com/guides/m1x/api/rest/Resources/Orders/sales_orders.html – txyoji

+0

La respuesta no es correcta para Magento 2.1. Realmente Magento 2.1 usa 'entity_id' para las llamadas al – burzhuy

+0

Como se mencionó en otra parte, si está obteniendo SalesOrderShipments, necesita filtrar por el order_id, no el increment_id.En nuestro sistema almacenamos ambos porque ambos son necesarios. – David

4

Supongo que order_increment_id se usa para mostrar al cliente, y order_id es para uso interno. Las personas encuentran que los ID de bajo pedido son extraños, están acostumbrados a ver 10 dígitos más o menos al buscar los ID de pedido.

1

Lo que silvo ha dicho es cierto y es por eso que hay un método llamado getLastRealOrderId();

1

Lo que dice Silvo es correcto; sin embargo, hay algunas circunstancias en las que se hace referencia a order_id en la API y es la única referencia que tiene para volver al pedido.

Por ejemplo, si generó una lista de SalesOrderInvoices o SalesOrderShipments, la referencia de regreso a la orden, de los objetos en la lista, se da como la order_id, no la order_increment_id. Si bien puede obtener SalesOrderEntity del order_increment_id directamente a través de SalesOrderInfoRequest, deberá buscar ese order_id utilizando SalesOrderListRequest con un filtro en "order_id".

0

Para magento 2.1 (comportamiento de pehaps no es lo mismo para otras versiones?!) Debe usar entity_id. Lo revisé para SOAP API. Algunas veces entityId se parece a incrementId y esto puede llevar a malentendidos.

Por ejemplo

  • trato de llamar SalesOrderRepositoryV1GetList con el parámetro id=275
  • recibieron orden tiene <entityId>275</entityId> <incrementId>000000276</incrementId>
  • i intentar llamar SalesOrderRepositoryV1GetList con el parámetro id=000000276
  • recibieron orden tiene <entityId>276</entityId> <incrementId>000000277</incrementId>

En la interfaz de usuario verá 000000277 para 275 y 000000276 para 276

Cuestiones relacionadas