Consultas SQL y conceptos Interesantes en Magento

Esta entrada la voy a dedicar a explicar algunas consultas SQL que pueden aportar mucha información sobre la base de datos de nuestra tienda y a continuar explicando cómo está organizada la información en nuestra base de datos. También resaltaré algunos aspectos necesarios a la hora de desarrollar sobre una tienda en producción:

  • Cambiar Magento de desarrollo a producción, o mover de dominio.
[SQL]UPDATE core_config_data SET value= ‘http://www.nuevodominio.com/’
WHERE path LIKE ‘web/%/base_url’;[/SQL]

Donde www.nuevodominio.com sera el dominio al que queremos cambiar nuestra tienda. Es un comando que viene muy bien cuando hay que llevar alguna copia de desarrollo a producción o viceversa, en ocasiones será necesario utilizar este comando muy rápidamente con lo cual es mejor guardarlo en un lugar cercano.

  • Poner un telón a nuestra tienda Magento:

En las ocasiones en que nuestra tienda se ha caído por cualquier razón o aquellas en las que vayamos a realizar labores arriesgadas por culpa de las cuales el cliente vería cosas raras e incluso algún pantallazo molesto de magento, es conveniente crear un telón para que el cliente no vea nada de lo que esta ocurriendo y vea una pantalla de mantenimiento.

Lo primero que tenemos que hacer es crearnos la pantalla que verán los clientes que accedan a nuestra tienda, normalmente será alguna página HTML en la que explicaremos que estamos en tareas de mantenimiento, esta página la llamaremos index.html y la alojaremos en el directorio raíz de nuestro sitio web. El siguiente paso es modificar el archivo .htaccess de nuestro directorio raíz. Bien, pues es en este archivo en el que tenemos que sustituir la página de inicio index.php por la generada index.html.

Sustituimos la línea

DirectoryIndex index.php

Por

DirectoryIndex index.html

Este consejo recién descrito también conviene tenerlo cercano por si es necesario realizar de urgencia por algún fallo de la web.

  • Clientes no confirmados en tu tienda Magento:

En muchas ocasiones nos es conveniente tener el sistema de confirmación de la cuenta de nuestro cliente. Esto significa que una vez registrado recibes en la bandeja de entrada un correo para que pulses en un enlace y confirmes la cuenta, esto evita que tengas cuentas falsas de clientes, y implica que la persona registrada quiere entrar realmente en tu página.

[SQL]

SELECT cust.entity_id,cust.email as email,grupo.customer_group_code as grupo,(SELECT value FROM customer_entity_varchar
WHERE (entity_id=cust.entity_id)AND(attribute_id=5)) AS nombre,
(SELECT value FROM customer_entity_varchar
WHERE (entity_id=cust.entity_id)AND(attribute_id=7)) AS apellidos FROM customer_entity AS cust, customer_entity_varchar AS var, customer_group AS grupo WHERE (cust.entity_id = var.entity_id) 
AND (grupo.customer_group_id = cust.group_id) 
AND (var.attribute_id =16) 
ORDER BY grupo.customer_group_code

[/SQL]

Para entender esta consulta, hay que entender el siguiente concepto: cuando un cliente no está confirmado en la tabla customer_entity_varchar tendremos para el attribute_id un código de confirmación, y cuando el cliente ya está confirmado no dispone de este atributo, con lo cual con esta consulta lo que obtenemos es los clientes que tienen este atributo. El atributo tiene el código de confirmation según nuestra base de datos EAV, para localizar el atributo mirad la entrada anterior de este blog sobre las bases de datos. Para terminar este punto, es necesario comentar que para confirmar un cliente manualmente es tan fácil como eliminar este atributo de la tabla, y ser automáticamente confirmado en el sistema.

  • Obtener los pedidos de tu tienda:

Puedes ser interesante obtener los pedidos en una tabla csv, para así poner alguna condición a la hora de obtener estos pedidos, un ejemplo podría ser si tenemos unos ciertos pedidos de un mismo proveedor y queremos obtener los pedidos de dichos proveedores, para diferenciarlos en el sku tendríamos que poner algún código identificativo al principio, como por ejemplo:

00_camisetas

00_pantalones

Y la consulta SQL sería la siguiente,

[SQL]

SELECT fla.sku AS IDENTIFICADOR, fla.name AS NOMBRE,
(SUM( fla.qty_invoiced )-SUM(fla.qty_shipped)-SUM(fla.qty_refunded)) AS TOTAL 
FROM `sales_flat_order_item`
AS fla
WHERE fla.product_type=”simple” 
AND (fla.qty_invoiced > 0) 
AND (fla.product_type=’simple’) 
GROUP BY fla.sku;

[/SQL]
  • Cambiar de una manera masiva los datos de un conjunto de clientes

Esta consulta aunque parezca trivial nos puede servir de real utilidad. Imaginemos que queremos cambiar de grupo a un conjunto de clientes por algún requisito que ahora cumplen.


[SQL]UPDATE customer_entity 
SET group_id=12 
WHERE email IN(‘conjunto de emails’)[/SQL]

Y esto es todo por hoy.

7 comentarios sobre “Consultas SQL y conceptos Interesantes en Magento”

  1. Buenas noches… tenemos un portal de descuentos que nos quedo sin mantenimiento por los desarrolladores.
    Para investigar sobre Magento, instale en mi maquina el Wampp como Servidor Local con Magento, para hacer pruebas locales, sin “romper” nada del server de Produccion.
    El problema es que no responde al usuario y password puesto. Hay forma de resetear para entrar al panel de Magento en el server Local del Wampp ??
    Gracias

    1. Buenas, el tema que me comentas es que has instalado en local el Magento que tienéis en producción?? como lo habéis hecho?? habéis reinstalado en local borrando el archivo local.xml para que funcione??? hay un error típico que suelen dar los magentos al entrar al admin en local, aunque a mi no me ha pasado nunca creo recordad que se solucionaba accediendo mediante la ip 127.0.0.1/loquesea.local en vez de poner localhost8 Tenía un problema de cookies). Resumiendo, yo primero miraría lo que te comento y luego si queréis cambiar la contraseña habría que ir a la bbdd,y cambiar la contraseña(recuerda que en magento están las contraseñas cifradas con md5) cuando tenga un ratillo te digo la tabla que es. Espero haberte ayudado, para cualquier cosa ya sabes donde estoy , un saludo

  2. Hola, gracias por la información me ha sido de mucha utilidad!!!. Por otra parte tengo una duda ¿en que tabla de la base de datos de Magento se guardan las contraseñas de los usuarios? (tengo la versión de magento 1.7.0.2)

    1. Los usuarios son EAV, por lo que deberás de mirar varias tablas para obtener la contraseña, en una entrada del blog explico como trabajan los Modelos de Datos Entidad Atributo Valor. El Dato lo podrás encontrar en la tabla customer_entity_varchar bajo el campo attribute_id=12. Este dato esta codificado con un MD5 basándose en el extension key configurado en la tienda. Estas anotaciones son para un Magento 1.5 pero debe de ser similar o igual para tu versión.

      Espero que te haya servido de ayuda
      Saludos

  3. hola! gracias por la informacion me ha sido de mucha utilidad. Pero tengo una duda. tengo que añadir una nueva entidad llamada vendedores a la base de datos pero lo que no se es en que parte configuro el admin para que se muestre esta nueva entidad y pueda agregar nuevas objetos de esta entidad. me puedes ayudar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *