Ich habe ein paar Gutscheincodes in meinem Geschäft und möchte nachverfolgen können, welchen Code ein Benutzer möglicherweise verwendet hat. Gibt es umgekehrt eine Möglichkeit zu sehen, wie oft ein bestimmter Code verwendet wurde?
Ich habe ein paar Gutscheincodes in meinem Geschäft und möchte nachverfolgen können, welchen Code ein Benutzer möglicherweise verwendet hat. Gibt es umgekehrt eine Möglichkeit zu sehen, wie oft ein bestimmter Code verwendet wurde?
Antworten:
Welche Kunden haben welche Gutscheine verwendet:
Normalerweise scheue ich rohe Datenbankabfragen, aber in diesem Fall mache ich eine Ausnahme:
select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;
Sie können dasselbe mit dem Magento ORM tun - formulieren Sie eine Beschreibung, wie das geht, und bearbeiten Sie sie anschließend. Hier erfahren Sie, wie :
$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'));
Wie oft wurde ein Gutschein verwendet:
Wie bereits in einer anderen Antwort erwähnt, ist dies in einem Bericht. Auf der einfachsten Ebene wäre die Abfrage dafür:
select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;
Die ORM-zentrierte Vorgehensweise ist ebenfalls recht einfach:
$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'));
Beachten Sie, dass dies den Bestellstatus oder die in Rechnung gestellte Zahlung nicht berücksichtigt.
Reports > Sales > Coupons
In Ihrem Administrationsbereich können Sie sehen, wie oft ein bestimmter Rabattcode verwendet wurde, wie viel Umsatz generiert wurde und wie viel Gesamtrabatt für jeden einzelnen angegeben wurde. Sie können es nach Tag, Monat, Jahr usw. filtern.You can also filter by order status and for a certain date period.
Der Standardbericht ist unter Bericht -> Verkäufe -> Gutscheine verfügbar.
Und mit dem Skript können Sie die Anzahl der gebrauchten Coupans und Kundendaten sehr einfach finden:
$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
ein bestimmter Kunde an das Objekt gebunden? Scheint, als ob dir etwas fehlt.
Ich hatte eine ähnliche Anfrage von einem unserer Kunden, sie wollten wissen, welcher Gutschein für eine bestimmte Bestellung verwendet wurde
im Moment mache ich das manuell in db, aber sobald ich die Erweiterung dafür erfunden habe, werde ich meine Frage aktualisieren, hoffe, dass dies in der Zwischenzeit helfen wird
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;
Einige Zeilen sind möglicherweise voller Nullen. Dies ist wahrscheinlicher für Gastkunden, und einige enthalten Nullen in den Gutscheininformationen. Dies sind Bestellungen, bei denen keine Gutscheine verwendet wurden
Es gibt ein Open-Source-Gutscheinmodul, das ich verwendet habe (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Es wird ein neues Admin-Raster erstellt:
Admin > Promotions > Coupon Usage
Hier werden Gutscheine mit Bestellungen verknüpft. Ich kann bestätigen, dass es gut funktioniert, obwohl es jetzt ein paar Jahre alt ist.
In einem Magento ce-1.8.1.0-Shop habe ich das Datenbankfeld applied_rule_ids
in der Tabelle gefunden sales_flat_order
. Sieht so aus, als würde dies mit der ID auf der Shopping Cart Price Rules
Seite übereinstimmen .
Könnte nützlich sein, wenn Sie Gutscheincodes generiert haben:
`SELECT COUNT (*) FROM sales_flat_order wobei FIND_IN_SET ('1', apply_rule_ids)
FIND_IN_SET()
statt=
Ich habe einen Gutscheincode mit dem Wert "Verwendet pro Kunde" von 1 und kann ihn nicht für mein Kundenkonto verwenden. Daher frage ich die sales_flat_order
Tabelle ab, da die anderen Antworten darauf hinweisen, wie oft ich diesen Code verwendet habe, und es gab keine Reihenfolge in dieser Tabelle, aus der hervorgeht, dass ich den betreffenden Gutscheincode verwendet habe. Ich musste den Code durchforsten und fand Mage_SalesRule_Model_Validator::_canProcessRule()
darin tatsächlich die Tabellen salesrule_coupon_usage
und salesrule_customer
..
select * from production.mage_salesrule_customer
where customer_id = 58394
Diese Abfrage oben zeigte, dass ich den Gutschein einmal verwendet hatte. Ich weiß nicht, warum es zeigt, dass ich es einmal benutzt habe und warum es (noch) keine Aufzeichnungen über meine Verwendung in der Auftragstabelle gibt, aber ich hoffe, dies hilft jemand anderem, der Schwierigkeiten hatte, dies herauszufinden.
Führen Sie für Magento 2 diese SQL aus, um Kunden-E-Mail, Gutscheincode, Rabattbetrag, Gesamtsumme und Inkrement-ID zu erhalten
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`