Как узнать, какой пользователь использовал какой код купона?


9

У меня есть несколько купонных кодов в моем магазине, и я хотел бы иметь возможность отслеживать, какой код мог использовать пользователь. И наоборот, есть ли способ узнать, сколько раз использовался тот или иной код?


1
Могу ли я чем-нибудь помочь вам это закрыть? Дайте мне знать, помогло ли какое-либо из приведенных ниже решений.
Philwinkle

Ответы:


9

Какие клиенты использовали какие купоны:

Я обычно уклоняюсь от необработанных запросов к БД, но в этом случае я сделаю исключение:

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

Вы можете сделать то же самое с ORM Magento - сформулируйте описание того, как это сделать, и отредактируйте его позже, и вот как :

$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

правильно, и я спрашиваю местоположение файла. Вы можете опубликовать то, что вы сделали, чтобы объяснить мне.
Jai

Разве это не купон? Это просто промо? Я думаю, что это довольно очевидно, учитывая, что вопрос был конкретно о кодах.
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;
}

В каком месте разместить этот код?
Jai

В вашем коде, как $couponконкретный клиент привязан к объекту? Кажется, ты что-то упустил.
Ник Роландо

1

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

сейчас я делаю это вручную в БД, но как только я сделаю расширение для этого, я обновлю свой вопрос, надеюсь, это поможет тем временем

   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;

некоторые строки могут быть заполнены нулями, это более вероятно, что гостевые клиенты, а некоторые будут иметь нулевые значения в информации о купоне, это будут заказы, где купоны не использовались


В каком месте разместить свой код?
Jai

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 (*) ОТ sales_flat_order, где FIND_IN_SET ('1', application_rule_ids)


1
он разделен запятой, потому что может быть несколько правил. Так что лучше использовать FIND_IN_SET()вместо=
Фабиан Шменглер

0

У меня есть код купона, значение Uses Per Customer которого равно 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.