Як дізнатися, хто користувач використовував який код купона?


9

У мене в магазині є кілька кодів купонів, і я хотів би мати можливість відслідковувати, який код користувач може використати. І навпаки, чи є спосіб побачити, скільки разів використовувався той чи інший код?


1
Чи можу я щось зробити, щоб допомогти вам закрити це? Повідомте мене, чи допомогло якесь із наведених нижче рішень.
philwinkle

Відповіді:


9

Які клієнти використовували купони:

Я зазвичай ухиляюся від необроблених запитів db, але в цьому випадку я зроблю виняток:

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

Ви можете зробити те ж саме з Magento ORM - сформулюйте опис того, як це зробити та після цього редагувати, і ось як :

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

Скільки разів купон був використаний:

Як уже зазначалося в іншій відповіді, це є у звіті. На самому базовому рівні запитом для цього буде:

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

Спосіб, орієнтований на ORM, також є досить простим:

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

Зауважте, що це не враховує стан замовлення або платіж за фактурами.


Куди додати цей код, щоб зробити роботу "Які клієнти використовували які купони" у magento 1.9
Jai

Це суть запуску із PHP-скрипту в контексті магазину Magento.
philwinkle

правильно, і я прошу розташування файлу. Ви можете опублікувати те, що ви зробили, щоб пояснити мені.
Джай

Хіба це не купон? Це просто промо? Я думаю, що це очевидно, враховуючи питання про коди.
philwinkle

6

Reports > Sales > Couponsу вашій адміністраторській області ви побачите, скільки разів був використаний той чи інший код знижки, кількість отриманих продажів та сума загальної знижки, наданої для кожного. Ви можете відфільтрувати його за днем, місяцем, роком тощо.You can also filter by order status and for a certain date period.


Дякую Блер! Чи знаєте ви, чи є спосіб побачити, хто з моїх користувачів використовував певний код?
Крістіна Правило

1
У функціональності Magento за замовчуванням немає нічого для цього. (Окрім того, як дивитись на кожне замовлення окремо). Але інформацію можна легко перетягнути на будь-яку сторінку в області адміністратора, яку ви хочете. Дані зрештою зберігаються в таблиці бази даних. Так, наприклад, у вас є Звіти> Клієнти> Клієнти за загальною кількістю замовлень, це може бути місцем, де можна це втягнути. Просто створити стовпчик під назвою "купон" або подібне, і вставити код там, де він використовується.
MagentoMac

Щось подібне до цього модуля нижче також дозволить вам додати "код купона" на сторінку "Продаж> Замовлення", amasty.com/better-order-management.html, на яку я думаю, саме те, що ви шукаєте?
MagentoMac

2

Звіт за замовчуванням доступний у звіті -> продажі -> купонах.

А за допомогою сценарію ви можете легко знайти кількість використаних купонів та деталі клієнта:

$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пов’язаний конкретний клієнт із об'єктом? Здається, вам щось не вистачає.
Нік Роландо

1

У мене був подібний запит від нашого клієнта, вони хотіли дізнатися, який купон використовується, якщо такий є на певне замовлення

на даний момент я це роблю вручну в db, але як тільки я складу розширення для цього, я оновлю своє запитання, сподіваюся, що це допоможе тим часом

   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;

деякі рядки можуть бути заповнені нулями, це швидше гості клієнтів, а деякі матимуть нулі в інформації про купони, це замовлення, коли купони не використовувалися


В якому місці розмістити свій код?
Джай

0

Є купонний модуль із відкритим кодом, який я використав (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage

Створюється нова адміністративна сітка:

Admin > Promotions > Coupon Usage   

яка пов'язує купони на замовлення. Я можу підтвердити, що він працює добре, хоча йому вже кілька років.


0

У магазині Magento ce-1.8.1.0 я знайшов поле бази даних applied_rule_idsу таблиці sales_flat_order. Схоже, це відповідає ідентифікатору зі Shopping Cart Price Rulesсторінки.

Може бути корисним, якщо ви створили коди купонів:

`SELECT COUNT (*) FROM sales_flat_order, де FIND_IN_SET ('1', apply_rule_ids)


1
це розділяється комою, оскільки може бути кілька правил. Тож краще використовувати FIND_IN_SET()замість цього=
Фабіан Шменглер

0

У мене є код купона, який має значення "Використання на клієнта" 1, і я не в змозі використовувати його у своєму обліковому записі клієнта. Тож я запитую sales_flat_orderтаблицю, як показують інші відповіді, щоб побачити, як раз я використовував цей код, і в цій таблиці не було мого порядку, який показує, що я використовував відповідний код купона. Я повинен був перекопати код і виявив, що Mage_SalesRule_Model_Validator::_canProcessRule()він фактично перевіряє таблиці salesrule_coupon_usageі salesrule_customer..

select * from production.mage_salesrule_customer
where customer_id = 58394  

Цей запит вище показав, що я використав купон один раз. Я не знаю, чому це показує, що я його використовував колись, і чому в таблиці замовлень (поки) немає запису про моє використання, але я сподіваюся, що це допомагає комусь іншому, хто намагався це зрозуміти.


0

Для magento 2 запустіть цей sql, щоб отримати електронну пошту клієнта, код купона, суму знижки, загальну суму та ідентифікатор приросту

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`
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.