Số lượng có thể hiển thị bằng 0 trong lưới sản phẩm magento 2?


14

Trên thực tế trong trường hợp của tôi Số lượng có thể bán được hiển thị bằng 0 trong lưới sản phẩm Magento 2.3 .

Do vấn đề này, các sản phẩm không được hiển thị ở lối vào. Nếu ai có ý kiến ​​gì thì làm ơn cho tôi biết.

Đối với việc lập chỉ mục này cũng được thực hiện nhưng Số lượng có thể bán được hiển thị bằng 0 (0).

Thêm và cập nhật Số lượng theo chương trình nhưng Số lượng có thể bán được hiển thị bằng không .


cố gắng cho phép ra khỏi backorder chứng khoán và kiểm tra nếu các sản phẩm sẽ được hiển thị. Đây không phải là một sửa chữa nhưng ít nhất để kiểm tra thời tiết, vấn đề chính xác là qty có thể bán được.
fmsthird

bạn đã sửa nó chưa?
fmsthird

vâng, thực sự có vấn đề về sự cho phép trong máy chủ của chúng tôi
Hitesh Balpande

Xin chào, bạn đã tìm ra vấn đề?
Bạch tuộc

1
@ Octopus, vâng reindex luôn hoạt động nhưng đã có sự cho phép trong máy chủ thì nó đã được giải quyết
Hitesh Balpande

Câu trả lời:


21

Trong DataBase, có hai loại,

1) Bàn

2) Lượt xem

Sự cố có thể xảy ra khi Nhập / Xuất Chế độ xem DataBase không được tạo trong Magento 2.3. Vì vậy, tạo ra xeminventory_stock_1 bảng trong CSDL.

Xem hình ảnh đính kèm:

nhập mô tả hình ảnh ở đây


1
Cảm ơn bạn rất nhiều. Sau khi dành 2 giờ tôi đã nhận được giải pháp từ câu trả lời của bạn. Cảm ơn một lần nữa.
Kam Meat Solanki

2
+1 cho câu trả lời tuyệt vời
Sanjay Gohil

@Savan nó đã được tạo ở cuối của tôi. nhưng vẫn phải đối mặt với cùng một vấn đề
bảo hiểm

@insoftservice Tôi đang đối mặt với cùng một vấn đề, bạn có ý kiến ​​gì không?
Visa Hardik

@HardikVisa bạn có quan điểm này ở cuối của bạn. Nếu có, chỉ cần cố gắng thực hiện thủ công vào cuối của tôi, đó là vấn đề cấp phép đã được giải quyết bằng cách cấp quyền đầy đủ.
bảo hiểm

10

Tôi đã bỏ qua dòng truy vấn này, do lỗi Previllages và add to cart của tôi không hoạt động trên máy chủ trực tiếp, trong máy chủ cục bộ, dòng này không bị bỏ qua và add vào giỏ hàng hoạt động tốt.

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`))) ;

Bởi vì Chế độ xem không được tạo trong máy chủ trực tiếp nhập mô tả hình ảnh ở đây


3

Tôi đã phải xóa localhost DEFINER=gốc @khỏi câu trả lời @Thakur vì vậy đây là những gì tôi đã sử dụng:

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`))) ;

Không thể loại bỏ nó gây ra một lỗi đặc quyền.



0

Tôi đã phải đối mặt với cùng một vấn đề, sau khi tạo chế độ xem bằng cách thực hiện truy vấn bên dưới, vấn đề của tôi đã được giải quyết.

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

Một phương pháp khác để khắc phục điều này là xóa bản vá khỏi patch_listvà chạy setup:upgradelại lệnh để gọi lại lệnh.

Mã chịu trách nhiệm tạo mã SQL SECURITY INVOKERcó thể được tìm thấy trong Magento \ InventoryCatalog \ Setup \ Patch \ Schema \ CreateLegacyStockStatusView.

Bạn có thể xóa bản vá dữ liệu khỏi danh sách bản vá bằng cách tìm kiếm đang chạy

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

Xóa hồ sơ.

Chạy lại setup:upgrade setup:di:compile setup:static-content:deploy

Lưu lại các sản phẩm với Số lượng có thể bán được ZERO từng cái một hoặc hành động hàng loạt thông qua quản trị viên.


0

Tôi sẽ chia sẻ kinh nghiệm của mình liên quan đến vấn đề này, tôi hy vọng nó có thể giúp được ai đó có thể gặp tình huống tương tự.

Chúng tôi đang làm việc trên một ví dụ dàn dựng, tất cả đã sẵn sàng để đi vào sản xuất. Vì vậy, chúng tôi đã sao chép mọi thứ trên prod env và đưa ra một số đoạn rút gọn SQL để xóa mọi đơn đặt hàng giả, đánh giá, v.v. bạn có ý tưởng.

Sau một số thử nghiệm cuối cùng, chúng tôi nhận ra rằng các sản phẩm "stock qty" của chúng tôi khác xa so với sản phẩm "qty có thể bán được" . Chế độ xem SQL dường như hoạt động tốt, vì vậy chúng tôi đã nghiên cứu sâu hơn. Hóa ra chúng tôi đã bỏ lỡ một bảng SQL trong hướng dẫn cắt ngắn của chúng tôi:

TRUNCATE TABLE `inventory_reservation`;

Cô gái xấu này đã chứa từng " sản phẩm không được giao nhưng được bảo lưu " từ các đơn đặt hàng trước đây.

Tất nhiên đừng quên reindex thứ:

bin/magento indexer:reindex;

-3

Tôi vừa đổi thành CỬA HÀNG -> CATELOG -> HÀNG ĐẦU -> TÙY CHỌN SẢN PHẨM -> BACKORDERS -> Cho phép số lượng dưới 0

và vấn đề đã được giải quyết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.