質問
私は、〜CE 1.1以来、英数字の注文増分IDを使用しています - それらはすべて、のプレフィックスフィールドでアルファ文字を使用してセットアップされています core_entity_store
.
当時、セットアップとマルチストアのセットアップを取り巻く実際のドキュメントはなかったため、すべての注文IDにストアを表すアルファが付いているという練習を採用しました。注文番号は通常、M000000003、PA000000004などのように見えました。
EE 1.11までの5年間を早送りし、約PE/EE 1.10以来、注文は定期的に戻ることに気付きました SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'PA00505156' for key 'UNQ_SALES_FLAT_ORDER_INCREMENT_ID'
エラーか似たようなもの。それはまれです - しかし、私の研究は、注文IDを予約しながらレース条件がプレフィックスがアルファであり、数値ではないことが原因である可能性があるという事実に私を導きます。
アシュリー・シュローダーがしばらく前にこれに取り組んでいたことを知っています。彼が開発したモジュールのプロエディション - http://www.aschroder.com/2010/07/easily-set-a-custom-order-nmumber-in-magento-with-free-setstartordernumber-number-extion/ - しかし、ProバージョンはMagento Connectにはないため、そこには多くの動きがあったようには見えません。
他の誰かがアルファプレフィックスを使用していますか?これまでのところ、どのように実行されましたか?同じエラーが表示されますか?
解決
はい、この問題もありました。
クイックフィックスは次のとおりです app\code\core\Mage\Sales\Model\Resource\Quote.php
, 、関数内 isOrderIncrementIdUsed
行を交換します
$bind = array(':increment_id' => (int)$orderIncrementId);
と
$bind = array(':increment_id' => $orderIncrementId);
すべてが今機能するはずです。
これはコアファイルの修正ですが、この機能を拡張でオーバーライドすることが可能です(残念ながらこれまでの時間はありませんでした)。
よろしく。