您需要覆盖 increment_id 值。因为您想使用真正的 invoice_id 和真正的 customer_id,所以我认为的第一个解决方案是您需要在资源模型的 _afterSave() 方法中覆盖它。对于发票 fe,您可以使用 _beforeSave() 和 _afterSave() 方法覆盖本地模块中的 Mage_Sales_Model_Mysql4_Order_Invoice 模型(不要编辑核心文件!):
protected function _beforeSave(Mage_Core_Model_Abstract $object)
{
$this->_useIncrementId = false;
return parent::_beforeSave($object);
}
protected function _afterSave(Mage_Core_Model_Abstract $object)
{
if (!$object->getIncrementId()) {
$newIncrementId = "E" . date("-ym-") . $object->getId();
$this->_getWriteAdapter()->update(
$this->getMainTable(),
array('increment_id' => $newIncrementId),
'entity_id = ' . $object->getId()
);
}
return parent::_afterSave($object);
}
对于客户来说,逻辑可能有点不同,但想法是一样的。希望对你有帮助 ;)