自分のストアにいくつかのクーポンコードがあります。ユーザーが利用したコードを追跡したいのですが。逆に、特定のコードが使用された回数を確認する方法はありますか?
自分のストアにいくつかのクーポンコードがあります。ユーザーが利用したコードを追跡したいのですが。逆に、特定のコードが使用された回数を確認する方法はありますか?
回答:
どの顧客がどのクーポンを使用したか:
私は通常、生の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;
一部の行はnullでいっぱいである可能性があり、これはゲスト顧客である可能性が高く、一部はクーポン情報にnullがあり、これらはクーポンが使用されなかった注文になります
私が使用したオープンソースのクーポンモジュールがあります(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と一致するようです。
クーポンコードを生成した場合に便利です。
`SELECT COUNT(*)FROM sales_flat_order where FIND_IN_SET( '1'、applied_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
上記のクエリは、クーポンを1回使用したことを示しています。なぜそれを1回使用したのか、なぜ注文の記録がまだ(まだ)ないのかはわかりませんが、これが問題を解くのに苦労していた他の人に役立つことを願っています。