Magento 2 get and set Qty of product with observer
I tried my code below to get Qty from observer when a page loaded :
Observer :
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($collection->getQty());
}
}
events.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_collection_load_after">
<observer name="loadupdates" instance="TestShowObserverCustomPrice" />
</event>
</config>
But, i got all NULL for getQty of products. So my question, how can i get the Qty of products, and how to update the Qty from the observer?
magento2 php event-observer
add a comment |
I tried my code below to get Qty from observer when a page loaded :
Observer :
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($collection->getQty());
}
}
events.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_collection_load_after">
<observer name="loadupdates" instance="TestShowObserverCustomPrice" />
</event>
</config>
But, i got all NULL for getQty of products. So my question, how can i get the Qty of products, and how to update the Qty from the observer?
magento2 php event-observer
add a comment |
I tried my code below to get Qty from observer when a page loaded :
Observer :
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($collection->getQty());
}
}
events.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_collection_load_after">
<observer name="loadupdates" instance="TestShowObserverCustomPrice" />
</event>
</config>
But, i got all NULL for getQty of products. So my question, how can i get the Qty of products, and how to update the Qty from the observer?
magento2 php event-observer
I tried my code below to get Qty from observer when a page loaded :
Observer :
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($collection->getQty());
}
}
events.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_collection_load_after">
<observer name="loadupdates" instance="TestShowObserverCustomPrice" />
</event>
</config>
But, i got all NULL for getQty of products. So my question, how can i get the Qty of products, and how to update the Qty from the observer?
magento2 php event-observer
magento2 php event-observer
asked Sep 11 '17 at 2:35
Edwin WidhiyantoEdwin Widhiyanto
425419
425419
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
If you want to get Inventory of the product, you should inject MagentoCatalogInventoryApiStockStateInterface
first. Then using getStockQty
to get the qty of an product. So that in your observer:
public function __construct(
MagentoCatalogInventoryApiStockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($this->stockItem->getStockQty($collection->getId()));
}
}
Ref: How to get stock quantity of each product in Magento 2
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
add a comment |
If you want to $productobj
after saving product from backend side so you can easily use catalog_product_save_after
event.
I am assuming that you already know how to create a module in M2
.
Right now you have to need develop new module for M2
Then Create this events.xml
file in below path
appcodeYOUR_NAMESPACEYOURMODULEetcadminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACEYOUR_MODULENAMEObserverProductsaveafter" />
</event>
</config>
And Create your observer file Productsaveafter.php
in below path
appcodeYOUR_NAMESPACEYOURMODULEObserver
<?php
namespace YOURNAMESPACEYOURMODULENAMEObserver;
use MagentoFrameworkEventObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(MagentoFrameworkEventObserver $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f192673%2fmagento-2-get-and-set-qty-of-product-with-observer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you want to get Inventory of the product, you should inject MagentoCatalogInventoryApiStockStateInterface
first. Then using getStockQty
to get the qty of an product. So that in your observer:
public function __construct(
MagentoCatalogInventoryApiStockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($this->stockItem->getStockQty($collection->getId()));
}
}
Ref: How to get stock quantity of each product in Magento 2
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
add a comment |
If you want to get Inventory of the product, you should inject MagentoCatalogInventoryApiStockStateInterface
first. Then using getStockQty
to get the qty of an product. So that in your observer:
public function __construct(
MagentoCatalogInventoryApiStockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($this->stockItem->getStockQty($collection->getId()));
}
}
Ref: How to get stock quantity of each product in Magento 2
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
add a comment |
If you want to get Inventory of the product, you should inject MagentoCatalogInventoryApiStockStateInterface
first. Then using getStockQty
to get the qty of an product. So that in your observer:
public function __construct(
MagentoCatalogInventoryApiStockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($this->stockItem->getStockQty($collection->getId()));
}
}
Ref: How to get stock quantity of each product in Magento 2
If you want to get Inventory of the product, you should inject MagentoCatalogInventoryApiStockStateInterface
first. Then using getStockQty
to get the qty of an product. So that in your observer:
public function __construct(
MagentoCatalogInventoryApiStockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
public function execute(MagentoFrameworkEventObserver $observer) {
$collections = $observer->getEvent()->getCollection();
foreach( $collections as $collection ) {
var_dump($this->stockItem->getStockQty($collection->getId()));
}
}
Ref: How to get stock quantity of each product in Magento 2
answered Sep 11 '17 at 2:57
PY YickPY Yick
1,686720
1,686720
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
add a comment |
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
omg i forget to add the injection, thank you for your answer :)
– Edwin Widhiyanto
Sep 11 '17 at 3:38
add a comment |
If you want to $productobj
after saving product from backend side so you can easily use catalog_product_save_after
event.
I am assuming that you already know how to create a module in M2
.
Right now you have to need develop new module for M2
Then Create this events.xml
file in below path
appcodeYOUR_NAMESPACEYOURMODULEetcadminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACEYOUR_MODULENAMEObserverProductsaveafter" />
</event>
</config>
And Create your observer file Productsaveafter.php
in below path
appcodeYOUR_NAMESPACEYOURMODULEObserver
<?php
namespace YOURNAMESPACEYOURMODULENAMEObserver;
use MagentoFrameworkEventObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(MagentoFrameworkEventObserver $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}
add a comment |
If you want to $productobj
after saving product from backend side so you can easily use catalog_product_save_after
event.
I am assuming that you already know how to create a module in M2
.
Right now you have to need develop new module for M2
Then Create this events.xml
file in below path
appcodeYOUR_NAMESPACEYOURMODULEetcadminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACEYOUR_MODULENAMEObserverProductsaveafter" />
</event>
</config>
And Create your observer file Productsaveafter.php
in below path
appcodeYOUR_NAMESPACEYOURMODULEObserver
<?php
namespace YOURNAMESPACEYOURMODULENAMEObserver;
use MagentoFrameworkEventObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(MagentoFrameworkEventObserver $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}
add a comment |
If you want to $productobj
after saving product from backend side so you can easily use catalog_product_save_after
event.
I am assuming that you already know how to create a module in M2
.
Right now you have to need develop new module for M2
Then Create this events.xml
file in below path
appcodeYOUR_NAMESPACEYOURMODULEetcadminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACEYOUR_MODULENAMEObserverProductsaveafter" />
</event>
</config>
And Create your observer file Productsaveafter.php
in below path
appcodeYOUR_NAMESPACEYOURMODULEObserver
<?php
namespace YOURNAMESPACEYOURMODULENAMEObserver;
use MagentoFrameworkEventObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(MagentoFrameworkEventObserver $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}
If you want to $productobj
after saving product from backend side so you can easily use catalog_product_save_after
event.
I am assuming that you already know how to create a module in M2
.
Right now you have to need develop new module for M2
Then Create this events.xml
file in below path
appcodeYOUR_NAMESPACEYOURMODULEetcadminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACEYOUR_MODULENAMEObserverProductsaveafter" />
</event>
</config>
And Create your observer file Productsaveafter.php
in below path
appcodeYOUR_NAMESPACEYOURMODULEObserver
<?php
namespace YOURNAMESPACEYOURMODULENAMEObserver;
use MagentoFrameworkEventObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(MagentoFrameworkEventObserver $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}
answered 4 mins ago
AB SaiyadAB Saiyad
494
494
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f192673%2fmagento-2-get-and-set-qty-of-product-with-observer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown