2010-12-31 14 views

risposta

10

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

+0

Grazie per il bel gancio +1 da parte mia @RS –

+0

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

8

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)

+2

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

+0

@sdek - È un bel consiglio, non ne ero a conoscenza prima. – clockworkgeek

+9

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. –

0

È possibile controllare il valore is_super_mode (ho solo controllare sulla citazione: $quote->getIsSuperMode())

+0

Dove hai trovato questo campo? Non riesco a trovarlo per Magento 1.7 – Alex

Problemi correlati