ordre alphabétique de id incrément
Question
Je l'ai utilisé id de l'incrément de commande depuis Alphanumeric ~ CE 1.1 -. Ils sont tous mis en place en utilisant un caractère alpha dans le champ préfixe core_entity_store
Lors de l'installation et la configuration multi-magasin du temps il n'y avait pas de documentation réelle autour, nous avons donc adopté la pratique que tout est id ordre ont été préfixés par un Alpha qui représentait le magasin. Les numéros de commande généralement ressemblaient M000000003, PA000000004, etc.
Avance rapide de 5 ans pour EE 1.11 et depuis environ PE / EE 1.10 nous avons remarqué que les commandes reviennent périodiquement une erreur de SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'PA00505156' for key 'UNQ_SALES_FLAT_ORDER_INCREMENT_ID'
ou quelque chose de similaire. C'est la rare - mais mes pistes de recherche me au fait qu'une condition de course tout en se réservant le numéro de commande pourrait être due au préfixe étant alpha et non numérique
Je sais que Ashley Schroder travaillait sur ce un peu en arrière, avec une édition Pro d'un module, il a développé - http://www.aschroder.com/2010/07/easily-set-a-custom- numéro de commande en magento-avec-mon-sans-setstartordernumber extension / - Mais il ne semble pas que il y a eu beaucoup de mouvement là, comme la version pro est pas sur Magento Connect
Quelqu'un d'autre utilise alpha préfixes? Comment vous at-il effectué jusqu'à présent? Est-ce que vous voyez les mêmes erreurs?
La solution
Oui, nous avons eu ce problème aussi.
Quick fix est la suivante: allez dans app\code\core\Mage\Sales\Model\Resource\Quote.php
, dans la fonction isOrderIncrementIdUsed
remplacer la ligne
$bind = array(':increment_id' => (int)$orderIncrementId);
avec
$bind = array(':increment_id' => $orderIncrementId);
Tout devrait maintenant fonctionner.
Il est un correctif de fichier de base, mais il est possible de passer outre cette fonctionnalité avec l'extension (malheureusement jusqu'à présent nous n'avons pas eu le temps pour cela) ..
Cordialement.