Удалить все заказы старше определенной даты с помощью запроса бд
Мне нужно удалить около 7500 заказов и сохранить заказы с 26.08.2016 и далее. Я хотел бы сделать это с помощью запроса к бд. Возможно ли это или я должен придерживаться панели администратора?
2 answers
Вы можете попробовать это, но сначала сделайте резервную копию на случай, если я ошибаюсь.
Я не рекомендую использовать прямые запросы, потому что вы можете получить данные зомби.
Вы можете создать сценарий:
Сначала сообщите скрипту, что вы находитесь в административной области:
Mage::register('isSecureArea', true);
Затем получите приказы:
$orders = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('created_at', array('lt' => '2016-08-26'));
Теперь для каждого заказа вам необходимо удалить счета-фактуры, элементы счетов-фактур, отгрузки, элементы отгрузки, кредитные примечания, элементы кредитных примечаний, элементы заказа, ссылки на платежи, предложения, предложения и в завершите сам заказ.
foreach ($orders as $order) {
//delete invoices
$invoices = $order->getInvoiceCollection();
foreach ($invoices as $invoice) {
//invoice items will be deleted as well
$invoice->delete();
}
//delete invoices
$shipments = $order->getShipmentsCollection();
foreach ($shipments as $shipment) {
//shipment items will be deleted as well
$shipment->delete();
}
//delete credit notes
$creditMemos = $order->getCreditmemosCollection();
foreach ($creditMemos as $creditMemo) {
//credit note items will be deleted as well
$creditMemo->delete();
}
//delete payment references
$payments = $order->getPaymentsCollection();
foreach ($payments as $payment) {
$payment->delete();
}
//delete quote
$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
if ($quote->getId()) {
foreach ($quote->getAllItems() as $item) {
$item->delete();
}
$quote->delete();
}
//delete the order. items will be deleted as well. So does addresses.
$order->delete();
}
Вы можете использовать расширение для удаления заказа, чтобы удалить заказ. Просто выберите заказ между датами, отфильтруйте его. Выберите весь этот заказ и выберите действие в поле выбрать, чтобы удалить заказ и отправить.
Расширение:: https://www.magentocommerce.com/magento-connect/delete-orders-6.html