Como descubro qual usuário usou o código de cupom?

9

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?

Regra de Christina
fonte
11
Há algo que eu possa fazer para ajudá-lo a encerrar isso? Deixe-me saber se alguma das soluções abaixo ajudou.
philwinkle

Respostas:

9

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.

philwinkle
fonte
Onde adicionar esse código para fazer o trabalho "Quais clientes usaram quais cupons" no magento 1.9
Jai
Esta é uma questão de executar a partir de um script PHP dentro do contexto da loja Magento.
philwinkle
certo e estou perguntando a localização do arquivo. Você pode postar o que você fez para me explicar.
Jai
Então não é um cupom? É apenas uma promoção? Eu acho que isso é meio óbvio, dado que a pergunta era especificamente sobre códigos.
22417 philwinkle
6

Reports > Sales > Couponsna 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.

MagentoMac
fonte
Obrigado Blair! Você sabe se existe uma maneira de ver qual dos meus usuários usou um código específico?
Regra Christina
11
Não há nada na funcionalidade padrão do Magento para fazer isso. (Além de olhar para cada pedido individualmente). Mas a informação pode ser facilmente puxada para qualquer página na área de administração que você deseja. Os dados são armazenados em uma tabela de banco de dados, afinal. Assim, por exemplo, você tem Relatórios> Clientes> Clientes por totais de pedidos, este poderia ser um local para fazer isso. Basta criar uma coluna chamada "cupom" ou algo semelhante e inserir o código onde for usado.
MagentoMac 13/11
Algo como este módulo abaixo também permitirá que você adicione "código de cupom" à página Vendas> Pedidos, amasty.com/better-order-management.html , que eu acho que é exatamente o que você está procurando?
MagentoMac
2

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;
}
Kajal S
fonte
Em qual local colocar esse código?
Jai
No seu código, como o $couponcliente específico está vinculado ao objeto? Parece que está faltando alguma coisa.
Nick Rolando
1

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

tomhre
fonte
Em qual local colocar seu código?
Jai
0

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.

Silas Palmer
fonte
0

Em uma loja Magento ce-1.8.1.0, encontrei o campo do banco de dados applied_rule_idsna tabela sales_flat_order. Parece que isso corresponde ao ID da Shopping Cart Price Rulespá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)

PiTheNumber
fonte
11
é separado por vírgula, pois pode haver várias regras envolvidas. Então é melhor usar FIND_IN_SET()em vez de=
Fabian Schmengler
0

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_ordertabela, 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_usagee 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.

Nick Rolando
fonte
0

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`
Rav
fonte