У мене в магазині є кілька кодів купонів, і я хотів би мати можливість відслідковувати, який код користувач може використати. І навпаки, чи є спосіб побачити, скільки разів використовувався той чи інший код?
У мене в магазині є кілька кодів купонів, і я хотів би мати можливість відслідковувати, який код користувач може використати. І навпаки, чи є спосіб побачити, скільки разів використовувався той чи інший код?
Відповіді:
Які клієнти використовували купони:
Я зазвичай ухиляюся від необроблених запитів 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'));
Зауважте, що це не враховує стан замовлення або платіж за фактурами.
Reports > Sales > Coupons
у вашій адміністраторській області ви побачите, скільки разів був використаний той чи інший код знижки, кількість отриманих продажів та сума загальної знижки, наданої для кожного. Ви можете відфільтрувати його за днем, місяцем, роком тощо.You can also filter by order status and for a certain date period.
Звіт за замовчуванням доступний у звіті -> продажі -> купонах.
А за допомогою сценарію ви можете легко знайти кількість використаних купонів та деталі клієнта:
$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
пов’язаний конкретний клієнт із об'єктом? Здається, вам щось не вистачає.
У мене був подібний запит від нашого клієнта, вони хотіли дізнатися, який купон використовується, якщо такий є на певне замовлення
на даний момент я це роблю вручну в 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;
деякі рядки можуть бути заповнені нулями, це швидше гості клієнтів, а деякі матимуть нулі в інформації про купони, це замовлення, коли купони не використовувалися
Є купонний модуль із відкритим кодом, який я використав (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Створюється нова адміністративна сітка:
Admin > Promotions > Coupon Usage
яка пов'язує купони на замовлення. Я можу підтвердити, що він працює добре, хоча йому вже кілька років.
У магазині 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)
FIND_IN_SET()
замість цього=
У мене є код купона, який має значення "Використання на клієнта" 1, і я не в змозі використовувати його у своєму обліковому записі клієнта. Тож я запитую sales_flat_order
таблицю, як показують інші відповіді, щоб побачити, як раз я використовував цей код, і в цій таблиці не було мого порядку, який показує, що я використовував відповідний код купона. Я повинен був перекопати код і виявив, що Mage_SalesRule_Model_Validator::_canProcessRule()
він фактично перевіряє таблиці salesrule_coupon_usage
і salesrule_customer
..
select * from production.mage_salesrule_customer
where customer_id = 58394
Цей запит вище показав, що я використав купон один раз. Я не знаю, чому це показує, що я його використовував колись, і чому в таблиці замовлень (поки) немає запису про моє використання, але я сподіваюся, що це допомагає комусь іншому, хто намагався це зрозуміти.
Для 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`