Post by ddm » Tue Aug 07, 2012 8:53 am

Buenas tardes a todos:

Estoy ingresando al la sección REPORTE --- CLIENTES --- PUNTOS DE PREMIOS y me muestra la información general correspondiente. Sin embargo, cuando intento hacer una búsqueda por fecha me muestra el siguiente error:

Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE(cr.date_added) >= '2012-08-06'DATE(cr.date_added) <= '2012-08-06' GROUP BY ' at line 1
Error No: 1064
SELECT cr.customer_id, CONCAT(c.firstname, ' ', c.lastname) AS customer, c.email, cgd.name AS customer_group, c.status, SUM(cr.points) AS points, COUNT(o.order_id) AS orders, SUM(o.total) AS total FROM customer_reward cr LEFT JOIN `customer` c ON (cr.customer_id = c.customer_id) LEFT JOIN customer_group_description cgd ON (c.customer_group_id = cgd.customer_group_id) LEFT JOIN `order` o ON (cr.order_id = o.order_id) WHERE cgd.language_id = '2'DATE(cr.date_added) >= '2012-08-06'DATE(cr.date_added) <= '2012-08-06' GROUP BY cr.customer_id ORDER BY points DESC LIMIT 0,20 in /home1/xxxxxxxxx/public_html/system/database/mysql.php on line 49


ALGUIEN SABE COMO RESOLVERLO?

Uso OC 1.5.3.1. Dos idiomas y un tema o plantilla.

Muchas gracias anticipadas...

User avatar
ddm
New member

Posts

Joined
Fri Sep 02, 2011 12:16 pm

Post by prodigitalweb » Wed Aug 08, 2012 7:02 am

Hola ddm,


Viendo la consulta SQL veo que no es correcta.
A continuación te la pongo corregida a nivel e sintaxis.
El problema para tí, supongo que será encontrar donde está la consulta. Podrías buscar trozos de la query por todos los archivos de opencart para ver si la encuentras.

Code: Select all

SELECT cr.customer_id,
       CONCAT(c.firstname, ' ', c.lastname) AS customer,
       c.email,
       cgd.name AS customer_group,
       c.status,
       SUM(cr.points) AS points,
       COUNT(o.order_id) AS orders,
       SUM(o.total) AS total
FROM customer_reward cr
LEFT JOIN `customer` c ON (cr.customer_id = c.customer_id)
LEFT JOIN customer_group_description cgd ON (c.customer_group_id = cgd.customer_group_id)
LEFT JOIN `order` o ON (cr.order_id = o.order_id)
WHERE cgd.language_id = '2' DATE(cr.date_added) >= '2012-08-06' DATE(cr.date_added) <= '2012-08-06'
GROUP BY cr.customer_id
ORDER BY points DESC LIMIT 0,20
Si necesitas ayuda ponte en contacto conmigo.
Un saludo.

New member

Posts

Joined
Mon Aug 06, 2012 3:08 am

Post by ddm » Wed Aug 08, 2012 7:22 am

Gracias por la pronta respuesta.

Yo no he comprado ninguna extensión que modifique los reportes o ninguna relacionada a los Puntos de Premios.
¿Podríamos estar hablando de un bug o error del OC 1.5.3.1?

¿Tú ha probado en tu tienda si el reporte de Puntos de Premios filtrado por fechas te funciona correctamente?
(eso está en: REPORTES --- CLIENTES --- PUNTOS DE PREMIOS)

Yo revisé mi log de errores a través del VQMOD Manager y no mostró ningun error relacionado.

Saludos,

@ddm

User avatar
ddm
New member

Posts

Joined
Fri Sep 02, 2011 12:16 pm

Post by prodigitalweb » Wed Aug 08, 2012 11:46 pm

Hola ddm,


No tengo la versión 1.5.3 instalada actualmente. Pero he entrado directamente al codigo para verlo.
He encontrado donde se ejecuta la consulta SQL.

En el archivo /admin/model/report/customer.php

Y he detectado el error de sintaxis que te comentaba:
En la línea 64 verás:

Code: Select all

		if (!empty($data['filter_date_start'])) {
			$sql .= "DATE(cr.date_added) >= '" . $this->db->escape($data['filter_date_start']) . "'";
		}

		if (!empty($data['filter_date_end'])) {
			$sql .= "DATE(cr.date_added) <= '" . $this->db->escape($data['filter_date_end']) . "'";
		}

Cuando en principio debería ser:

Code: Select all

		if (!empty($data['filter_date_start'])) {
			$sql .= " DATE(cr.date_added) >= '" . $this->db->escape($data['filter_date_start']) . "'";
		}

		if (!empty($data['filter_date_end'])) {
			$sql .= " DATE(cr.date_added) <= '" . $this->db->escape($data['filter_date_end']) . "'";
		}

Si te fijas, solo faltaba añadir un espacio antes de la cadena de texto

Code: Select all

 DATE(cr.date_added)

Espero haberte ayudado.
Si tienes alguna consulta no dudes en ponerte en contacto conmigo.

Un saludo!

New member

Posts

Joined
Mon Aug 06, 2012 3:08 am

Post by prodigitalweb » Wed Aug 08, 2012 11:48 pm

Ahora que me fijo, pasa lo mismo en la linea 96 de ese mismo archivo antes de la cadena de texto "DATE(cr.date_added)" falta un espacio; quedando así: " DATE(cr.date_added)".


Saludos!

New member

Posts

Joined
Mon Aug 06, 2012 3:08 am
Who is online

Users browsing this forum: No registered users and 124 guests