2014-08-06 3 views
1

Я использую ниже код, чтобы получить идентификатор следующего заказа в MagentoКак получить следующий идентификатор заказа заказов в Magento

 $getNewOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId); 

Это прекрасно работает, но проблема для этого кода он изменяет increment_last_id Поле в таблице eav_entity_store к этому новому идентификатору заказа.

Таким образом, если ваш заказ не был обработан, идентификатор заказа уже увеличился, и, следовательно, идентификатор заказа будет потерян, как в следующий раз перед созданием заказов Magento увеличит это значение в таблице и обработает заказ.

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

Я использую этот кусок кода для создания заказов программно

+0

Вы искали? http://stackoverflow.com/questions/2195743/get-order-increment-id-in-magento –

+0

Tx Я сделал, но это не сработало в моем случае. Я программно вхожу в некоторые заказы с использованием пользовательских кодов, и решение в ссылке предназначено для заказов на страницу оформления заказа. – Pradino

ответ

2

Попробуйте это:

$entityStoreConfig = Mage::getModel('eav/entity_store')->loadByEntityStore($this->getId(), $storeId); 

$incrementInstance = Mage::getModel($this->getIncrementModel()) 
      ->setPrefix($entityStoreConfig->getIncrementPrefix()) 
      ->setPadLength($this->getIncrementPadLength()) 
      ->setPadChar($this->getIncrementPadChar()) 
      ->setLastId($entityStoreConfig->getIncrementLastId()) 
      ->setEntityTypeId($entityStoreConfig->getEntityTypeId()) 
      ->setStoreId($entityStoreConfig->getStoreId()); 

$nextId = $incrementInstance->getNextId(); 

Код взят из метода fetchNewIncrementId. Я просто опустил часть сохранения.

+0

Спасибо, что наконечник будет копать глубже. – Pradino

+0

@ Pradino. Вам не нужно копать глубже. Это точный код, который вам нужен. Оберните его методом внутри помощника или модели и используйте его. – Marius

+1

Да, просто сделал это. Я должен был добавить что-то, и все это было сделано. 'Mage :: getModel ('eav/entity_type') -> loadByCode ('order');' для получения некоторых значений. – Pradino

Смежные вопросы