Tengo un problema extraño con el número de pedido en Magento.
Recientemente, cuando se realizó un pedido en mi sitio web, apareció el número de pedido 100000350
, idealmente debería haber sido 100000370
como mis números de pedido anteriores eran 100000369
y 100000367
. He adjuntado la captura de pantalla a continuación para ello
Además, he verificado los registros de errores pero no he encontrado ninguna entrada. Estamos utilizando SagePay y PayPal como la pasarela de pago para ello.
¿Alguien puede guiarme en esto?
magento-1.7
sales-order
order-status
Diestro
fuente
fuente
Respuestas:
La primera vez que obtuve un número fuera de secuencia, tuvimos sorpresa y cierta consternación hasta que descubrí lo que estaba sucediendo. Tiene que ver con cómo Magento asigna los números de pedido de ventas.
Ahora para la explicación.
El proceso de pedido de Magento crea una cotización la primera vez que se agrega algo al carrito.
En este punto, la cotización es solo un posible pedido de cliente. No tiene un número asignado porque el cliente no se ha comprometido a pagarlo.
A medida que el cliente hace clic en el botón Continuar para pagar, ellos:
Lo que sigue es un punto importante: los clientes que eligen registrarse en el carrito son tratados como clientes invitados hasta que se completa el pedido y llegan a la página de éxito, momento en el que se crea su cuenta y se registran. sigue siendo una cotización de cliente invitado con la pérdida de tiempo de espera del carrito de la sesión si el pedido no se completa y se muestra una página de éxito.
Con un pedido con tarjeta de crédito, sucede lo siguiente cuando se hace clic en el botón Realizar pedido .
sales_flat_quote
tabla en lareserved_order_id
columna)Si la pasarela de pago de la tarjeta de crédito rechaza la transacción de la tarjeta de crédito para cualquier cliente, y el siguiente cliente realiza un pedido exitoso , se omitirá la secuencia del número de pedido de ventas debido a que el pedido rechazado se le asignó un número de pedido de venta reservado y al siguiente pedido de cliente exitoso se le asigna el siguiente número disponible.
Para los carritos de invitados (pedidos de invitados y clientes que no se registraron correctamente en el carrito) que exceden el tiempo de espera de la sesión, este número de pedido de ventas reservado se perderá cuando la sesión caduque, dejando huecos en la secuencia del pedido de ventas.
Para los clientes que iniciaron sesión antes de hacer clic en el botón Continuar , a la cotización se le asigna una identificación de cliente, por lo que si intentan hacer un pedido y descubren que se ha rechazado, pueden regresar, iniciar sesión, encontrar que el carrito todavía tiene contenido y colocar el orden, a veces mucho más tarde (el más largo hasta la fecha fue de cuatro meses). El presupuesto utilizará el número de pedido de cliente reservado asignado, lo que dará lugar a un número de pedido de cliente fuera de secuencia que se mostrará en la pantalla de gestión de pedidos de cliente.
fuente
Estaba enfrentando el mismo problema, pero fue solo cuando el servidor recibió una gran cantidad de carga. Este problema se produce porque la base de datos pasa al estado de bloqueo al convertir la cotización en orden. En una inspección adicional, descubrí que el problema era que intentaba escribir en la tabla sales_flat_order_grid dentro de la transacción justo después de insertarla en la tabla sales_flat_order. Con consultas simultáneas, provocó colisiones de bloqueo. La solución real es mover cosas de sales_flat_order_grid fuera de la transacción.
El enlace me ayudó a entender el problema.
El parche resolvió el problema por mí.
Debe eliminar la función _afterSave del Mage_Sales_Model_Abstract y agregar
Avísame si te resuelve el problema.
fuente
No estoy seguro, pero esto podría resolver su problema:
Por lo que creo, algo podría haber perturbado tu
eav_entity_store
mesa. Contiene información sobre el próximo increment_id, es decir, order_id que se utilizará. Puede haber algún módulo o código en su sistema magento que podría haberlo cambiado.Abra esta tabla y actualice la columna increment_last_id con su último ID de pedido. Tenga cuidado, que contiene el id del incremento de los demás, así como la factura, envío, etc. Para estar seguro, sólo tiene que ir a la
eav_entity_types
mesa y ver cuál es laentity_type_id
desales/order
(columnaentity_model
). En mi magento, es 5. Así que ahora vaya a laeav_entity_store
tabla y simplemente actualice el increment_id para la fila cuyoentity_type_id
es 5. Puede actualizarlo directamente a través de phpmyadmin o puede ejecutar una consulta como,Tenga en cuenta que 5 es entity_type_id en mi magento para ordenar
Puede haber muchas razones para su problema, pero creo que esto podría resolverlo.
fuente