我如何找出什么用户使用了优惠券代码?


Answers:


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;

您可以使用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

这是在Magento商店的上下文中从PHP脚本运行的重要事项。
philwinkle '16

对,我问文件的位置。您可以发布所做的工作来向我解释。
2016年

那不是优惠券吗?这只是促销吗?考虑到问题专门针对代码,我认为这很明显。
philwinkle '17

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

默认报告位于报告->销售->优惠券中。

使用脚本,您可以轻松找到已使用的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;
}

将此代码放在哪个位置?
2016年

在您的代码中,$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;

一些行可能充满空值,这更可能是访客客户,而某些行的优惠券信息中将包含空值,这些是未使用优惠券的订单


将代码放在哪个位置?
2016年


0

在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)


1
它用逗号分隔,因为可能涉及多个规则。因此,请更好地使用FIND_IN_SET()而不是=
Fabian Schmengler '16

0

我有一个优惠券代码,其“每个客户的使用次数”值为1,并且无法在我的客户帐户中使用它。因此,我查询该sales_flat_order表,其他答案表明我使用该代码的时间如何,并且该表中没有我的命令显示我使用了相关优惠券代码。我不得不仔细研究代码,发现Mage_SalesRule_Model_Validator::_canProcessRule()其中实际上检查了表salesrule_coupon_usagesalesrule_customer..

select * from production.mage_salesrule_customer
where customer_id = 58394  

上面的查询显示我曾经使用过一次优惠券。我不知道为什么它显示我曾经使用过一次,为什么在订单表中还没有我的使用记录(至今),但是我希望这可以帮助其他正在努力找出答案的人。


0

对于magento 2,请运行此sql以获取客户电子邮件,优惠券代码,折扣金额,总计和增量ID

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`
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.