2010-12-31 17 views

Odpowiedz

10

Domyślnie Magento przechowuje tylko remote_ip w tabeli sales_flat_order o nakazanie ma miejsce przez klienta (podczas gdy kolejność admina ma wartość NULL).

Więc spróbuj tego:

if(!empty($order->getRemoteIp()){ 
    //place online 
} 
else{ 
    // place by admin 
} 

Zobacz odpowiedź Programmatically differentiate between admin & customer-placed orders

+0

Dzięki za miłe haki +1 ode mnie @RS –

+0

Próbuję sobie wyobrazić, że jeśli magento został zainstalowany na hoście w chmurze, zamówienie złożone przez klienta lub administratora będzie miało zdalny adres IP . Poprawiono mnie – burntblark

8

Każde zamówienie ma store_id, po wprowadzeniu przez adminaction będzie to 0 (dla "sklepu administratora") lub zero.

if ($order->getStoreId()) { 
    // was placed via frontend 
} 

Nie używaj getStore() jako że nie zawsze zwróci sklepu obiektu w SIO niezawodnie.

Nie działa z najnowszymi wersjami Magento. (Patrz komentarz)

+2

clockworkgeek jest prawidłowe. Dodam jeszcze jeden sposób, który jest w większości pomocny dla użytkowników administracyjnych, którzy nie są programistami. Jeśli patrzysz na zamówienie na ekranie administracyjnym (Administracja -> Sprzedaż -> Zamówienia), będzie ono miało pole "Umieszczono z IP", jeśli zamówienie zostało utworzone z frontendu, ale jeśli zostało to zrobione na ekranach administracyjnych administratora, to nie będzie tam. – shaune

+0

@dek - To miła wskazówka, wcześniej o tym nie wiedziałam. – clockworkgeek

+9

Nie działa z najnowszymi wersjami Magento. Musisz wybrać identyfikator sklepu przed utworzeniem zamówienia w ramach zaplecza administracyjnego. Tak więc store_id zawsze będzie miał wartość inną niż 0. –

0

Można sprawdzić wartość is_super_mode (Mam tylko sprawdzić na cytat: $quote->getIsSuperMode())

+0

Gdzie znalazłeś to pole? Nie mogę go znaleźć dla Magento 1.7 – Alex

Powiązane problemy