我的商店中有一些优惠券代码,我希望能够跟踪用户可能使用的代码。相反,是否有办法查看特定代码使用了多少次?
我的商店中有一些优惠券代码,我希望能够跟踪用户可能使用的代码。相反,是否有办法查看特定代码使用了多少次?
Answers:
哪些客户使用了哪些优惠券:
我通常会避开原始数据库查询,但是在这种情况下,我会例外:
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.
默认报告位于报告->销售->优惠券中。
使用脚本,您可以轻松找到已使用的coupan数量和客户详细信息:
$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
页面中的ID相匹配。
如果您生成了优惠券代码,可能会很有用:
从sales_flat_order中选择COUNT(*),其中FIND_IN_SET('1',Applied_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
上面的查询显示我曾经使用过一次优惠券。我不知道为什么它显示我曾经使用过一次,为什么在订单表中还没有我的使用记录(至今),但是我希望这可以帮助其他正在努力找出答案的人。