Tenho alguns códigos de cupom em minha loja e gostaria de acompanhar o código que um usuário pode ter utilizado. Inversamente, existe uma maneira de ver quantas vezes um código específico foi usado?
Tenho alguns códigos de cupom em minha loja e gostaria de acompanhar o código que um usuário pode ter utilizado. Inversamente, existe uma maneira de ver quantas vezes um código específico foi usado?
Respostas:
Quais clientes usaram quais cupons:
Normalmente, evito consultas de banco de dados brutas, mas neste caso, farei uma exceção:
select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;
Você pode fazer o mesmo com o Magento ORM - formulará um artigo sobre como fazer isso e depois editará e aqui está 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'));
Quantas vezes um cupom foi usado:
Como já apontado em outra resposta, isso está em um relatório. No nível mais básico, a consulta seria:
select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;
A maneira centrada no ORM de lidar com isso também é bastante direta:
$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'));
Observe que isso não leva em consideração o status do pedido ou o pagamento faturado.
Reports > Sales > Coupons
na sua área de administração, você verá quantas vezes um código de desconto específico foi usado, a quantidade de vendas gerada e a quantidade de desconto total concedida a cada uma delas. Você pode filtrá-lo por dia, mês, ano etc.You can also filter by order status and for a certain date period.
O relatório padrão está disponível no relatório -> vendas -> cupons.
E com o script você pode encontrar a contagem de cupons usados e os detalhes do cliente com muita facilidade:
$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
cliente específico está vinculado ao objeto? Parece que está faltando alguma coisa.
Eu recebi uma solicitação semelhante do nosso cliente, eles queriam saber qual cupom foi usado, se houver, em um pedido específico
por enquanto estou fazendo isso manualmente em db, mas assim que eu compensar a extensão, atualizarei minha pergunta, espero que isso ajude enquanto isso
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;
algumas linhas podem estar cheias de nulos, é mais provável que os clientes convidados e alguns terão nulos nas informações do cupom, esses serão pedidos em que os cupons não foram usados
Existe um módulo de cupom de código aberto que eu usei (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Ele cria uma nova grade de administração:
Admin > Promotions > Coupon Usage
que vincula cupons a pedidos. Posso confirmar que funciona bem, apesar de já ter alguns anos.
Em uma loja Magento ce-1.8.1.0, encontrei o campo do banco de dados applied_rule_ids
na tabela sales_flat_order
. Parece que isso corresponde ao ID da Shopping Cart Price Rules
página.
Pode ser útil se você tiver gerado códigos de cupom:
`SELECT COUNT (*) FROM sales_flat_order em que FIND_IN_SET ('1', applic_rule_ids)
FIND_IN_SET()
em vez de=
Eu tenho um código de cupom com um valor de Usos por cliente igual a 1 e não consigo usá-lo na minha conta de cliente. Por isso, consulta a sales_flat_order
tabela, pois as outras respostas sugerem para ver os horários em que usei esse código, e não havia uma ordem minha nessa tabela que mostre que usei o código do cupom em questão. Eu tive que cavar o código e encontrado Mage_SalesRule_Model_Validator::_canProcessRule()
nele, na verdade, verifica as tabelas salesrule_coupon_usage
e salesrule_customer
..
select * from production.mage_salesrule_customer
where customer_id = 58394
Esta consulta acima mostrou que eu tinha usado o cupom uma vez. Não sei por que ele mostra que o usei uma vez e por que não há registro de meu uso na tabela de pedidos (ainda), mas espero que isso ajude alguém que estava lutando para descobrir isso.
Para o magento 2, execute este sql para obter o email do cliente, o código do cupom, o valor do desconto, o total geral e o 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`