Товарное количество показывает ноль в сетке продуктов magento 2?


14

На самом деле, в моем случае Salable Quantity показывает нулевое значение в сетке продуктов. Magento 2.3 .

Из-за этой проблемы продукты не отображаются во внешнем интерфейсе. Если у кого-то есть идеи, пожалуйста, скажите мне.

Для этого также выполняется переиндексация, но все же продаваемое количество показывает ноль (0).

Добавьте и обновите количество программно, но количество продаваемого товара показывает ноль .


попробуйте разрешить на складе задержать заказ и проверить, будут ли отображаться продукты. Это не является исправлением, но, по крайней мере, нужно проверить, насколько точная проблема - это продаваемый кол-во.
fmsthird

ты это исправил?
fmsthird

да на самом деле была проблема с разрешением на нашем сервере
Hitesh Balpande

Привет, Вы обнаружили проблему?
Осьминог

1
@ Осьминог, да, переиндексация работала всегда, но на сервере было разрешение, после чего оно разрешалось
Hitesh Balpande

Ответы:


21

В базе данных было два типа,

1) Столы

2) Просмотров

Эта проблема может быть вызвана , когда импорт / экспорт DataBase Просмотры были созданы не в Magento 2.3. Поэтому создайте таблицы Views и inventory_stock_1 в базе данных.

Смотрите Прикрепленное изображение:

введите описание изображения здесь


1
Огромное спасибо. Потратив 2 часа я получил решения из вашего ответа. Еще раз спасибо.
Камлеш Соланки

2
+1 за
отличный

@Savan уже создан в моем конце. но все еще сталкивается с той же проблемой
insoftservice

@insoftservice Я столкнулся с той же проблемой, вы поняли?
Hardik Visa

@HardikVisa у вас есть это мнение на вашем конце. Если да, просто попробуйте выполнить его вручную в моем конце, он получил разрешение проблемы, которая была решена путем предоставления полного разрешения.
insoftservice

10

Я пропустил эту строку запроса из-за ошибки Previllages, и мое добавление в корзину не работало на реальном сервере, на локальном сервере эта строка не была пропущена, и добавление в корзину работало нормально.

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1`  AS  select distinct `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` from (`cataloginventory_stock_status` `legacy_stock_status` join `catalog_product_entity` `product` on((`legacy_stock_status`.`product_id` = `product`.`entity_id`))) ;

Поскольку представление не было создано на реальном сервере введите описание изображения здесь


3

Мне пришлось удалить DEFINER=root @localhost из ответа @Thakur, вот что я использовал:

CREATE ALGORITHM=UNDEFINED SQL SECURITY INVOKER VIEW `inventory_stock_1`  AS
select distinct `legacy_stock_status`.`product_id` AS `product_id`,
`legacy_stock_status`.`website_id` AS `website_id`,
`legacy_stock_status`.`stock_id` AS `stock_id`,
`legacy_stock_status`.`qty` AS `quantity`,
`legacy_stock_status`.`stock_status` AS `is_salable`,
`product`.`sku` AS `sku`
from (`cataloginventory_stock_status` `legacy_stock_status`
join `catalog_product_entity` `product`
on((`legacy_stock_status`.`product_id` = `product`.`entity_id`))) ;

Невозможность удалить это вызвало ошибку привилегии.



0

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

CREATE ALGORITHM=UNDEFINED DEFINER=`{database_user_name}`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1`  AS  
    SELECT distinct `legacy_stock_status`.`product_id` AS `product_id`,
        `legacy_stock_status`.`website_id` AS `website_id`,
        `legacy_stock_status`.`stock_id` AS `stock_id`,
        `legacy_stock_status`.`qty` AS `quantity`,
        `legacy_stock_status`.`stock_status` AS `is_salable`,
        `product`.`sku` AS `sku` 
   FROM
   (
         `cataloginventory_stock_status` `legacy_stock_status` 
              join `catalog_product_entity` `product` 
                  on ((`legacy_stock_status`.`product_id` = `product`.`entity_id`))
   ) ;

0

Другой способ исправить это - удалить патч patch_listи повторно запустить его, setup:upgradeчтобы повторно вызвать команду.

Код, отвечающий за создание, SQL SECURITY INVOKERможно найти в Magento \ InventoryCatalog \ Setup \ Patch \ Schema \ CreateLegacyStockStatusView.

Вы можете удалить патч данных из списка патчей, выполнив поиск

select * from patch_list where patch_name = 'Magento\InventoryCatalog\Setup\Patch\Schema\CreateLegacyStockStatusView

Удалить запись.

Повторно запустить setup:upgrade setup:di:compile setup:static-content:deploy

Повторно сохраните продукты с нулевым товарным количеством по одному или массовым действием через администратора.


0

Я поделюсь своим опытом, связанным с этой проблемой, я надеюсь, что он может помочь кому-то, кто был бы в такой же ситуации.

Мы работали на инсценировке, все было готово к производству. Итак, мы продублировали все в prod env и запустили несколько SQL-усечений , чтобы удалить все фиктивные заказы, обзоры и т. Д., Вы поняли идею.

После некоторых заключительных испытаний мы поняли, что наша продукция "количество на складе" сильно отличается от продукта "продаваемое количество" . Казалось, что SQL View работает нормально, поэтому мы исследовали его глубже. Оказывается, мы пропустили таблицу SQL в наших инструкциях по усечению:

TRUNCATE TABLE `inventory_reservation`;

Эта плохая девчонка содержала каждый " не отправленный, но зарезервированный товар " из прошлых заказов.

Конечно, не забудьте переиндексировать вещи:

bin/magento indexer:reindex;

-3

Я просто изменил на STORE -> CATELOG -> ИНВЕНТАРЬ -> ОПЦИИ НА ПРОДУКЦИИ -> BACKORDERS -> Разрешить кол-во ниже 0

и проблема решена

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.