Автор Тема: Продажи в минус ( проблема в корзине )  (Прочитано 301 раз)

21 Апрель 2021, 14:15:42
  • Новичок
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте,

Presta 1.7,  проблема заключается в следующем:

Не проверяет наличие ( после того как попал в корзину, хоть 3 дня там сиди, потом можешь заказать)

При оформлении заказа пользователь проходит следующие этапы:
авторизация-адрес-доставка-оплата-оформление.
И система проверяет наличие необходимого количества товара только на первом из этих этапов.
Пока ЭТОТ клиент оформляет (после прохождения первого этапа) кто-то другой успевает первым купить остатки. И ЭТОТ покупает в минус.

Я перерыл весь интернет и форум, на форуме обсуждалось, но решения конкретного нет.

Решение есть у пользователя Огонек, спасибо ему, он отвечает мне по мере возможности.
Поделился решением автора ( автору из fl  Alex Quality [Vochek] ) написал автору ( он там не появлялся более 1,5 года).

Решение у Огонек для Prestashop 1.6 я так понимаю, но файл изменяется по факту тот же.
Но у меня не работает.

Изменения в классе Cart.php  , если Огонек не против, автор не отвечает(я и написал и задачу создал ему ) я бы позже выложил код.


Но может кто-то знает решение или есть модуль.
Я нашел 2 модуля платных только.

https://addons.prestashop.com/en/stock-supplier-management/21707-temporary-product-reservation-lonely-stock.html#overview

еще от этого автора решение, сгенерировать модуль самому, но не стал пробовать.

https://stackoverflow.com/questions/46894807/prestashop-1-7-check-available-stock-at-final-order-step

подешевле модуль тут:

https://mypresta.eu/modules/ordering-process/checkout-stock-checker-pro.html


Обсуждение в Гике тут:  https://github.com/PrestaShop/PrestaShop/issues/10762


Может кто знает как быть?

21 Апрель 2021, 15:37:49
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16673
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
еще от этого автора решение, сгенерировать модуль самому, но не стал пробовать.
https://stackoverflow.com/questions/46894807/prestashop-1-7-check-available-stock-at-final-order-step
Вполне рабочее решение и бесплатное.
21 Апрель 2021, 16:22:27
Ответ #2
  • Новичок
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
еще от этого автора решение, сгенерировать модуль самому, но не стал пробовать.
https://stackoverflow.com/questions/46894807/prestashop-1-7-check-available-stock-at-final-order-step
Вполне рабочее решение и бесплатное.
Здравствуйте, я в валидаторе никогда не делал ничего.

https://validator.prestashop.com/generator

Но попробовал методом тыка:

да и в конце требует Хук:

Shopping cart - Additional button

это выбрать и это важно?


А его код


<?php

    $cart 
$this->context->cart;
    
$cart_products $cart->getProducts();

    if (!empty(
$cart_products)) {

        
$db Db::getInstance();

        foreach (
$cart_products as $key => $cart_product) {

            
$real_quantity StockAvailable::getQuantityAvailableByProduct($cart_product['id_product'], $cart_product['id_product_attribute']);

            if ( (int) 
$real_quantity < (int) $cart_product['quantity'] ) {

                
// If negative
                
$real_quantity = (int) $real_quantity $real_quantity;

                
$sql '
                        UPDATE `'
._DB_PREFIX_.'cart_product`
                        SET quantity = '
.(int) $real_quantity.',`date_add` = NOW()
                        WHERE `id_product` = '
.(int) $cart_product['id_product'].
                        (!empty(
$cart_product['id_product_attribute']) ? ' AND `id_product_attribute` = '.(int) $cart_product['id_product_attribute'] : '').'
                        AND `id_cart` = '
.(int) $cart->id;

                    
$db->execute($sql);
            }

        }

        
// Garbage collector
        
$db->execute('DELETE FROM '._DB_PREFIX_.'cart_product WHERE quantity < 1 ');

    }



Создался типичный модуль, внутри 2 php файла, который я назвал и index.php


Вставить код я так понимаю надо в тот файл Proverka-korzini.php ( мой)   ?

или я неверно понимаю?

21 Апрель 2021, 18:10:59
Ответ #3
  • Новичок
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
еще от этого автора решение, сгенерировать модуль самому, но не стал пробовать.
https://stackoverflow.com/questions/46894807/prestashop-1-7-check-available-stock-at-final-order-step
Вполне рабочее решение и бесплатное.

можете помочь с ним?
22 Апрель 2021, 12:42:23
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16673
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Или модуль создаете, или переопределяете класс prestashop.
Как создавать модули prestashop описано в справке
https://devdocs.prestashop.com/1.7/modules/