Czy istnieje sposób sprawdzenia, czy zamówienie zostało złożone za pośrednictwem frontend strony internetowej lub wprowadzone przez panel administracyjny?Różnicowanie backend a frontend Zakupy w Magento
Odpowiedz
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
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)
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
@dek - To miła wskazówka, wcześniej o tym nie wiedziałam. – clockworkgeek
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. –
Można sprawdzić wartość is_super_mode
(Mam tylko sprawdzić na cytat: $quote->getIsSuperMode()
)
Gdzie znalazłeś to pole? Nie mogę go znaleźć dla Magento 1.7 – Alex
Dzięki za miłe haki +1 ode mnie @RS –
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