La quantité vendable affiche zéro dans la grille de produits magento 2?

14

En fait, dans mon cas, la quantité vendable affiche zéro dans la grille de produits Magento 2.3 .

En raison de ce problème, les produits ne s'affichent pas en frontend. Si quelqu'un a une idée, dites-le moi.

Pour cette réindexation est également effectuée, mais toujours la quantité vendable affiche zéro (0).

Ajouter et mettre à jour la quantité programmatique mais la quantité vendable affiche zéro .

Hitesh Balpande
la source
essayez d'autoriser la rupture de stock et vérifiez si les produits seront affichés. Ce n'est pas une solution mais au moins pour vérifier si le problème exact est la quantité vendable.
fmsthird
l'avez-vous réparé?
fmsthird
oui en fait il y avait un problème d'autorisation sur notre serveur
Hitesh Balpande
Salut, avez-vous découvert le problème?
Octopus
1
@ Octopus, oui, la réindexation a toujours fonctionné mais il y avait une autorisation sur le serveur, puis elle est résolue
Hitesh Balpande

Réponses:

21

Dans DataBase, il y avait deux types,

1) Tableaux

2) Vues

Le problème est probablement dû à l'import / export des vues de base de données n'a pas été créé dans Magento 2.3. Créez donc des vues et une table d' inventaire_stock_1 dans DataBase.

Voir l'image ci-jointe:

entrez la description de l'image ici

Savan Patel
la source
1
Merci beaucoup. Après avoir passé 2 heures, j'ai obtenu les solutions de votre réponse. Merci encore.
Kamlesh Solanki
2
+1 pour une excellente réponse
Sanjay Gohil
@Savan est déjà créé de mon côté. mais toujours confronté au même problème
insoftservice
@insoftservice Je suis confronté au même problème, avez-vous eu une idée?
Hardik Visa du
@HardikVisa avez-vous cette vue de votre côté. Si oui, essayez simplement de l'exécuter manuellement à ma fin, il a reçu un problème d'autorisation qui a été résolu en accordant une autorisation complète.
insoftservice
10

J'ai ignoré cette ligne de requête, en raison d'une erreur de Previllages et mon ajout au panier ne fonctionnait pas sur le serveur en direct, sur le serveur local, cette ligne n'a pas été ignorée et l'ajout au panier fonctionnait bien.

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

Parce que la vue n'a pas été créée sur le serveur en direct entrez la description de l'image ici

Sanaullah Ahmad
la source
3

J'ai dû supprimer la DEFINER=racine @localhost de la réponse @Thakur alors voici ce que j'ai utilisé:

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

Le fait de ne pas le supprimer a provoqué une erreur de privilège.

The Dead Guy
la source
0

J'étais confronté au même problème, après avoir créé la vue en exécutant la requête ci-dessous, mon problème a été résolu.

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`))
   ) ;
Mohd Zahid
la source
0

Une autre méthode pour résoudre ce problème serait de supprimer le correctif du patch_listet de réexécuter le setup:upgradepour ré-appeler la commande.

Le code responsable de la création de SQL SECURITY INVOKERpeut être trouvé dans Magento \ InventoryCatalog \ Setup \ Patch \ Schema \ CreateLegacyStockStatusView.

Vous pouvez supprimer le correctif de données de la liste des correctifs en recherchant

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

Supprimez l'enregistrement.

Rediffusion setup:upgrade setup:di:compile setup:static-content:deploy

Enregistrez à nouveau les produits avec une quantité vendable ZERO, une par une ou une action de masse via l'administrateur.

Oliver
la source
0

Je vais partager mon expérience liée à ce problème, j'espère que cela pourrait aider quelqu'un qui aurait été dans la même situation.

Nous travaillions sur une instance mise en scène, tout était prêt pour la production. Nous avons donc tout dupliqué sur le prod env et lancé quelques tronçons SQL afin de supprimer toutes les commandes fictives, les revues, etc. vous avez l'idée.

Après quelques tests finaux, nous avons réalisé que nos produits "quantité en stock" étaient très différents de la "quantité vendable" . La vue SQL semblait bien fonctionner, nous avons donc approfondi nos recherches. Il s'avère que nous avons manqué une table SQL dans nos instructions tronquées:

TRUNCATE TABLE `inventory_reservation`;

Cette méchante fille contenait chacun des "produits non expédiés mais réservés " des commandes passées.

Bien sûr, n'oubliez pas de réindexer les choses:

bin/magento indexer:reindex;
rou6e
la source
-3

Je viens de changer en MAGASIN -> CATELOG -> INVENTAIRE -> OPTIONS DE STOCK DE PRODUITS -> ARRIÈRE-COMMANDE -> Autoriser la quantité en dessous de 0

et le problème résolu

Divya
la source