実際、私の場合、販売可能数量は製品グリッドMagento 2.3でゼロを示しています。
この問題のため、製品はフロントエンドに表示されません。誰かアイデアがあれば教えてください。
このため、インデックスの再作成も行われますが、それでも販売可能な数量はゼロ(0)を示しています。
プログラムで数量を追加および更新しますが、販売可能な数量はゼロと表示されます。
実際、私の場合、販売可能数量は製品グリッドMagento 2.3でゼロを示しています。
この問題のため、製品はフロントエンドに表示されません。誰かアイデアがあれば教えてください。
このため、インデックスの再作成も行われますが、それでも販売可能な数量はゼロ(0)を示しています。
プログラムで数量を追加および更新しますが、販売可能な数量はゼロと表示されます。
回答:
データベースでは、2つのタイプがありました、
1)テーブル
2)ビュー
この問題は、データベースビューのインポート/エクスポートがMagento 2.3で作成されなかった場合に発生する可能性があります。したがって、データベースにViewsおよび inventory_stock_1テーブルを作成します。
添付画像を参照してください:
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`))) ;
@Thakurの回答からDEFINER=
ルート@
localhost を削除する必要があったので、ここで私が使用したものを示します。
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`))) ;
削除に失敗すると、特権エラーが発生しました。
以下の手順を試してください:
Admin -> Stores -> Inventory -> Stock -> Edit Default Stock -> Sales Channels -> select Main Website
それはうまくいきました。
または以下のリンクを見つけてください
https://webkul.com/blog/get-salable-quantity-in-magento-2-3/
同じ問題に直面していましたが、以下のクエリを実行してビューを作成した後、問題は解決しました。
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`))
) ;
これを修正する別の方法は、からパッチを削除し、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
ZERO販売可能数量の商品を1つずつ、または管理者による一括アクションで再保存します。
この問題に関連した私の経験を共有します。同じ状況にあった人を助けることができれば幸いです。
私たちは段階的なインスタンスに取り組んでおり、すべて本番環境に移行する準備ができていました。したがって、prod envですべてを複製し、すべてのダミーの注文、レビューなどを削除するために、いくつかのSQLトランケートを起動しました。
いくつかの最終テストを行った後、当社の製品「在庫数量」は製品「販売可能数量」とは大きく異なることに気付きました。SQLビューは正常に機能しているようだったので、さらに調査しました。切り捨て命令でSQLテーブルが欠落していることがわかりました。
TRUNCATE TABLE `inventory_reservation`;
この不良少女は、過去の注文からの「出荷されていないが予約済みの製品」をそれぞれ含んでいました。
もちろん、インデックスの再作成を忘れないでください:
bin/magento indexer:reindex;