2013-08-16 44 views
10

podobnie jak w tytule ... z jakiegoś powodu strona internetowa magento nie stosuje kodów kuponów ... zawsze zwraca nieprawidłowy komunikat "Kupon jest nieprawidłowy". Ale o dziwo, dzieje się tak, gdy cena koszyka jest większa niż 120 moja waluta.

Przykład: jeśli mam jeden produkt w koszyku z ceną 65, kod kuponu działa poprawnie ... jeśli mam ten sam produkt w koszyku, ale z ilością 2 (co oznacza, że ​​łączna cena staje się 130), otrzymuję wyżej wymienione nieprawidłowy komunikat o błędzie

mam odszukani kod do klasy „Mage_Sales_Model_Quote”, który posiada funkcję o nazwie: _validateCouponCode(), w środku, gdzie następuje: $ adresowaniem> hasCouponCode() zawsze zwraca wartość false. .. Co powinienem spróbować? ... ponownie zindeksowałem, odświeżyłem cache ... etc ... nic się nie zmieniło ... i nie mogę znaleźć w modelu adresu funkcji hasCouponCode, aby zobaczyć, co się tam dzieje ... wielkie dzięki z góry

+0

Czy znalazłeś jakieś rozwiązanie? – Taras

+0

Czy widzę Twój stan zasad koszyka na zakupy? –

+0

Musisz opublikować kod seryjny kodu kuponu, jeśli chcesz pomóc w diagnozowaniu, dlaczego kod kuponu jest nieważny przez pewien czas. –

Odpowiedz

0

Przede wszystkim var_dump (adres $) i sprawdź szczegóły.

Następnie

Sprawdź następujących:

  1. Poprawne daty rozpoczęcia i wygaśnięcia.
  2. Ustawianie prawidłowych grup klientów dla kuponu.
  3. Ustawienie to active.

Jeśli wszystko powyżej 1, 2, 3 Wymagania prawdziwymi następnie ustawić Stop further rules processing do YES

  • Oprócz tych jakiegoś powodu SKU wymagają znaków alfanumerycznych do panujących warunków. Sprawdź więc, czy wartości SKU Twoich produktów są alfanumeryczne.
3

Najpierw musisz zrozumieć, jak działa $ adres-> hasCouponCode().

Nie ma takiej metody, która nazywa się za pomocą funkcji magicznej __call.

Nie można uzyskać do niego bezpośredniego dostępu, ponieważ $ _data jest chroniona.

Najlepszym sposobem debugowania jest sprawdzenie, czy w twoim obiekcie adresowym jest ustawiony kupon.

$data = $address->getData(); 
$coupon = $data['coupon_code']; 

Sprawdź teraz, czy kupon jest ustawiony, czy nie, w przypadku, gdy masz 2 przedmioty w koszyku.

Innym sposobem jest spróbuj dodać kupon używając setter jak

$address->setCouponCode('Your Coupon Code'); 

lub

$address->setData('coupon_code', 'Your Coupon Code'); 

i sprawdzić, czy to działa, czy nie. Jeśli nie wtedy zajrzeć do

_validateCouponCode in Mage_Sales_Model_Quote 

będzie to dobry początek do debugowania.

7

Cóż, bez dokładnych reguł trudno jest udzielić pełnej odpowiedzi.

pierwsze, Mage_Sales_Model_Quote :: _ validateCouponCode() wezwanie ma pojedyncze zadanie usunięcie kupon z cytatem jeśli kod nie jest kupon na adres cytatem. Wynika to z faktu, że podczas wywołania typu totalTotal model rabatu całkowitego skopiuje kod kuponu na adres IF, jeżeli jest on ważny i został zastosowany. Zatem fakt, że $ adres-> hasCouponCode() zwraca wartość null w tym przypadku jest tylko wskaźnikiem, że weryfikator reguł odmówił zastosowania dostarczonego kodu kuponu.

Po drugie, istnieją dwie metody, które należy prześledzić, aby dowiedzieć się, dlaczego kupon nie jest stosowany. Prawdopodobnie jest to tylko jeden lub drugi w zależności od kuponu, ale wskażę oba. Mage_SalesRule_Model_Validator :: process() i Mage_SalesRule_Model_Validator :: processShippingAmount() to dwa miejsca, które sprawdzą twój kod kuponu i ewentualnie zastosują go i skopiują kod na adres.

Na marginesie, Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode() jest metoda odpowiedzialna za skopiowanie kodu kuponu z walidatora (który dostał kod z cytatem) na adres. Jeśli ta metoda nigdy nie zostanie wywołana, Twój kod kuponu zawsze zostanie usunięty z oferty.

tl; dr

Krok debug Mage_SalesRule_Model_Validator :: proces() i Mage_SalesRule_Model_Validator :: processShippingAmount() do debugowania, dlaczego Twój kod kuponu jest nieprawidłowy.