Fork me on GitHub
Você esta em:Home » Desenvolvimento » Sáiba como zerar a base do Magento

Sáiba como zerar a base do Magento

Script para deletar e zerar produtos, categorias, usuários e ordens de compra

Bem logo após um termino de um projeto feito em Magento, precisamos entregar o mesmo sem os testes para o cliente. Pois bem, nesse artigo explicarei de forma simples como deletar e zerar todos produtos, categorias, usuários e compras realizadas como teste.

Mas cuidado! Quando eu terminei um projeto em Magento fui procurar por esse tópico na web, e achei várias formas de fazer, só depois ví que existia diferença no script de uma versão do Magento para a outra. O Script que passarei abaixo foi testado por mim na versão 1.6 do Magento. E lembre-se sempre faça backup antes começar a mexer, e não tente excluir na mão, ou seja, excluir na marra no PhpMyAdmin.

Script para resetar os usuários:


TRUNCATE TABLE `customer_address_entity`;
 TRUNCATE TABLE `customer_address_entity_datetime`;
 TRUNCATE TABLE `customer_address_entity_decimal`;
 TRUNCATE TABLE `customer_address_entity_int`;
 TRUNCATE TABLE `customer_address_entity_text`;
 TRUNCATE TABLE `customer_address_entity_varchar`;
 TRUNCATE TABLE `customer_entity`;
 TRUNCATE TABLE `customer_entity_datetime`;
 TRUNCATE TABLE `customer_entity_decimal`;
 TRUNCATE TABLE `customer_entity_int`;
 TRUNCATE TABLE `customer_entity_text`;
 TRUNCATE TABLE `customer_entity_varchar`;

Script para resetar os produtos


SET FOREIGN_KEY_CHECKS = 0;
 TRUNCATE TABLE `catalog_product_bundle_option`;
 TRUNCATE TABLE `catalog_product_bundle_option_value`;
 TRUNCATE TABLE `catalog_product_bundle_selection`;
 TRUNCATE TABLE `catalog_product_entity_datetime`;
 TRUNCATE TABLE `catalog_product_entity_decimal`;
 TRUNCATE TABLE `catalog_product_entity_gallery`;
 TRUNCATE TABLE `catalog_product_entity_int`;
 TRUNCATE TABLE `catalog_product_entity_media_gallery`;
 TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
 TRUNCATE TABLE `catalog_product_entity_text`;
 TRUNCATE TABLE `catalog_product_entity_tier_price`;
 TRUNCATE TABLE `catalog_product_entity_varchar`;
 TRUNCATE TABLE `catalog_product_link`;
 TRUNCATE TABLE `catalog_product_link_attribute`;
 TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
 TRUNCATE TABLE `catalog_product_link_attribute_int`;
 TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
 TRUNCATE TABLE `catalog_product_link_type`;
 TRUNCATE TABLE `catalog_product_option`;
 TRUNCATE TABLE `catalog_product_option_price`;
 TRUNCATE TABLE `catalog_product_option_title`;
 TRUNCATE TABLE `catalog_product_option_type_price`;
 TRUNCATE TABLE `catalog_product_option_type_title`;
 TRUNCATE TABLE `catalog_product_option_type_value`;
 TRUNCATE TABLE `catalog_product_super_attribute_label`;
 TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
 TRUNCATE TABLE `catalog_product_super_attribute`;
 TRUNCATE TABLE `catalog_product_super_link`;
 TRUNCATE TABLE `catalog_product_enabled_index`;
 TRUNCATE TABLE `catalog_product_website`;
 TRUNCATE TABLE `catalog_category_product_index`;
 TRUNCATE TABLE `catalog_category_product`;
 TRUNCATE TABLE `cataloginventory_stock_item`;
 TRUNCATE TABLE `cataloginventory_stock_status`;
 TRUNCATE TABLE `cataloginventory_stock`;
 INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
 INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
 INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
 TRUNCATE TABLE `catalog_product_entity`;
 SET FOREIGN_KEY_CHECKS = 1;

Script para resetar as categorias:


TRUNCATE TABLE `catalog_category_entity`;
 TRUNCATE TABLE `catalog_category_entity_datetime`;
 TRUNCATE TABLE `catalog_category_entity_decimal`;
 TRUNCATE TABLE `catalog_category_entity_int`;
 TRUNCATE TABLE `catalog_category_entity_text`;
 TRUNCATE TABLE `catalog_category_entity_varchar`;
 TRUNCATE TABLE `catalog_category_product`;
 TRUNCATE TABLE `catalog_category_product_index`;

INSERT  INTO `catalog_category_entity`(`entity_id`,`entity_type_id`,`attribute_set_id`,`parent_id`,`created_at`,`updated_at`,`path`,`POSITION`,`level`,`children_count`) VALUES (1,3,0,0,'0000-00-00 00:00:00','2009-02-20 00:25:34','1',1,0,1),(2,3,3,0,'2009-02-20 00:25:34','2009-02-20 00:25:34','1/2',1,1,0);
 INSERT  INTO `catalog_category_entity_int`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,32,0,2,1),(2,3,32,1,2,1);
 INSERT  INTO `catalog_category_entity_varchar`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,31,0,1,'Root Catalog'),(2,3,33,0,1,'root-catalog'),(3,3,31,0,2,'Default Category'),(4,3,39,0,2,'PRODUCTS'),(5,3,33,0,2,'default-category');

Script para resetar as ordens de compra:


TRUNCATE `sales_order`;
 TRUNCATE `sales_order_datetime`;
 TRUNCATE `sales_order_decimal`;
 TRUNCATE `sales_order_entity`;
 TRUNCATE `sales_order_entity_datetime`;
 TRUNCATE `sales_order_entity_decimal`;
 TRUNCATE `sales_order_entity_int`;
 TRUNCATE `sales_order_entity_text`;
 TRUNCATE `sales_order_entity_varchar`;
 TRUNCATE `sales_order_int`;
 TRUNCATE `sales_order_text`;
 TRUNCATE `sales_order_varchar`;
 TRUNCATE `sales_flat_quote`;
 TRUNCATE `sales_flat_quote_address`;
 TRUNCATE `sales_flat_quote_address_item`;
 TRUNCATE `sales_flat_quote_item`;
 TRUNCATE `sales_flat_quote_item_option`;
 TRUNCATE `sales_flat_order_item`;
 TRUNCATE `sendfriend_log`;
 TRUNCATE `tag`;
 TRUNCATE `tag_relation`;
 TRUNCATE `tag_summary`;
 TRUNCATE `wishlist`;
 TRUNCATE `log_quote`;
 TRUNCATE `report_event`;

Plugin Para Magento Seamless Delete Order

Para deletar ordens de compra pela Backend eu recomendo o plugin Seamless Delete Order, pois em meu caso facilita muito a organização das minhas ordens de compra.

http://www.magentocommerce.com/magento-connect/seamless-delete-order.html

Dica importante! Ao zerrar as tabelas, o Magento começará do zero as IDs das mesmas, ou seja, as ids começaram como num sistema recém instalado do zero, começará pela ID 1. Isso é importante colocar pois se você realizou testes em modo de produção em gateways de pagamento como o Ipagare, não será permitido deletar os testes da produção do Ipagare. Então os IDs das ordens de compra feito como teste nunca serão deletados do Ipagare, e ao criar uma nova ordem de compra no magento irá conflitar com as odens de compra no Ipagare. Entendeu? Ou será que compliquei???

Por exemplo:

  1. Digamos que você fez um teste de compra no Magento, e no modulo do Ipagare estejá habilitado o modo de produção, e o id referente dessa compra é 100000001.
  2. No teste você seta no Ipagare que a compra foi confirmada de 25 reais para efeito de teste.
  3. Passado os testes você lê esse artigo, pois procura exatamente como zerar as tabelas e resolve resetar a tabela de ordens de compra. E seu site já estará funcionando normalmente.
  4. Dai um usuário cria um login e faz uma compra e o ID da compra que ele recebe é também 100000001.
  5. Ao usuário clicar em comprar e ser redirecionado para imprimir o boleto o Ipagare avisará que essa ordem já foi paga, sem que ele tenha imprimido o boleto! Ou o usuário receberá um aviso assim “O pedido foi cancelado e não pode mais ser pago (Código 202).” e ficará impossibilitado de comprar até que os numeros parem de entrar em conflito no Ipagare.

Entendeu? Para resolver essa questão você precisará mudar a forma padrão de como é feito os IDs das ordens de compra no Magento, pois o Ipagare não apagará nenhuma ordem do modo produção. Se você me perguntar o porque não sei responder, só sei que é assim rs.

Solução para esse problema de IDs da ordem de serviço duplicado

Para quem quiser modificar a numeração incial do Magento é bem simples, basta entrar pelo PHPMYADMIN na tabela eav_entity_store e modificar a seqüência de numeração no campo increment_last_id.

Sites de referências:

http://www.magentocommerce.com/wiki/import-export_and_data_manipulation/removing_products_through_the_database

http://www.magentocommerce.com/boards/viewthread/20553/P15/

http://www.magentocommerce.com/boards/viewthread/197549/

Bem espero ter ajudado! Até a próxima!

Sobre o Autor

Designer, Web Developer & Linux Administrator

Meu nome é Deivison Arthur, tenho 29 anos, sou Administrador Linux, Analista de Sistema, Webdesigner e Pesquisador. há mais de dez anos. Nasci no Rio de Janeiro, atualmente trabalho como Gerente de Tecnologia e E-commerce at Grupo FFernandes e Freelancer nas horas vagas. Desenvolvimento em Joomla, Wordpress, Drupal, Magento e outros GPLs...

Quantidade de Artigos : 114

Comentários (11)

Enviar Comentário

© 2012 Powered By Wordpress, Deivison Arthur

Ir para cima