2016-06-16 1 views
8

Пожалуйста, объясните мне правильный способ удалить тестовые заказы на веб-сайте Magento2. Я удалил все записи из таблицы «sales_order», но все же ордера существуют в бэкэнд.Как удалить тестовые заказы от Magento2

+0

Лучшего и простого в использовании расширение, https://magecomp.com/magento-2-delete-orders.html –

ответ

22

Испытано в Magento 2.1.0

Безопасен: сделайте резервную копию SQL первым.

Используйте SQL ниже в соответствии с вашими потребностями:

SET FOREIGN_KEY_CHECKS=0; 

# Clean order history 
TRUNCATE TABLE `sales_bestsellers_aggregated_daily`; 
TRUNCATE TABLE `sales_bestsellers_aggregated_monthly`; 
TRUNCATE TABLE `sales_bestsellers_aggregated_yearly`; 

# Clean order infos 
TRUNCATE TABLE `sales_creditmemo`; 
TRUNCATE TABLE `sales_creditmemo_comment`; 
TRUNCATE TABLE `sales_creditmemo_grid`; 
TRUNCATE TABLE `sales_creditmemo_item`; 
TRUNCATE TABLE `sales_invoice`; 
TRUNCATE TABLE `sales_invoiced_aggregated`; 
TRUNCATE TABLE `sales_invoiced_aggregated_order`; 
TRUNCATE TABLE `sales_invoice_comment`; 
TRUNCATE TABLE `sales_invoice_grid`; 
TRUNCATE TABLE `sales_invoice_item`; 
TRUNCATE TABLE `sales_order`; 
TRUNCATE TABLE `sales_order_address`; 
TRUNCATE TABLE `sales_order_aggregated_created`; 
TRUNCATE TABLE `sales_order_aggregated_updated`; 
TRUNCATE TABLE `sales_order_grid`; 
TRUNCATE TABLE `sales_order_item`; 
TRUNCATE TABLE `sales_order_payment`; 
TRUNCATE TABLE `sales_order_status_history`; 
TRUNCATE TABLE `sales_order_tax`; 
TRUNCATE TABLE `sales_order_tax_item`; 
TRUNCATE TABLE `sales_payment_transaction`; 
TRUNCATE TABLE `sales_refunded_aggregated`; 
TRUNCATE TABLE `sales_refunded_aggregated_order`; 
TRUNCATE TABLE `sales_shipment`; 
TRUNCATE TABLE `sales_shipment_comment`; 
TRUNCATE TABLE `sales_shipment_grid`; 
TRUNCATE TABLE `sales_shipment_item`; 
TRUNCATE TABLE `sales_shipment_track`; 
TRUNCATE TABLE `sales_shipping_aggregated`; 
TRUNCATE TABLE `sales_shipping_aggregated_order`; 

# Clean cart infos 
TRUNCATE TABLE `quote`; 
TRUNCATE TABLE `quote_address`; 
TRUNCATE TABLE `quote_address_item`; 
TRUNCATE TABLE `quote_id_mask`; 
TRUNCATE TABLE `quote_item`; 
TRUNCATE TABLE `quote_item_option`; 
TRUNCATE TABLE `quote_payment`; 
TRUNCATE TABLE `quote_shipping_rate`; 

# Reset indexes (if you want your orders number start back to 1 
TRUNCATE TABLE sequence_invoice_1; 
TRUNCATE TABLE sequence_order_1; 
TRUNCATE TABLE sequence_shipment_1; 
TRUNCATE TABLE sequence_creditmemo_1; 


SET FOREIGN_KEY_CHECKS=1; 

НЕ TRUNCATE/EMPTY СЛЕДУЮЩЕЕ:

  • sales_order_status
  • sales_sequence_meta
  • sales_sequence_profile
  • sales_order_status_label
  • sales_order_status_state
+0

Будет ли этот ответ более полным, чем выбранный в данный момент? – frostshoxx

+0

Этот сценарий не работал для меня (magento2 CE 2.2.1). TRUNCATE TABLE 'sales_creditmemo' сказал MySQL: Документация # 1701 - Не может усечь таблицу на который ссылается ограничение внешнего ключа (' fabtablabtest_preinstalled_magento'.'sales_creditmemo_comment', скованность 'SALES_CREDITMEMO_COMMENT_PARENT_ID_SALES_CREDITMEMO_ENTITY_ID' FOREIGN KEY (' parent_id') ЛИТЕРАТУРЫ 'fabtablabtest_) –

+0

@ MichelTol вы нашли решение для 2.2.1? – user3128461

-1

удалить тестовые заказы от Magento2 запуска ниже Mysql Query:

TRUNCATE TABLE sales_order ; 
TRUNCATE TABLE sales_order_grid ; 
TRUNCATE TABLE sales_invoice ; 
TRUNCATE TABLE sales_invoice_grid ; 
TRUNCATE TABLE sales_creditmemo ; 
TRUNCATE TABLE sales_creditmemo_grid ; 
TRUNCATE TABLE sales_shipment ; 
TRUNCATE TABLE sales_shipment_grid ; 
0
SET FOREIGN_KEY_CHECKS=0; 

TRUNCATE TABLE sales_order ; 
TRUNCATE TABLE sales_order_grid ; 
TRUNCATE TABLE sales_invoice ; 
TRUNCATE TABLE sales_invoice_grid ; 
TRUNCATE TABLE sales_creditmemo ; 
TRUNCATE TABLE sales_creditmemo_grid ; 
TRUNCATE TABLE sales_shipment ; 
TRUNCATE TABLE sales_shipment_grid ; 

SET FOREIGN_KEY_CHECKS=1; 
+1

Запуск этого запроса может вызвать у вас проблемы. Он неполный. Я настоятельно рекомендую использовать этот запрос. Например, таблица sales_order_tax_item не усекается. Это приведет к появлению новых заказов (которые будут иметь те же идентификаторы, что и старые заказы), чтобы иметь несколько строк в этой таблице (включая неправильные строки из старых заказов). Как следствие, налоговая информация будет неправильной для новых позиций заказа. – mimarcel

0
SET FOREIGN_KEY_CHECKS=0; 

# Clean order history 
TRUNCATE TABLE `mg_sales_bestsellers_aggregated_daily`; 
TRUNCATE TABLE `mg_sales_bestsellers_aggregated_monthly`; 
TRUNCATE TABLE `mg_sales_bestsellers_aggregated_yearly`; 

# Clean order infos 
TRUNCATE TABLE `mg_sales_creditmemo`; 
TRUNCATE TABLE `mg_sales_creditmemo_comment`; 
TRUNCATE TABLE `mg_sales_creditmemo_grid`; 
TRUNCATE TABLE `mg_sales_creditmemo_item`; 
TRUNCATE TABLE `mg_sales_invoice`; 
TRUNCATE TABLE `mg_sales_invoiced_aggregated`; 
TRUNCATE TABLE `mg_sales_invoiced_aggregated_order`; 
TRUNCATE TABLE `mg_sales_invoice_comment`; 
TRUNCATE TABLE `mg_sales_invoice_grid`; 
TRUNCATE TABLE `mg_sales_invoice_item`; 
TRUNCATE TABLE `mg_sales_order`; 
TRUNCATE TABLE `mg_sales_order_address`; 
TRUNCATE TABLE `mg_sales_order_aggregated_created`; 
TRUNCATE TABLE `mg_sales_order_aggregated_updated`; 
TRUNCATE TABLE `mg_sales_order_grid`; 
TRUNCATE TABLE `mg_sales_order_item`; 
TRUNCATE TABLE `mg_sales_order_payment`; 
TRUNCATE TABLE `mg_sales_order_status_history`; 
TRUNCATE TABLE `mg_sales_order_tax`; 
TRUNCATE TABLE `mg_sales_order_tax_item`; 
TRUNCATE TABLE `mg_sales_payment_transaction`; 
TRUNCATE TABLE `mg_sales_refunded_aggregated`; 
TRUNCATE TABLE `mg_sales_refunded_aggregated_order`; 
TRUNCATE TABLE `mg_sales_shipment`; 
TRUNCATE TABLE `mg_sales_shipment_comment`; 
TRUNCATE TABLE `mg_sales_shipment_grid`; 
TRUNCATE TABLE `mg_sales_shipment_item`; 
TRUNCATE TABLE `mg_sales_shipment_track`; 
TRUNCATE TABLE `mg_sales_shipping_aggregated`; 
TRUNCATE TABLE `mg_sales_shipping_aggregated_order`; 

# Clean cart infos 
TRUNCATE TABLE `mg_quote`; 
TRUNCATE TABLE `mg_quote_address`; 
TRUNCATE TABLE `mg_quote_address_item`; 
TRUNCATE TABLE `mg_quote_id_mask`; 
TRUNCATE TABLE `mg_quote_item`; 
TRUNCATE TABLE `mg_quote_item_option`; 
TRUNCATE TABLE `mg_quote_payment`; 
TRUNCATE TABLE `mg_quote_shipping_rate`; 

# Reset indexes (if you want your orders number start back to 1 
TRUNCATE TABLE mg_sequence_invoice_1; 
TRUNCATE TABLE mg_sequence_order_1; 
TRUNCATE TABLE mg_sequence_shipment_1; 
TRUNCATE TABLE mg_sequence_creditmemo_1; 


SET FOREIGN_KEY_CHECKS=1; 
0

Почему бы вам не использовать это простое расширение доступны бесплатно для Magento2 https://magecomp.com/magento-2-delete-orders.html

+0

Ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без него: [добавить контекст вокруг ссылки] (// meta.stackexchange.com/a/8259), чтобы ваши соплеменники имели представление о том, что это такое и почему он там, затем укажите наиболее релевантную часть страницы, на которую вы ссылаетесь, в случае недоступности целевой страницы. [Ответы, которые немного больше, чем ссылка, могут быть удалены.] (// stackoverflow.com/help/deleted-answers) – paper1111

3

Вы можете удалить заказ с помощью программно:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 

$order = $objectManager->create('Magento\Sales\Model\Order')->getCollection() 

->addFieldToFilter('entity_id', (array) $orderIds); 

foreach ($orders as $o) { 

//load order object - I know it's not ok to use load in a loop but it 

should be ok since it's a one time script 

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

//delete all order items 

$items = $order->getAllItems(); 

foreach ($items as $item) { 

    $item->delete(); 

} 

$invoices = $order->getInvoiceCollection(); 

foreach ($invoices as $invoice){ 

//delete all invoice items 

    $items = $invoice->getAllItems(); 

    foreach ($items as $item) { 

     $item->delete(); 

    } 

    //delete invoice 
    $invoice->delete(); 
} 

$creditnotes = $order->getCreditmemosCollection(); 
foreach ($creditnotes as $creditnote){ 

    //delete all creditnote items 

    $items = $creditnote->getAllItems(); 
    foreach ($items as $item) { 
     $item->delete(); 
    } 
    //delete credit note 
    $creditnote->delete(); 
} 
$shipments = $order->getShipmentsCollection(); 
foreach ($shipments as $shipment){ 

    //delete all shipment items 

    $items = $shipment->getAllItems(); 
    foreach ($items as $item) { 
     $item->delete(); 
    } 
    //delete shipment 
    $shipment->delete(); 
}