如何删除意外创建的货件?我知道无法通过管理员执行此操作,但我正试图弄清楚我需要做什么才能将订单恢复到“处理”状态以及所有旧的货件信息,以便它可以发货晚些时候。我希望这可以通过PHP编程,甚至直接在MySQL中完成。如何从Magento中删除意外创建的货件?
仅供参考,我正在使用Magento 1.1.8版。
如何删除意外创建的货件?我知道无法通过管理员执行此操作,但我正试图弄清楚我需要做什么才能将订单恢复到“处理”状态以及所有旧的货件信息,以便它可以发货晚些时候。我希望这可以通过PHP编程,甚至直接在MySQL中完成。如何从Magento中删除意外创建的货件?
仅供参考,我正在使用Magento 1.1.8版。
我最终购买了下面这个技巧,做得非常漂亮。尽管它没有说它支持1.3之前的版本,但它在我的v1.1.8的设置上完美运行。
http://www.magentocommerce.com/magento-connect/delete-shipment-6498.html
$shipment = Mage::getModel('sales/order_shipment')->load($shippingOrderId);
$shipment->delete();
我认为这是有效的。我没有尝试过。
尝试
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';
谢谢,正是我所需要的。 – mniess
工程像魔术。 (CE Magento 1.9.1) –
伟大的帮助。只是一个改变。在我的情况下,装运已创建,但发票未完成,因此我将 Mage_Sales_Model_Order :: STATE_PROCESSING更改为Mage_Sales_Model_Order :: STATE_NEW –
说你全部发运的订单,并没有故意的。只需删除INVOICE。它将删除发票和任何发货...... SHIPMENTS复数!
所以你必须小心,如果你有其他货物,你需要重新创建它们。然后再次发票。然后就像你从未发货一样,然后你可以运送任何你最初需要的数量。
此答案需要澄清。默认情况下,Magento的管理面板没有发票的“删除”选项。您是否指示OP以编程方式删除发票? – Eric
这与编程有什么关系? – Pier
因为我正在寻找一种使用PHP或直接通过MySQL以编程方式执行此操作的方法。 –