Magento:取消发货订单后增加 "Qty"

标签 magento magento-1.7

我使用的是 Magento 1.7.0.2。我使用“货到付款”作为我的付款方式。我会准确地告诉您我在任何订单上遵循的步骤。下订单时(数量减少 1 件),我会为其创建发货,如果客户支付了订单总价。我为该订单创建了一张发票。

我的问题,如果下订单(数量减少 1 件),我会为此订单创建发货。如果客户拒绝付款,我打开此订单并“取消”它,在这种情况下,“数量”不会增加,那么我怎样才能增加它?

最佳答案

如果订单状态为处理中

使用“order_cancel_before”的观察者创建自定义模块(请参阅示例@ Change Magento default status for duplicated products更改<catalog_model_product_duplicate> to <order_cancel_before>

<order_cancel_before>未在 app/code/core/Mage/Sales/Model/Order.php 中定义

您可以覆盖/重写订单模型类,例如 http://phprelated.myworks.ro/how-to-override-rewrite-model-class-in-magento/

在本地模块中执行

public function cancel()
{
    if ($this->canCancel()) {
        Mage::dispatchEvent('order_cancel_before', array('order' => $this));
        $this->getPayment()->cancel();
        $this->registerCancellation();

        Mage::dispatchEvent('order_cancel_after', array('order' => $this));
    }

    return $this;
}

或者您可以在模型中创建一个新方法increaseProductQty(),并将下面的代码复制到其中(这样您就不需要观察者)。然后将行 Mage::dispatchEvent('order_cancel_before'... 替换为 $this->increaseProductQty()

在你的观察者方法中(伪代码)

$curr_date = date('Y-m-d H:i:s');
$order = $observer->getEvent()->getOrder();

foreach ($order->getItemsCollection() as $item) 
{ 
    $productId  = $item->getProductId();
    $qty = $item->getQty();

    // you need to check order status to make sure it processing
    //$order->getStatus() (assuming you are canceling entire order)
    //$order->getPayment();

    $product = Mage::getModel('catalog/product')->load($product_id);
    $stock_obj = Mage::getModel('cataloginventory/stock_item')->load($product_id);
    $stockData = $stock_obj->getData();
    $product_qty_before = (int)$stock_obj->getQty();
    $product_qty_after = (int)($product_qty_before + $qty); 
    $stockData['qty'] = $product_qty_after;

    $productInfoData = $product->getData();
    $productInfoData['updated_at'] = $curr_date;
    $product->setData($productInfoData);
    $product->setStockData($stockData);
    $product->save();
}

如果您在更新库存时遇到问题,请参阅 Set default product values when adding new product in Magento 1.7

引用http://pragneshkaria.com/programatically-change-products-quantity-after-order-cancelled-magento/

如果订单状态为待处理

查看系统>配置>库存

取消订单时将商品状态设置为有货 - 控制订单取消时待处理订单中的产品是否自动返回库存。范围:商店 View 。

了解更多@

How to Manage Magento Store Inventory?

ADMIN: System → Configuration → Inventory Tab

关于Magento:取消发货订单后增加 "Qty",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330140/

相关文章:

magento - 在 Magento 中保存大量属性选项标签的问题

configuration - Magento 1.7 : toolbar/pager. phtml : getShowAmounts/getShowPerPage-> Where can I configure this?

magento - 无法修改 Magento 事件观察者中的响应,即使观察者正在触发

html - 如何为电子商务商店创建产品配置器?

php - Magento中调用第二个图片URL实现鼠标悬停换图功能

php - Magento 更改处理费算法

magento - 如何 'force' Magento只加载一个模板

magento - 如何从 Magento 的产品详细信息页面中删除数量框?

.htaccess - 将 index.php 重定向到 .htaccess 中的根目录

magento - 更改 Magento 中的结账页面标题