Идентификаторы приращения буквенно-цифрового порядка

magento.stackexchange https://magento.stackexchange.com/questions/1520

  •  16-10-2019
  •  | 
  •  

Вопрос

Я использую буквенно-цифровые идентификаторы приращения порядка с ~ CE 1.1 - все они настроены с использованием буквенного символа в поле префикса core_entity_store.

В то время не существовало реальной документации, касающейся настройки и работы с несколькими магазинами, поэтому мы приняли практику, согласно которой все идентификаторы заказов начинались с альфа-символа, представляющего магазин.Номера заказов обычно выглядели как M000000003, PA000000004 и т.д.

Перенесемся на 5 лет вперед до EE 1.11, и примерно с PE / EE 1.10 мы заметили, что заказы периодически возвращают SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'PA00505156' for key 'UNQ_SALES_FLAT_ORDER_INCREMENT_ID' ошибка или что-то подобное.Это случается нечасто, но мои исследования приводят меня к тому факту, что условие гонки при резервировании идентификатора заказа может быть связано с тем, что префикс является буквенным, а не числовым.

Я знаю, что Эшли Шредер некоторое время назад работал над этим с разработанным им модулем Pro Edition - http://www.aschroder.com/2010/07/easily-set-a-custom-order-number-in-magento-with-my-free-setstartordernumber-extension/ - Но не похоже, что там произошло много изменений, поскольку pro-версии нет в Magento Connect.

Кто-нибудь еще использует альфа-префиксы?Как это работало для вас до сих пор?Видите ли вы те же ошибки?

Это было полезно?

Решение

Да, у нас тоже была эта проблема.

Быстрое решение заключается в следующем:перейдите в in app\code\core\Mage\Sales\Model\Resource\Quote.php, в функции isOrderIncrementIdUsed замените строку

$bind      = array(':increment_id' => (int)$orderIncrementId); 

с

$bind      = array(':increment_id' => $orderIncrementId);

Теперь все должно сработать.

Это исправление основного файла, но можно переопределить эту функциональность с помощью расширения (к сожалению, до сих пор у нас не было на это времени)..

С уважением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top