除了默认的 Magento 状态之外,我还创建了一些自定义状态。
当我拿到一个要发送到生产的订单时,我通过 API 在 Magento 中设置状态。问题是,如果订单设置为这些自定义状态之一,它不会在客户的“我的帐户订单历史记录”区域中显示该订单。
我需要做什么才能在我的帐户订单历史记录区域中显示这些订单,这些订单当前设置了我的自定义状态?
出于疑问,此状态称为“新状态”,我已将其分配给处理状态。
除了默认的 Magento 状态之外,我还创建了一些自定义状态。
当我拿到一个要发送到生产的订单时,我通过 API 在 Magento 中设置状态。问题是,如果订单设置为这些自定义状态之一,它不会在客户的“我的帐户订单历史记录”区域中显示该订单。
我需要做什么才能在我的帐户订单历史记录区域中显示这些订单,这些订单当前设置了我的自定义状态?
出于疑问,此状态称为“新状态”,我已将其分配给处理状态。
简短的回答...将其与app/code/core/Mage/Sales/config.xml
或(更好地)将其添加到config.xml
您自己的本地模块中。修改核心文件是不受欢迎的(但会发生)。
更改new_status
为您的状态。
<config>
<global>
<sales>
<order>
<statuses>
<new_status translate="label">
<label>New Status</label>
</new_status>
</statuses>
<states>
<new_status translate="label">
<label>New Status</label>
<statuses>
<new_status default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</new_status>
</states>
</order>
</sales>
</global>
</config>
长答案:Mage_Sales_Block_Order_History
具体看,抢单集合的那块
$orders = Mage::getResourceModel('sales/order_collection')
->addFieldToSelect('*')
->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
->setOrder('created_at', 'desc')
第二addFieldToFilter
个在一组“可见”状态中查找顺序状态。这些状态集由 拉出Mage_Sales_Order_Config
,并在配置中设置。有关配置更改,请参见上文。您可以查看Mage_Sales_Order_Config
该功能_getStates()
以了解它如何从配置中提取这些内容。
Suppose your custom order status is paymentsuccess in magento order_status table
<config>
<global>
<sales>
<order>
<statuses>
<paymentsuccess translate="label">
<label>Payment Successful</label>
</paymentsuccess>
</statuses>
<states>
<paymentsuccess translate="label">
<label>Payment Successful</label>
<statuses>
<paymentsuccess default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</paymentsuccess>
</states>
</order>
</sales>
</global>
</config>