Mam kilka kodów kuponów w moim sklepie i chciałbym móc śledzić, jakiego kodu mógł użyć użytkownik. Odwrotnie, czy istnieje sposób, aby sprawdzić, ile razy dany kod został użyty?
Mam kilka kodów kuponów w moim sklepie i chciałbym móc śledzić, jakiego kodu mógł użyć użytkownik. Odwrotnie, czy istnieje sposób, aby sprawdzić, ile razy dany kod został użyty?
Odpowiedzi:
Którzy klienci wykorzystali, które kupony:
Zwykle unikam surowych zapytań db, ale w tym przypadku zrobię wyjątek:
select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;
Możesz zrobić to samo z Magento ORM - sformułuje opis, jak to zrobić, a następnie edytuje, a oto jak :
$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'));
Ile razy wykorzystano kupon:
Jak już wskazano w innej odpowiedzi, jest to w raporcie. Na najbardziej podstawowym poziomie zapytanie to:
select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;
Sposób radzenia sobie z tym w ORM jest również dość prosty:
$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'));
Pamiętaj, że nie uwzględnia to statusu zamówienia ani płatności zafakturowanej.
Reports > Sales > Coupons
w obszarze administracyjnym zobaczysz, ile razy użyty został określony kod rabatowy, ilość wygenerowanej sprzedaży oraz kwota całkowitego rabatu udzielona dla każdego z nich. Możesz go filtrować według dnia, miesiąca, roku itp.You can also filter by order status and for a certain date period.
Domyślny raport jest dostępny w raporcie -> sprzedaż -> kupony.
Za pomocą skryptu można bardzo łatwo znaleźć liczbę używanych coupan i dane klienta:
$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
klient ma przypisany do obiektu określony klient? Wygląda na to, że czegoś brakuje.
Miałem podobną prośbę od naszego klienta. Chcieli wiedzieć, który kupon został wykorzystany, jeśli w ogóle na konkretne zamówienie
na razie robię to ręcznie w db, ale jak tylko skończę dla tego rozszerzenie, zaktualizuję moje pytanie, mam nadzieję, że to pomoże w międzyczasie
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;
niektóre wiersze mogą być pełne wartości zerowych, co jest bardziej prawdopodobne dla klientów, a niektóre będą zawierać wartości zerowe w informacjach o kuponie, będą to zamówienia, w których kupony nie zostały wykorzystane
Jest moduł kuponu open source, którego użyłem (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Tworzy nową siatkę administracyjną:
Admin > Promotions > Coupon Usage
który łączy kupony z zamówieniami. Mogę potwierdzić, że działa dobrze, mimo że ma już kilka lat.
W sklepie Magento ce-1.8.1.0 znalazłem pole bazy danych applied_rule_ids
w tabeli sales_flat_order
. Wygląda na to, że pasuje do identyfikatora ze Shopping Cart Price Rules
strony.
Może być przydatny, jeśli wygenerowałeś kody kuponów:
`SELECT COUNT (*) FROM sales_flat_order gdzie FIND_IN_SET ('1', Appl_rule_ids)
FIND_IN_SET()
zamiast=
Mam kod kuponu, który ma wartość Wykorzystanie na klienta 1, i nie mogę go użyć na moim koncie klienta. Pytam więc sales_flat_order
tabelę, ponieważ inne odpowiedzi sugerują, jak razy użyłem tego kodu, a moja tabela nie zawierała mojej kolejności pokazującej, że użyłem danego kodu kuponu. Musiałem przekopać się przez kod i znalazłem w Mage_SalesRule_Model_Validator::_canProcessRule()
nim faktycznie sprawdza tabele salesrule_coupon_usage
i salesrule_customer
...
select * from production.mage_salesrule_customer
where customer_id = 58394
Powyższe zapytanie wykazało, że użyłem kuponu jeden raz. Nie wiem, dlaczego to pokazuje, że użyłem go raz i dlaczego (jeszcze) nie ma zapisów o moim użyciu, ale mam nadzieję, że to pomoże komuś, kto miał problem z tym.
W przypadku Magento 2 uruchom ten kod SQL, aby uzyskać adres e-mail klienta, kod kuponu, kwotę rabatu, sumę całkowitą i identyfikator wzrostu
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`