如何在Magento中获取订单的下一个订单ID

时间:2014-08-06 02:39:18

标签: php magento magento-1.7

我一直在使用下面的代码来获取Magento中的下一个订单ID

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

这很好用,但此代码的问题是它将表 eav_entity_store 中的 increment_last_id 字段更改为此新订单ID。

因此,如果未处理您的订单,订单ID已经增加,因此订单ID将丢失,因为下次创建订单之前,Magento将在表格中增加此值并处理订单。

如何在不增加表中值的情况下获取下一个订单ID,当代码的后半部分创建订单时,它显然会更改此表中的值。

我正在使用这段代码以编程方式创建订单

1 个答案:

答案 0 :(得分: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方法。我刚刚省略了保存部分。