Tengo algunos códigos de cupón en mi tienda, y me gustaría poder rastrear qué código puede haber utilizado un usuario. Inversamente, ¿hay alguna manera de ver cuántas veces se usó un código en particular?
Tengo algunos códigos de cupón en mi tienda, y me gustaría poder rastrear qué código puede haber utilizado un usuario. Inversamente, ¿hay alguna manera de ver cuántas veces se usó un código en particular?
Respuestas:
Qué clientes usaron qué cupones:
Por lo general, evito las consultas de db sin procesar, pero en este caso haré una excepción:
select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;
Puede hacer lo mismo con el ORM de Magento: formulará un informe sobre cómo hacerlo y editará después y así es como :
$coll = Mage::getModel('sales/order')->getCollection()
->getSelect()->reset(Zend_Db_Select::COLUMNS)
->columns(array('customer_email',new Zend_Db_Expr('group_concat(distinct coupon_code)')))
->where(new Zend_Db_Expr('coupon_code is not null'))
->group(array('customer_email'));
Cuántas veces se usó un cupón:
Como ya se señaló en otra respuesta, esto está en un informe. En el nivel más básico, la consulta para eso sería:
select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;
La forma de manejar esto centrada en ORM también es bastante sencilla:
$coll = Mage::getModel('sales/order')->getCollection()
->getSelect()->reset(Zend_Db_Select::COLUMNS)
->columns(array('coupon_code',new Zend_Db_Expr('count(coupon_code)')))
->group(array('coupon_code'));
Tenga en cuenta que esto no tiene en cuenta el estado del pedido o el pago facturado.
Reports > Sales > Coupons
en su área de administración le permitirá ver cuántas veces se utilizó un código de descuento en particular, la cantidad de ventas generadas y la cantidad de descuento total otorgado para cada uno también. Puede filtrarlo por día, mes, año, etc.You can also filter by order status and for a certain date period.
El informe predeterminado está disponible en informe -> ventas -> cupones.
Y con el script puede encontrar el recuento de coupan usado y los detalles del cliente muy fácilmente:
$coupon = Mage::getModel('salesrule/coupon/usage');
$coupon->load('code', 'coupon_id');
if($coupon->getId()) {
$timesUsed = $coupon->getTimesUsed();
$customer = $coupon->getCustomerId();
echo $timesUsed;
echo $customer;
}
$coupon
tiene un cliente específico vinculado al objeto? Parece que te estás perdiendo algo.
Tuve una solicitud similar de un cliente nuestro, querían saber qué cupón se usó, si lo hubo, en un pedido en particular
por ahora lo estoy haciendo manualmente en db pero tan pronto como haga la extensión para esto actualizaré mi pregunta, espero que esto ayude mientras tanto
SELECT sfo.customer_id AS customer, ce.email, GROUP_CONCAT(cev.value SEPARATOR ' ') as name,
sfo.entity_id, sfo.increment_id,scu.times_used,sc.coupon_id,sc.rule_id,sc.code FROM sales_flat_order sfo
LEFT JOIN salesrule_coupon_usage scu ON sfo.customer_id = scu.customer_id LEFT JOIN salesrule_coupon sc
ON sc.coupon_id = scu.coupon_id LEFT JOIN customer_entity ce ON ce.entity_id = sfo.customer_id
LEFT JOIN customer_entity_varchar cev ON cev.entity_id = sfo.customer_id WHERE (cev.attribute_id IN (5,7)
OR cev.attribute_id IS NULL) GROUP BY sfo.increment_id ORDER BY sfo.increment_id;
algunas líneas pueden estar llenas de nulos, es más probable que sean clientes invitados y algunas tendrán nulos en la información del cupón, estos serán pedidos donde no se usaron cupones
Hay un módulo de cupones de código abierto que he usado (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Crea una nueva grilla de administración:
Admin > Promotions > Coupon Usage
que vincula cupones a pedidos. Puedo confirmar que funciona bien, a pesar de que ahora tiene algunos años.
En una tienda Magento ce-1.8.1.0 encontré el campo de la base de datos applied_rule_ids
en la tabla sales_flat_order
. Parece que esto coincide con la identificación de la Shopping Cart Price Rules
página.
Podría ser útil si ha generado códigos de cupón:
`SELECT COUNT (*) FROM sales_flat_order donde FIND_IN_SET ('1', apply_rule_ids)
FIND_IN_SET()
lugar de=
Tengo un código de cupón que tiene un valor de Usos por cliente de 1, y no puedo usarlo en mi cuenta de cliente. Entonces, consulto la sales_flat_order
tabla, ya que las otras respuestas sugieren ver cuántas veces he usado este código, y no había un orden mío en esa tabla que muestre que usé el código de cupón en cuestión. Tuve que profundizar en el código y encontré que en Mage_SalesRule_Model_Validator::_canProcessRule()
realidad verifica las tablas salesrule_coupon_usage
y salesrule_customer
...
select * from production.mage_salesrule_customer
where customer_id = 58394
Esta consulta anterior mostró que había usado el cupón una vez. No sé por qué muestra que lo usé una vez, y por qué no hay un registro de mi uso en la tabla de pedidos (todavía), pero espero que esto ayude a alguien más que estaba luchando por resolver esto.
Para magento 2, ejecute este sql para obtener el correo electrónico del cliente, el código de cupón, el monto del descuento, el total general y el ID de incremento
select a.customer_email, a.coupon_code, b.increment_id, a.discount_amount,
a.grand_total from `sales_order` as a, `sales_order_grid` as b where
coupon_code is not null AND a.`entity_id` = b.`entity_id`