我一直在使用下面的代码来获取Magento中的下一个订单ID
$getNewOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
这很好用,但此代码的问题是它将表 eav_entity_store 中的 increment_last_id 字段更改为此新订单ID。
因此,如果未处理您的订单,订单ID已经增加,因此订单ID将丢失,因为下次创建订单之前,Magento将在表格中增加此值并处理订单。
如何在不增加表中值的情况下获取下一个订单ID,当代码的后半部分创建订单时,它显然会更改此表中的值。
我正在使用这段代码以编程方式创建订单
答案 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
方法。我刚刚省略了保存部分。