2016-06-16 23 views
8

Per favore spiegami il modo corretto di rimuovere gli ordini di prova nel sito Web Magento2. Ho rimosso tutti i record dalla tabella 'sales_order' ma ancora gli ordini esistono nel back-end.Come rimuovere gli ordini di prova da Magento2

+0

Migliore e semplice da usare l'estensione, https://magecomp.com/magento-2-delete-orders.html –

risposta

22

testato in Magento 2.1.0

Essere sicuri: fare un backup del vostro SQL prima.

utilizzare SQL di seguito in base alle proprie esigenze:

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; 

non tronca/SVUOTARE IL SEGUENTE:

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

Questa risposta sarebbe più completa di quella selezionata a questo punto? – frostshoxx

+0

Questo script non ha funzionato per me (Magento2 CE 2.2.1). TRUNCATE TABLE 'sales_creditmemo' MySQL ha detto: Documentazione # 1701 - Non è possibile troncare una tabella di riferimento in un vincolo di chiave esterna (fabtablabtest_preinstalled_magento'.'sales_creditmemo_comment', VINCOLO' FOREIGN KEY SALES_CREDITMEMO_COMMENT_PARENT_ID_SALES_CREDITMEMO_ENTITY_ID' (parent_id') RIFERIMENTI '' 'fabtablabtest_) –

+0

@MichelTol hai trovato una soluzione per 2.2.1? – user3128461

-1

di cancellare le proposte di test da eseguire Magento2 sotto 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

L'esecuzione di questa query può metterti nei guai. È incompleto Consiglio vivamente di non usare questa query. Ad esempio, la tabella sales_order_tax_item non viene troncata. Ciò comporterà nuovi ordini (che avranno gli stessi ID dei vecchi ordini) per avere più righe in questa tabella (incluse le righe sbagliate dai vecchi ordini). Di conseguenza, le informazioni fiscali saranno errate per i nuovi articoli dell'ordine. – 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

Perché non si utilizza questa semplice estensione disponibile gratuitamente per Magento2 https://magecomp.com/magento-2-delete-orders.html

+0

Un collegamento a una soluzione è il benvenuto, ma per favore assicurati che la tua risposta sia utile senza di essa: [aggiungi contesto intorno al link] (// meta.stackexchange.com/a/8259) in modo che i tuoi utenti abbiano qualche idea di cosa sia e perché è lì, quindi cita la parte più pertinente della pagina a cui stai collegando nel caso in cui la pagina di destinazione non sia disponibile. [Le risposte che sono poco più di un collegamento potrebbero essere eliminate.] (// stackoverflow.com/help/deleted-answers) – paper1111

3

È possibile eliminare ordine via di programmazione:

$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(); 
} 
Problemi correlati