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é?
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é?
Réponses:
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é.
Reports > Sales > Coupons
dans 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.
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;
}
$coupon
un client spécifique est-il lié à l'objet? On dirait que vous manquez quelque chose.
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
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.
Dans une boutique Magento ce-1.8.1.0, j'ai trouvé le champ de base de données applied_rule_ids
dans le tableau sales_flat_order
. On dirait que cela correspond à l'ID de la Shopping Cart Price Rules
page.
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)
FIND_IN_SET()
au lieu de=
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_order
tableau 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_usage
et 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.
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`