У меня есть несколько купонных кодов в моем магазине, и я хотел бы иметь возможность отслеживать, какой код мог использовать пользователь. И наоборот, есть ли способ узнать, сколько раз использовался тот или иной код?
У меня есть несколько купонных кодов в моем магазине, и я хотел бы иметь возможность отслеживать, какой код мог использовать пользователь. И наоборот, есть ли способ узнать, сколько раз использовался тот или иной код?
Ответы:
Какие клиенты использовали какие купоны:
Я обычно уклоняюсь от необработанных запросов к БД, но в этом случае я сделаю исключение:
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'));
Обратите внимание, что это не учитывает статус заказа или выставленного счета.
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
конкретный клиент привязан к объекту? Кажется, ты что-то упустил.
У меня был похожий запрос от нашего клиента, они хотели узнать, какой купон использовался, если таковой имеется на конкретный заказ
сейчас я делаю это вручную в БД, но как только я сделаю расширение для этого, я обновлю свой вопрос, надеюсь, это поможет тем временем
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 (*) ОТ sales_flat_order, где FIND_IN_SET ('1', application_rule_ids)
FIND_IN_SET()
вместо=
У меня есть код купона, значение 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
Этот запрос показал, что я использовал купон один раз. Я не знаю, почему это показывает, что я использовал его один раз, и почему нет записи о моем использовании в таблице заказов (пока), но я надеюсь, что это поможет кому-то еще, кто изо всех сил пытался выяснить это.
Для 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`