Jump to content

[Presta 1.7] Sklep zezwala na zamówienie produktu ze stanem zerowym


jestemradek

Recommended Posts

Witajcie.

 

Sprawa dotyczy tego, że istnieje możliwość zamówienia produktu, którego nie ma na stanie.

 

Doskonale poznałem opcję "Zezwól na zamówienie gdy stan zerowy" jednak wyłączenie jej pomaga tylko trochę, a mianowicie deaktywuje przycisk "dodaj do koszyka".

 

Jednak załóżmy taką sytuację:

1. Są na stanie 2 produkty.

2. Klient dodaje do koszyka 1 szt, ale zwleka z zamówieniem.

3. W międzyczasie stan magazynowy zmienił się na 0.

4. Klient nadal ma produkt w koszyku i jeśli próbuje sfinalizować zamówienie, system zezwala mu na to, dokonuje zamówienia i zapłaty, a na stanie sklepu jest -1 (minus jeden) produkt. Kasa jest na koncie, a produktu do wysłania brak i mamy kwas.

 

Wyłączenie produktu również nie pomaga, jeśli był wcześniej dodany do koszyka, to zamówienie da się sfinalizować.

 

Znalazłem rozwiązanie do poprzednich wersji presta:

http://nemops.com/auto-remove-products-prestashop-cart/#.WOuLToiLSHs

 

Jednak rozwiązanie nie pasuje do wersji 1.7.

 

Czy ma ktoś pomysł jak rozwiązać ten problem?  :unsure:

 

Pozdrawiam

Radek

Link to comment
Share on other sites

Już sobie poradziłem. Musiałem zmodyfikować plik OrderController.php i wrzucić do folderu overrides.

 

W miejscu 

    public function initContent()
    {
        if (Configuration::isCatalogMode()) {
            Tools::redirect('index.php');
        }
        

poniżej dopisałem

        if($this->context->cart->checkQuantities() !== true)
        {
            $product=$this->context->cart->checkQuantities(true);
            $link=new Link();
            Tools::redirect($link->getRemoveFromCartURL($product['id_product'], 0)."&productremoved=true");
        }

a w pliku Cart.tpl

{extends file=$layout}

{block name='content'}

  <section id="main">

poniżej dopisałem

     {if isset($smarty.get.productremoved)}
    <div class="alert alert-warning" role="alert">
       {l s='Niestety wybrany produkt nie jest już dostępny i został usunięty z koszyka.' d='Shop.Theme.Checkout'} 
    </div>
    {/if}

Działa elegancko. Spędziłem nad tym prawie 8h. Już kombinowałem, żeby jquerem z ajaxem podmieniać url przycisku przechodzącego do zamówienia, ale w końcu mnie oświeciło.

 

Pozdrawiam

Radek

  • Like 1
Link to comment
Share on other sites

Już sobie poradziłem. Musiałem zmodyfikować plik OrderController.php i wrzucić do folderu overrides.

 

Cześć, z czystej ciekawości zapytam, jak już stawiasz sklep na 1.7.1 czy jak zainstalujesz moduł ochrona danych osobowych, czy też wali ci błędem jak włączysz sklep w tryb debugowania? Na czystej instalacji presty instalując, ten moduł wywala błąd co uniemożliwia rejestrację nowego klienta.

Link to comment
Share on other sites

Kolego robisz bałagan na forum, powinieneś założyć nowy wątek. Ja tego modułu nie wgrywałem i nie mam pojęcia skąd go wziąłeś.

 

Kolego, nie zrozumiałeś, mnie ja nie proszę cię o rozwiązanie problemu. Więc nie widzę potrzeby zakładania nowego wątku. Pytanie skierowałem do ciebie, jako że stawiasz, sklep na 1.7.1 więc postanowiłem zapytać, czy jak będziesz instalować moduł (Customer data privacy block) czy też będziesz miał błędy, ale jeśli nie wiesz co to za moduł i jaką funkcje pełni w twoim sklepie uznaj, moje pytanie za zbędne pozdrawiam.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...