답변:
어떤 고객이 어떤 쿠폰을 사용했는지 :
나는 보통 원시 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;
- 당신은 마 젠토 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;
일부 행은 널로 가득 찼을 수 있습니다. 이는 게스트 고객 일 가능성이 높으며 일부는 쿠폰 정보에 널을 포함합니다. 쿠폰이 사용되지 않은 주문입니다.
내가 사용한 오픈 소스 쿠폰 모듈이 있습니다 (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와 일치하는 것 같습니다 .
쿠폰 코드를 생성 한 경우 유용 할 수 있습니다.
`IND_IN_SET ( '1', apply_rule_ids)에서 sales_flat_order에서 SELECT COUNT (*)
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
위의 쿼리는 쿠폰을 한 번 사용한 것으로 나타났습니다. 왜 한 번 사용했는지, 주문 테이블에 아직 사용 기록이없는 이유는 알 수 없지만 이것이 이것을 이해하기 위해 고군분투하는 다른 사람에게 도움이되기를 바랍니다.