Ho alcuni codici coupon nel mio negozio e vorrei essere in grado di tracciare il codice che un utente potrebbe aver utilizzato. Inversamente, c'è un modo per vedere quante volte è stato utilizzato un determinato codice?
Ho alcuni codici coupon nel mio negozio e vorrei essere in grado di tracciare il codice che un utente potrebbe aver utilizzato. Inversamente, c'è un modo per vedere quante volte è stato utilizzato un determinato codice?
Risposte:
Quali clienti hanno utilizzato quali coupon:
Di solito evito le query db non elaborate, ma in questo caso farò un'eccezione:
select customer_email, group_concat(distinct sfo.coupon_code) from sales_flat_order sfo
where coupon_code is not null
group by customer_email;
Potresti fare lo stesso con Magento ORM: formulerai un articolo su come farlo e modificarlo in seguito ed ecco come :
$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'));
Quante volte è stato utilizzato un coupon:
Come già sottolineato in un'altra risposta, questo è in un rapporto. Al livello più elementare la query sarebbe:
select coupon_code,count(coupon_code) from sales_flat_order
group by coupon_code;
Il modo di gestire questo ORM-centric è anche abbastanza semplice:
$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'));
Si noti che ciò non tiene conto dello stato dell'ordine o del pagamento fatturato.
Reports > Sales > Coupons
nella tua area di amministrazione ti mostrerà quante volte è stato utilizzato un particolare codice di sconto, la quantità di vendite generate per e la quantità di sconto totale dato anche per ciascuno. Puoi filtrarlo per giorno, mese, anno ecc.You can also filter by order status and for a certain date period.
Il rapporto predefinito è disponibile nel rapporto -> vendite -> coupon.
E con lo script puoi trovare facilmente il conteggio dei coupan usati e i dettagli dei clienti:
$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
ha un cliente specifico legato all'oggetto? Sembra che ti manchi qualcosa.
Ho avuto una richiesta simile da parte del nostro cliente, volevano sapere quale coupon veniva utilizzato se presente su un determinato ordine
per ora lo sto facendo manualmente in db ma non appena tratterò l'estensione per questo aggiornerò la mia domanda, spero che questo possa aiutare nel frattempo
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;
alcune righe potrebbero essere piene di null questo è più probabile clienti ospiti e alcuni avranno null nelle informazioni sui coupon, questi saranno ordini in cui i coupon non sono stati utilizzati
C'è un modulo coupon open source che ho usato (Magento 1 - EE) https://github.com/pavelnovitsky/CouponUsage
Crea una nuova griglia di amministrazione:
Admin > Promotions > Coupon Usage
che collega i coupon agli ordini. Posso confermare che funziona bene, anche se ormai ha qualche anno.
In un negozio Magento ce-1.8.1.0 ho trovato il campo del database applied_rule_ids
nella tabella sales_flat_order
. Sembra che questo corrisponda all'ID dalla Shopping Cart Price Rules
pagina.
Potrebbe essere utile se hai generato codici coupon:
`SELEZIONA COUNT (*) FROM sales_flat_order dove FIND_IN_SET ('1', application_rule_ids)
FIND_IN_SET()
invece di=
Ho un codice coupon che ha un valore Usi per cliente pari a 1 e non sono in grado di utilizzarlo sul mio account cliente. Quindi interrogo la sales_flat_order
tabella mentre le altre risposte suggeriscono di vedere quante volte ho usato questo codice e non c'era un mio ordine in quella tabella che mostra che ho usato il codice coupon in questione. Ho dovuto scavare attraverso il codice e ho trovato Mage_SalesRule_Model_Validator::_canProcessRule()
che controlla effettivamente le tabelle salesrule_coupon_usage
e salesrule_customer
...
select * from production.mage_salesrule_customer
where customer_id = 58394
Questa query sopra mostrava che avevo usato il coupon una volta. Non so perché dimostri di averlo usato una volta e perché non ci sono ancora registrazioni del mio uso nella tabella degli ordini, ma spero che ciò aiuti qualcun altro che sta lottando per capirlo.
Per magento 2, eseguire questo sql per ottenere e-mail del cliente, codice coupon, importo dello sconto, totale complessivo e ID incremento
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`