Jump to content

Recommended Posts

Buenas, tengo hecha desde prestashop 1.6 una consulta en el gestor sql de parametros avanzados, en el mismo me saca la id de la referencia, la id del cliente, nombre, apellidos, email, móvil, nombre del producto, cantidad, forma de pago, si esta pagado, fecha de pago, fecha de pedido, estado y entrega.

 

Este listado lo necesito para tener una referencia de los pedidos.

 

El problema viene a que si en un pedido me compran 3 manzanas, 2 platanos y 4 naranjas, en el nombre del producto, y cantidad solo me sale lo del primer producto comprado, vamos, manzas y 3 y necesito que me saque todos los datos de la compra en ese listado.

 

Os dejo el código que tengo en el gestor SQL a ver si me podéis ayudar.

 

Gracias.

 

SELECT d.id_order AS ID, d.reference AS Referencia, g.id_customer AS IDCliente, g.firstname AS Nombre, g.lastname AS Apellidos, g.email AS Email, w.phone_mobile AS Telefono, n.`product_name` AS Libro, n.`product_quantity` AS Cantidad, o.payment AS Forma_pago, o.valid AS Pagado, d.invoice_date AS FechaPago, o.date_add AS FechaPedido, b.name AS Estado, k.name AS Entrega
FROM ps_orders d
LEFT JOIN ps_orders o ON ( d.id_order = o.id_order ) 
LEFT JOIN ps_customer g ON ( o.id_customer = g.id_customer ) 
LEFT JOIN  `ps_order_detail` n ON n.`id_order` = o.`id_order` 
LEFT JOIN ps_order_history h ON ( h.id_order = o.id_order ) 
LEFT JOIN  `ps_carrier` k ON (k.id_carrier = o.id_carrier)
LEFT JOIN  `ps_address` w ON (w.id_customer = o.id_customer)
LEFT JOIN `ps_order_state_lang` b ON (b.id_order_state = o.current_state)
WHERE o.date_upd
BETWEEN  '2014-01-01'
AND  '2014-12-31'


GROUP BY d.id_order
LIMIT 0 , 300000

 

Link to comment
Share on other sites

Si le quito el GROUP BY d.id_order si que salen, pero salen duplicados y es un follón.

 

Por ejemplo...

 

 

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina

Edited by djmortis (see edit history)
Link to comment
Share on other sites

¿Te refieres así?

SELECT d.id_order AS ID, d.reference AS Referencia, g.id_customer AS IDCliente, g.firstname AS Nombre, g.lastname AS Apellidos, g.email AS Email, w.phone_mobile AS Telefono, n.`product_name` AS Libro, n.`product_quantity` AS Cantidad, o.payment AS Forma_pago, o.valid AS Pagado, d.invoice_date AS FechaPago, o.date_add AS FechaPedido, b.name AS Estado, k.name AS Entrega
FROM ps_orders d
LEFT JOIN ps_orders o ON ( d.id_order = o.id_order ) 
LEFT JOIN ps_customer g ON ( o.id_customer = g.id_customer ) 
LEFT JOIN  `ps_order_detail` n ON n.`id_order` = o.`id_order` 
LEFT JOIN ps_order_history h ON ( h.id_order = o.id_order ) 
LEFT JOIN  `ps_carrier` k ON (k.id_carrier = o.id_carrier)
LEFT JOIN  `ps_address` w ON (w.id_customer = o.id_customer)
LEFT JOIN `ps_order_state_lang` b ON (b.id_order_state = o.current_state)
WHERE d.`id_lang` = '.(int)$this->context->language->id.'

Así no me funciona, :/

Link to comment
Share on other sites

¿En vez de por el lenguaje puede que los este repitiendo por las categórias?, algunos los tengo puestos en varias categorías, :/

 

Por ejemplo, algunos artículos están en categoría inicio y en otra. después no se duplicán todos igual, unos se duplican 12 veces, otros 10, otros 4, otros ninguna :/

Edited by djmortis (see edit history)
Link to comment
Share on other sites

Vale, era por la fecha, :/

 

De todas formas, con tu último ejemplo del pedido, en este caso 145 que tiene varios productos, solo me muestra 1 de los productos comprados.

 

Vamos, el pedido 145 ha comprado 4 manzanas, 4 peras y 3 limones, en el listado solo me muestra que ha comprado 4 manzanas.

Link to comment
Share on other sites

Gracias Statictic, vamos,mi idea es sacar un listado para gestionar los pedidos y tener en un solo listado los pedidos que tengo, que productos tiene cada pedido, cantidad, etc, etc...

 

Es raro que no se pueda sacar una forma facil, creo que es algo necesario para gestionar una tienda con unas ventas altas. :/

Link to comment
Share on other sites

Hombre, esta el modo cutre, que es sacándolo con duplicados y en excel eliminar los duplicados. Pero vamos, no se como Prestashop no lleva algo para sacar este tipo de listados más facilmente, ya que para hacer listados necesarios para cualquier cosa, por ejemplo, enviar las etiquetas de envío a almacén con el listado correspondiente, para aligerar los envíos,o para ver de un vistazo todos los pedidos por productos, precios, cantidades... en vez de uno en uno que se pierde mucho tiempo. Raro cuanto menos.

 

Pero bueno, que mil gracias por tu ayuda, creía que estaba yo ofuscado y no me salía, pero veo que es más complejo de lo que yo creía.

Link to comment
Share on other sites

Mira Statictic aquí salen bien, a ver si soy capaz de implementarlo en el gestor sql con los datos que me hacen falta a mi...

 

  SELECT d.id_order, os.name AS tila, d.product_name, d.product_reference, d.product_price, d.product_quantity, o.payment, o.date_upd, CONCAT_WS(' ', g.lastname, g.firstname) AS asiakas, g.id_customer AS asiakasID, CONCAT_WS(' ', ad.address1, ad.address2, 'Kaupunki:', ad.postcode, ad.city, ad.other, 'Puhelin: ', ad.phone, 'Kännykkä: ', ad.phone_mobile) AS toimitusosoite, CONCAT_WS(' ', ai.address1, ai.address2,'Kaupunki:',  ai.postcode, ai.city, ai.other, 'Puhelin: ', ai.phone, 'Kännykkä: ', ai.phone_mobile) AS laskutusosoite, gl.name AS group_name, s.quantity AS quantity_in_stock, g.email
    FROM ps_order_detail d
    LEFT JOIN ps_orders o ON
(d.id_order = o.id_order)
    LEFT JOIN ps_address ad ON (o.id_address_delivery = ad.id_address)
    LEFT JOIN ps_address ai ON (o.id_address_invoice = ai.id_address)
    LEFT JOIN ps_stock_available s ON (d.product_id = s.id_product)
    LEFT JOIN ps_customer g ON (o.id_customer = g.id_customer)
    LEFT JOIN ps_group_lang gl ON (g.id_default_group = gl.id_group) AND gl.name LIKE 'piiri%'
    LEFT JOIN ps_order_state_lang os ON (o.current_state = os.id_order_state)
    WHERE os.id_lang = 1

Link to comment
Share on other sites

Menudo crack Statictic. Respecto a la estructura,no se si se podrá, pero sería posible que pusiera una línea por producto, vamos si un pedido tiene 3 manzanas, 3 peras y 2 melocotones que no los separe por coma, que los ponga...

 

En vez de Pedido XXXXXX,  Manzanas, Peras, Melocotones; 3, 3, 2

 

Que los ponga así...

 

XXXXXX Manzanas 3

XXXXXX Peras 3

XXXXXX Melocotones 2

 

No se si es posible. :/

 

Gracias.

Link to comment
Share on other sites

Aquí dejo el código correcto, por si te sirve de ayuda para el módulo.

SELECT d.id_order AS ID, g.id_customer AS IDCliente, o.reference AS Referencia, g.firstname AS Nombre, g.lastname AS Apellidos,  d.product_name AS Libro, d.product_quantity AS Cantidad, o.valid AS Pagado, o.payment AS FormaPago,  o.invoice_date AS FechaPago, o.date_add AS FechaPedido, o.date_upd AS FechaUltimoEstado, os.name AS Estado, k.name AS Entrega
    FROM ps_order_detail d
    LEFT JOIN ps_orders o ON (d.id_order = o.id_order)
    LEFT JOIN ps_address ad ON (o.id_address_delivery = ad.id_address)
    LEFT JOIN ps_address ai ON (o.id_address_invoice = ai.id_address)
    LEFT JOIN ps_stock_available s ON (d.product_id = s.id_product)
    LEFT JOIN ps_customer g ON (o.id_customer = g.id_customer)
    LEFT JOIN  `ps_carrier` k ON (k.id_carrier = o.id_carrier)
    LEFT JOIN ps_group_lang gl ON (g.id_default_group = gl.id_group) AND gl.name LIKE 'piiri%'
    LEFT JOIN ps_order_state_lang os ON (o.current_state = os.id_order_state)
    WHERE os.id_lang = 1
Link to comment
Share on other sites

  • 2 weeks later...
  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...