Comment savoir quel utilisateur a utilisé quel code de réduction?

9

J'ai quelques codes promotionnels dans mon magasin et j'aimerais pouvoir suivre le code qu'un utilisateur peut avoir utilisé. Inversement, existe-t-il un moyen de voir combien de fois un code particulier a été utilisé?

Christina Rule
la source
1
Y a-t-il quelque chose que je puisse faire pour vous aider à résoudre ce problème? Faites-moi savoir si l'une des solutions ci-dessous a aidé.
philwinkle

Réponses:

9

Quels clients ont utilisé quels coupons:

Je préfère généralement éviter les requêtes db brutes, mais dans ce cas, je ferai une exception:

select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;

Vous pouvez faire de même avec l'ORM de Magento - formulerez un résumé sur la façon de le faire et éditez ensuite et voici comment :

$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'));

Combien de fois un coupon a été utilisé:

Comme déjà indiqué dans une autre réponse, cela figure dans un rapport. Au niveau le plus élémentaire, la requête serait:

select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;

La manière centrée sur l'ORM de gérer cela est également assez simple:

$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'));

Notez que cela ne prend pas en compte l'état de la commande ou le paiement facturé.

philwinkle
la source
Où ajouter ce code au travail make « Quels sont les clients utilisés qui coupons » dans magento 1.9
Jai
Il s'agit d'un fonctionnement à partir d'un script PHP dans le contexte de la boutique Magento.
philwinkle
à droite et je demande l'emplacement du fichier. Vous pouvez poster ce que vous avez fait pour m'expliquer.
Jai
N'est-ce pas alors un coupon? C'est juste une promo? Je pense que c'est assez évident étant donné que la question portait spécifiquement sur les codes.
philwinkle
6

Reports > Sales > Couponsdans votre zone d'administration vous permettra de voir combien de fois un code de réduction particulier a été utilisé, le montant des ventes générées et le montant de la remise totale accordée pour chacun. Vous pouvez le filtrer par jour, mois, année, etc.You can also filter by order status and for a certain date period.

MagentoMac
la source
Merci Blair! Savez-vous s'il existe un moyen de voir lequel de mes utilisateurs a utilisé un code spécifique?
Christina Rule
1
Il n'y a rien dans la fonctionnalité par défaut de Magento pour le faire. (Autre que de regarder chaque commande individuellement). Mais les informations peuvent facilement être placées dans la page de votre choix dans la zone d'administration. Après tout, les données sont stockées dans une table de base de données. Ainsi, par exemple, vous avez Rapports> Clients> Clients par total de commandes, ce pourrait être un endroit où les tirer. Il suffit de créer une colonne appelée "coupon" ou similaire, et d'insérer le code là où il est utilisé.
MagentoMac
Quelque chose comme ce module ci-dessous vous permettra également d'ajouter un "code promo" à la page Ventes> Commandes, amasty.com/better-order-management.html qui, je pense, est exactement ce que vous recherchez?
MagentoMac
2

Le rapport par défaut est disponible dans rapport -> ventes -> coupons.

Et avec le script, vous pouvez trouver très facilement le nombre de coupons utilisés et les détails du client:

$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
la source
À quel endroit mettre ce code?
Jai
Dans votre code, comment $couponun client spécifique est-il lié à l'objet? On dirait que vous manquez quelque chose.
Nick Rolando
1

J'ai eu une demande similaire de notre client, ils voulaient savoir quel coupon était utilisé le cas échéant sur une commande particulière

pour l'instant je fais cela manuellement dans db mais dès que je vais faire l'extension pour cela je mettrai à jour ma question, j'espère que cela aidera en attendant

   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;

certaines lignes peuvent être remplies de null, il s'agit plus probablement de clients invités et d'autres auront des null dans les informations sur les coupons, ce seront des commandes où les coupons n'ont pas été utilisés

tomhre
la source
À quel endroit mettre votre code?
Jai
0

Il y a un module de coupon open source que j'ai utilisé (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage

Il crée une nouvelle grille d'administration:

Admin > Promotions > Coupon Usage   

qui relie les coupons aux commandes. Je peux confirmer que cela fonctionne bien, même si cela fait maintenant quelques années.

Silas Palmer
la source
0

Dans une boutique Magento ce-1.8.1.0, j'ai trouvé le champ de base de données applied_rule_idsdans le tableau sales_flat_order. On dirait que cela correspond à l'ID de la Shopping Cart Price Rulespage.

Peut être utile si vous avez généré des codes de réduction:

`SELECT COUNT (*) FROM sales_flat_order where FIND_IN_SET ('1', applied_rule_ids)

PiTheNumber
la source
1
il est séparé par des virgules car il peut y avoir plusieurs règles impliquées. Donc mieux utiliser FIND_IN_SET()au lieu de=
Fabian Schmengler
0

J'ai un code de coupon dont la valeur Uses par client est 1 et je ne peux pas l'utiliser sur mon compte client. J'ai donc interrogé le sales_flat_ordertableau comme les autres réponses le suggèrent pour voir combien de fois j'ai utilisé ce code, et il n'y avait pas d'ordre de ma part dans ce tableau qui montre que j'ai utilisé le code de coupon en question. J'ai dû fouiller dans le code et y ai trouvé Mage_SalesRule_Model_Validator::_canProcessRule()vérifie les tables salesrule_coupon_usageet salesrule_customer..

select * from production.mage_salesrule_customer
where customer_id = 58394  

Cette requête ci-dessus a montré que j'avais utilisé le coupon une fois. Je ne sais pas pourquoi cela montre que je l'ai utilisé une fois, et pourquoi il n'y a pas encore d'enregistrement de mon utilisation dans le tableau des commandes, mais j'espère que cela aide quelqu'un d'autre qui avait du mal à comprendre cela.

Nick Rolando
la source
0

Pour magento 2, veuillez exécuter ce sql pour obtenir l'e-mail du client, le code de coupon, le montant de la remise, le total général et l'identifiant d'incrémentation

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
la source