Jump to content

Query con desglose de pedidos con cupón y si cupón


Recommended Posts

Buenos días,

 

Necesito ayuda. Estoy intentado sacar una sentencia sql que me saque todos los pedidos y luego otra columna que me diga si tiene un % de cupón de descuento o no. He conseguido que me muestre los pedidos que si tienen cupón, pero los que no tienen cupón (0%) se quedan fuera y no soy capaz de sacarlo. Cabe decir, que hago distinción entre descuentos y cupón de descuento.

Mi sentencia sql es la siguiente me gustaría que echaséis una mano porque no veo por dónde tirar. Mil gracias

Select product_reference as ID,
 d.invoice_number as Factura,
e.product_name as Nombre,
d.id_order as Pedido,
h.date_add as Fecha,
concat(firstname,lastname) as Cliente, e.product_quantity as Cantidad ,
ROUND((total_paid),2) as Total ,
ROUND((total_paid-total_shipping),2) as TotalProductos ,
concat(ROUND((e.reduction_percent),0), ' %') as Descuento, 

 


CASE WHEN o.id_order=d.id_order  and o.id_cart_rule=r.id_cart_rule  THEN concat(ROUND((r.reduction_percent),0), ' %') <- Aquí saco los pedidos con cupón pero jamas se va por el else
 ELSE '%0'    END   as Cupon3,

 


CASE WHEN (h.id_order_state=1 or h.id_order_state=10) THEN '-'
 WHEN ROUND((d.total_discounts*100)/d.total_products_wt,0) != 0  THEN concat("-", ROUND(ROUND( ((e.unit_price_tax_incl*e.product_quantity_refunded)),2)-ROUND( ((e.unit_price_tax_incl*e.product_quantity_refunded)),2)*ROUND((d.total_discounts*100)/d.total_products_wt,0)/100,2))
WHEN  ROUND((d.total_discounts*100)/d.total_products_wt,0)  = 0 and d.current_state=25 or d.current_state=26 then concat("-",ROUND( ((e.unit_price_tax_incl*e.product_quantity_refunded)),2))
WHEN  ROUND((d.total_discounts*100)/d.total_products_wt,0) = 0 and d.current_state=27 or d.current_state=28  then concat("-",ROUND( ((e.unit_price_tax_incl*e.product_quantity_refunded)),2)) ELSE  '-0.00' END  as Devolucion,
CASE WHEN h.id_order_state=28 THEN 'Devolucion Parcial' WHEN h.id_order_state=26 THEN 'Devolucion' END as Estado,
CASE WHEN id_carrier=13 THEN 'Tienda'  WHEN id_carrier=15 THEN 'Domicilio' ELSE 'INDEFINIDO' END as Entrega ,
g.quantity as Stock,
d.date_add as FPedido,
'Tarjeta' as Pago
from ps_group_lang a, ps_customer_group b, ps_customer c, ps_orders d, ps_order_detail e , ps_stock_available g, ps_order_history h,
ps_tax_rule i, ps_tax j, ps_country k, ps_order_cart_rule o, ps_cart_rule r  <- ÉSTAS DOS ÚLTIMAS TABLAS SON LAS QUE AÑADO PARA SACAR LOS CUPONES DE DESCUENTO

where
o.id_order=d.id_order or o.id_order!=d.id_order and o.id_cart_rule=r.id_cart_rule  <- Y AQUÍ SALGO TAMBIÉN PARA QUE ME SAQUE LOS PEDIDOS CON CUPÓN

and a.id_group=b.id_group and b.id_customer=c.id_customer and a.id_lang=c.id_lang and c.id_customer=d.id_customer and d.id_order=e.id_order and g.id_product=e.product_id and d.id_order=h.id_order and (h.id_order_state=10 or h.id_order_state=26 or h.id_order_state=28) and (c.id_default_group=4 or c.id_default_group=5)
and e.id_tax_rules_group=i.id_tax_rules_group and i.id_tax=j.id_tax and i.id_country=k.id_country and  k.id_country=6 and i.id_state=0

order by Fecha

 

 

Link to comment
Share on other sites

  • 5 years later...

en vez de hacer join con FROM tabla1, tabla2, tabla3... tienes que utilizar LEFT JOIN para las tablas que puede que no tengan información relacionada. De esta manera, te saldrán los pedidos que no han utilizado vale de descuento, con la información de los vales de descuento en NULL.

Tengo una pregunta... En ps_order_detail.reduction_percent te sale el descuento cuando utilizas vales de descuento?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...