C'è un modo per dire se un ordine è stato inserito attraverso il frontend del sito web o inserito attraverso il pannello di amministrazione?Differenzia acquisti backend e frontend in Magento
risposta
Per impostazione predefinita, Magento memorizza solo il remote_ip
nella tabella sales_flat_order
ad un ordinamento che è posto dal cliente (mentre l'ordine dell'amministratore è impostato su null).
Quindi provare questo:
if(!empty($order->getRemoteIp()){
//place online
}
else{
// place by admin
}
Vedi risposta Programmatically differentiate between admin & customer-placed orders
Ogni ordine ha un store_id
, se immesso tramite administraction sarà 0 (per archivio 'admin') o null.
if ($order->getStoreId()) {
// was placed via frontend
}
Non utilizzare getStore()
come quello non tornerà sempre l'oggetto di archivio di amministrazione in modo affidabile.
Non funziona con le ultime versioni di Magento. (Vedi commento)
di clockworkgeek è corretta. Aggiungerò un altro modo, che è principalmente utile per gli utenti amministrativi che non sono programmatori. Se si guarda l'ordine nella schermata di amministrazione (Admin -> vendite -> Ordini) avrà un campo "Inserito da IP" se l'ordine è stato creato dal frontend, ma se è stato fatto tramite il backend di amministrazione lo scherma non ci sarà – shaune
@sdek - È un bel consiglio, non ne ero a conoscenza prima. – clockworkgeek
Non funziona con le ultime versioni di Magento. Devi scegliere l'id del negozio prima di creare l'ordine nel back-end dell'amministratore. Quindi store_id avrà sempre un valore diverso da 0. –
È possibile controllare il valore is_super_mode
(ho solo controllare sulla citazione: $quote->getIsSuperMode()
)
Dove hai trovato questo campo? Non riesco a trovarlo per Magento 1.7 – Alex
Grazie per il bel gancio +1 da parte mia @RS –
Sto cercando di immaginare che se Magento è stato installato su un host cloud, l'ordine effettuato dal cliente o dall'amministratore avrà un indirizzo IP remoto . Sono corretto – burntblark