【问题标题】:Magento Ordered Items deleteMagento 已订购商品删除
【发布时间】:2012-09-13 09:34:46
【问题描述】:

我必须更新订单,如果订单中有多个,则从订单中删除一些项目。然后必须更新订单。

现在我找到了所有订单商品所在的表:sales_flat_order_item。

$items = $order->getAllItems();

    foreach($items as $item){

        if($item->getParentItemId() == '' || $item->getParentItemId() == null){

            $product_id = $item->getProductId();
            if($product_id == $booking_product_id){             

                         // this item have to be deleted

            }

        }

    }

$order->save();

有什么建议吗?

【问题讨论】:

  • 总体目标是什么,您为什么要尝试从订单中删除商品?
  • 这是客户的要求,他可以从他的订单中取消一个项目,我单独显示所有订单项目。
  • 我正在尝试 $item->delete() 之类的东西。现在一切顺利。然后我通过减去最近从订单中删除的商品价格来更新订单总价。

标签: magento orders


【解决方案1】:

这样我就成功了。

    $base_grand_total = $order->getBaseGrandTotal();
    $base_subtotal = $order->getBaseSubtotal();
    $grand_total = $order->getGrandTotal();
    $subtotal = $order->getSubtotal();

    $base_subtotal_incl_tax = $order->getBaseSubtotalInclTax();
    $subtotal_incl_tax = $order->getSubtotalInclTax();
    $total_item_count = $order->getTotalItemCount();

    $items = $order->getAllItems(); 
    foreach($items as $item){       

        if($item->getParentItemId() == '' || $item->getParentItemId() == null){

            $product_id = $item->getProductId();
            if($product_id == $booking_product_id){             

            //remove item price from total price of order
            $item_price = $item->getPrice();
            $item->delete();

            $order->setBaseGrandTotal($base_grand_total-$item_price);
            $order->setBaseSubtotal($base_subtotal-$item_price);
                $order->setGrandTotal($grand_total-$item_price);
            $order->setSubtotal($subtotal-$item_price);

            $order->setBaseSubtotalInclTax($base_subtotal_incl_tax-$item_price);
            $order->setSubtotalInclTax($subtotal_incl_tax-$item_price);
            $order->setTotalItemCount($total_item_count-1);
            $order->save(); 
            }

        }

    }

【讨论】:

  • 通过使用 $item->delete(),我删除了该项目,然后通过从订单价格中删除该项目价格,我更新了订单总计。可能对任何人都有帮助。
【解决方案2】:

从现有订单中删除项目。

从magento root作为外部代码运行以下代码行:

  1. 另存为“order_item_remove.php”
  2. http://example.com/order_item_remove.php 运行它

代码块如下:

<?php

require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app();

try{
$_order = Mage::getModel('sales/order')->loadByIncrementId('100000011'); // Order Increment Id
$items = $_order->getAllItems(); 

foreach ($items as $item){
    Mage::log('All items ' . print_r($item->getData(), true), null, 'items_data.log');
    $base_grand_total = $_order->getBaseGrandTotal();

    $base_subtotal = $_order->getBaseSubtotal();
    $base_tva = $_order->getBaseTaxAmount();

    $grand_total = $_order->getGrandTotal();

    $subtotal = $_order->getSubtotal();
    $tva = $_order->getTaxAmount();


    $base_subtotal_incl_tax = $_order->getBaseSubtotalInclTax();

    $subtotal_incl_tax = $_order->getSubtotalInclTax();

    $total_item_count = $_order->getTotalItemCount();
Mage::log('Items ' . $item->getSku(), null, 'items_data.log');


    if($item->getSku()=='SAMPLEKIT'){
        $item_price = $item->getPrice();
        $item_tva = $item->getTaxAmount();
        Mage::log('Item deleted ' . $item->getSku(), null, 'items_data.log');
        $item->delete();
        $_order->setBaseGrandTotal($base_grand_total-$item_price-$item_tva);

        $_order->setBaseSubtotal($base_subtotal-$item_price);

        $_order->setBaseTaxAmount($base_tva-$item_tva);

        $_order->setGrandTotal($grand_total-$item_price-$item_tva);

        $_order->setSubtotal($subtotal-$item_price);

        $_order->setTaxAmount($tva-$item_tva);


        $_order->setBaseSubtotalInclTax($base_subtotal_incl_tax-$item_price);

        $_order->setSubtotalInclTax($subtotal_incl_tax-$item_price);

        $_order->setTotalItemCount(count($items)-1);

        $_order->save(); 
    }

}
echo "success"; 
} catch(Exception $e) {
    echo "failed";
}

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 2015-07-05
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多