3

如何删除意外创建的货件?我知道没有办法通过管理员来完成,但我正在尝试弄清楚我需要做些什么才能将订单连同所有旧的发货信息一起恢复到“处理中”状态,以便可以发货晚些时候。我希望这可以通过 PHP 以编程方式完成,甚至直接在 MySQL 中完成。

仅供参考,我使用的是 Magento 1.1.8 版。

4

4 回答 4

17

尝试

require_once  'app/Mage.php';

Varien_Profiler::enable();
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
umask(0);
Mage::app('default');
Mage::register('isSecureArea', 1);


//Update Order id
$orderId = xyz;


$order = Mage::getModel('sales/order')->load($orderId);

// check if has shipments
if(!$order->hasShipments()){
    die('No Shipments');
}

//delete shipment
$shipments = $order->getShipmentsCollection();
foreach ($shipments as $shipment){
    $shipment->delete();
}

// Reset item shipment qty
// see Mage_Sales_Model_Order_Item::getSimpleQtyToShip()
$items = $order->getAllVisibleItems();
foreach($items as $i){
   $i->setQtyShipped(0);
   $i->save();
}

//Reset order state
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Undo Shipment');
$order->save();

echo 'Done';
于 2014-08-15T16:27:43.137 回答
0
$shipment = Mage::getModel('sales/order_shipment')->load($shippingOrderId);
$shipment->delete();

我认为这可行。我没试过。

于 2012-11-14T04:37:12.287 回答
0

我最终购买了下面的扩展,它做得很好。尽管它没有说它支持 1.3 之前的版本,但它在我的 v1.1.8 设置上完美运行。

http://www.magentocommerce.com/magento-connect/delete-shipment-6498.html

于 2012-11-19T15:18:49.693 回答
0

假设您已将订单全部发货,但并非有意。只需删除 INVOICE。它将删除发票和任何货物......SHIPMENTS 复数!

因此,您必须小心,如果您有其他货物,则需要重新创建它们。然后重新开具发票。然后就像您从未运送过任何东西一样,然后您可以运送您最初需要的任何数量。

于 2016-01-28T16:00:11.803 回答