Magento2.1.9 : Out of stock product Backorder not working?Backorder option on special productsProduct not...
Can I write a book of my D&D game?
How should I handle players who ignore the session zero agreement?
How to avoid being sexist when trying to employ someone to function in a very sexist environment?
What is the lore-based reason that the Spectator has the Create Food and Water trait, instead of simply not requiring food and water?
What's a good word to describe a public place that looks like it wouldn't be rough?
How do Chazal know that the descendants of a Mamzer may never marry into the general populace?
Which one of these password policies is more secure?
How to prevent users from executing commands through browser URL
Can we use the stored gravitational potential energy of a building to produce power?
Why is working on the same position for more than 15 years not a red flag?
If I delete my router's history can my ISP still provide it to my parents?
Why are the books in the Game of Thrones citadel library shelved spine inwards?
Using only 1s, make 29 with the minimum number of digits
Do authors have to be politically correct in article-writing?
Why do members of Congress in committee hearings ask witnesses the same question multiple times?
Would a National Army of mercenaries be a feasible idea?
Can a hotel cancel a confirmed reservation?
Dilemma of explaining to interviewer that he is the reason for declining second interview
Why do no American passenger airlines still operate dedicated cargo flights?
Why did other German political parties disband so fast when Hitler was appointed chancellor?
If I deleted a game I lost the disc for, can I reinstall it digitally?
Strange Sign on Lab Door
Porting Linux to another platform requirements
Why publish a research paper when a blog post or a lecture slide can have more citation count than a journal paper?
Magento2.1.9 : Out of stock product Backorder not working?
Backorder option on special productsProduct not changing to 'Out of stock' even though qty has gone below minimumUse wishlist as backorderConfigurable product still displayed but accosiated simple product is out of stockMagento 1.9.2.4 : Is there away to prevent any item from having an “Out of Stock” Status (regardless of quantity)?Allowing backorders on Magento 2Best approach to limit the backorder Qty in Magento2?Magento 2: Getting 404 Not Found with exception on products after migratingDisplay backorder info on bundled products?Show out of Stock Configurable products magento2
I have to used Magento2.1.9 when I add out of stock product to cart it is not working and am getting error as this product out of stock I need backorder working properly for out of stock product and I find, this is a bug in magento2.1.9 and applied patch after that backorder product which is in out of stock status working but I have not getting patch file. So I
ve tried the other way override this file and add condition for backorder
MagentoCatalogInventoryModelQuoteItemQuantityValidatorQuantityValidator.php
this is my code used
<?php
namespace XXXXXXXXXXModelQuoteItem;
use MagentoCatalogInventoryModelStock;
/**
* Quantity validation.
*/
class QuantityValidator extends MagentoCatalogInventoryModelQuoteItemQuantityValidator
{
protected $optionInitializer;
/**
* @var QuantityValidatorInitializerStockItem
*/
protected $stockItemInitializer;
/**
* Stock registry.
*
* @var MagentoCatalogInventoryApiStockRegistryInterface
*/
protected $stockRegistry;
/**
* Stock state.
*
* @var MagentoCatalogInventoryApiStockStateInterface
*/
protected $stockState;
/**
* @param QuantityValidatorInitializerOption $optionInitializer
* @param QuantityValidatorInitializerStockItem $stockItemInitializer
* @param MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry
* @param MagentoCatalogInventoryApiStockStateInterface $stockState
*/
public function __construct(
QuantityValidatorInitializerOption $optionInitializer,
QuantityValidatorInitializerStockItem $stockItemInitializer,
MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry,
MagentoCatalogInventoryApiStockStateInterface $stockState
) {
$this->optionInitializer = $optionInitializer;
$this->stockItemInitializer = $stockItemInitializer;
$this->stockRegistry = $stockRegistry;
$this->stockState = $stockState;
}
/**
* Check product inventory data when quote item quantity declaring
*
* @param MagentoFrameworkEventObserver $observer
*
* @return void
* @throws MagentoFrameworkExceptionLocalizedException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function validate(MagentoFrameworkEventObserver $observer)
{
/* @var $quoteItem MagentoQuoteModelQuoteItem */
$quoteItem = $observer->getEvent()->getItem();
if (!$quoteItem ||
!$quoteItem->getProductId() ||
!$quoteItem->getQuote() ||
$quoteItem->getQuote()->getIsSuperMode()
) {
return;
}
$product = $quoteItem->getProduct();
$qty = $quoteItem->getQty();
/** @var MagentoCatalogInventoryModelStockItem $stockItem */
$stockItem = $this->stockRegistry->getStockItem(
$quoteItem->getProduct()->getId(),
$quoteItem->getProduct()->getStore()->getWebsiteId()
);
if (!$stockItem instanceof MagentoCatalogInventoryApiDataStockItemInterface) {
throw new MagentoFrameworkExceptionLocalizedException(__('The stock item for Product is not valid.'));
}
/** @var MagentoCatalogInventoryApiDataStockStatusInterface $stockStatus */
$stockStatus = $this->stockRegistry->getStockStatus($product->getId(), $product->getStore()->getWebsiteId());
/** @var MagentoCatalogInventoryApiDataStockStatusInterface|bool $parentStockStatus */
$parentStockStatus = false;
/**
* Check if product in stock. For composite products check base (parent) item stock status
*/
if ($quoteItem->getParentItem()) {
$product = $quoteItem->getParentItem()->getProduct();
$parentStockStatus = $this->stockRegistry->getStockStatus(
$product->getId(),
$product->getStore()->getWebsiteId()
);
}
if ($stockStatus) {
if (($stockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK
|| $parentStockStatus && $parentStockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK) && !$stockItem->getBackorders()
) {
$quoteItem->addErrorInfo(
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('This product is out of stock.')
);
$quoteItem->getQuote()->addErrorInfo(
'stock',
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('Some of the products are out of stock.')
);
return;
} else {
// Delete error from item and its quote, if it was set due to item out of stock
$this->_removeErrorsFromQuoteAndItem($quoteItem, MagentoCatalogInventoryHelperData::ERROR_QTY);
}
}
}
}
?>
after override this file in our module getting this
ReflectionException
Class XXXXXXXXModelQuoteItemQuantityValidatorInitializerOption does not exist
if anyone know reply me
magento2 out-of-stock backorder product-detail-page
add a comment |
I have to used Magento2.1.9 when I add out of stock product to cart it is not working and am getting error as this product out of stock I need backorder working properly for out of stock product and I find, this is a bug in magento2.1.9 and applied patch after that backorder product which is in out of stock status working but I have not getting patch file. So I
ve tried the other way override this file and add condition for backorder
MagentoCatalogInventoryModelQuoteItemQuantityValidatorQuantityValidator.php
this is my code used
<?php
namespace XXXXXXXXXXModelQuoteItem;
use MagentoCatalogInventoryModelStock;
/**
* Quantity validation.
*/
class QuantityValidator extends MagentoCatalogInventoryModelQuoteItemQuantityValidator
{
protected $optionInitializer;
/**
* @var QuantityValidatorInitializerStockItem
*/
protected $stockItemInitializer;
/**
* Stock registry.
*
* @var MagentoCatalogInventoryApiStockRegistryInterface
*/
protected $stockRegistry;
/**
* Stock state.
*
* @var MagentoCatalogInventoryApiStockStateInterface
*/
protected $stockState;
/**
* @param QuantityValidatorInitializerOption $optionInitializer
* @param QuantityValidatorInitializerStockItem $stockItemInitializer
* @param MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry
* @param MagentoCatalogInventoryApiStockStateInterface $stockState
*/
public function __construct(
QuantityValidatorInitializerOption $optionInitializer,
QuantityValidatorInitializerStockItem $stockItemInitializer,
MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry,
MagentoCatalogInventoryApiStockStateInterface $stockState
) {
$this->optionInitializer = $optionInitializer;
$this->stockItemInitializer = $stockItemInitializer;
$this->stockRegistry = $stockRegistry;
$this->stockState = $stockState;
}
/**
* Check product inventory data when quote item quantity declaring
*
* @param MagentoFrameworkEventObserver $observer
*
* @return void
* @throws MagentoFrameworkExceptionLocalizedException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function validate(MagentoFrameworkEventObserver $observer)
{
/* @var $quoteItem MagentoQuoteModelQuoteItem */
$quoteItem = $observer->getEvent()->getItem();
if (!$quoteItem ||
!$quoteItem->getProductId() ||
!$quoteItem->getQuote() ||
$quoteItem->getQuote()->getIsSuperMode()
) {
return;
}
$product = $quoteItem->getProduct();
$qty = $quoteItem->getQty();
/** @var MagentoCatalogInventoryModelStockItem $stockItem */
$stockItem = $this->stockRegistry->getStockItem(
$quoteItem->getProduct()->getId(),
$quoteItem->getProduct()->getStore()->getWebsiteId()
);
if (!$stockItem instanceof MagentoCatalogInventoryApiDataStockItemInterface) {
throw new MagentoFrameworkExceptionLocalizedException(__('The stock item for Product is not valid.'));
}
/** @var MagentoCatalogInventoryApiDataStockStatusInterface $stockStatus */
$stockStatus = $this->stockRegistry->getStockStatus($product->getId(), $product->getStore()->getWebsiteId());
/** @var MagentoCatalogInventoryApiDataStockStatusInterface|bool $parentStockStatus */
$parentStockStatus = false;
/**
* Check if product in stock. For composite products check base (parent) item stock status
*/
if ($quoteItem->getParentItem()) {
$product = $quoteItem->getParentItem()->getProduct();
$parentStockStatus = $this->stockRegistry->getStockStatus(
$product->getId(),
$product->getStore()->getWebsiteId()
);
}
if ($stockStatus) {
if (($stockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK
|| $parentStockStatus && $parentStockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK) && !$stockItem->getBackorders()
) {
$quoteItem->addErrorInfo(
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('This product is out of stock.')
);
$quoteItem->getQuote()->addErrorInfo(
'stock',
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('Some of the products are out of stock.')
);
return;
} else {
// Delete error from item and its quote, if it was set due to item out of stock
$this->_removeErrorsFromQuoteAndItem($quoteItem, MagentoCatalogInventoryHelperData::ERROR_QTY);
}
}
}
}
?>
after override this file in our module getting this
ReflectionException
Class XXXXXXXXModelQuoteItemQuantityValidatorInitializerOption does not exist
if anyone know reply me
magento2 out-of-stock backorder product-detail-page
add a comment |
I have to used Magento2.1.9 when I add out of stock product to cart it is not working and am getting error as this product out of stock I need backorder working properly for out of stock product and I find, this is a bug in magento2.1.9 and applied patch after that backorder product which is in out of stock status working but I have not getting patch file. So I
ve tried the other way override this file and add condition for backorder
MagentoCatalogInventoryModelQuoteItemQuantityValidatorQuantityValidator.php
this is my code used
<?php
namespace XXXXXXXXXXModelQuoteItem;
use MagentoCatalogInventoryModelStock;
/**
* Quantity validation.
*/
class QuantityValidator extends MagentoCatalogInventoryModelQuoteItemQuantityValidator
{
protected $optionInitializer;
/**
* @var QuantityValidatorInitializerStockItem
*/
protected $stockItemInitializer;
/**
* Stock registry.
*
* @var MagentoCatalogInventoryApiStockRegistryInterface
*/
protected $stockRegistry;
/**
* Stock state.
*
* @var MagentoCatalogInventoryApiStockStateInterface
*/
protected $stockState;
/**
* @param QuantityValidatorInitializerOption $optionInitializer
* @param QuantityValidatorInitializerStockItem $stockItemInitializer
* @param MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry
* @param MagentoCatalogInventoryApiStockStateInterface $stockState
*/
public function __construct(
QuantityValidatorInitializerOption $optionInitializer,
QuantityValidatorInitializerStockItem $stockItemInitializer,
MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry,
MagentoCatalogInventoryApiStockStateInterface $stockState
) {
$this->optionInitializer = $optionInitializer;
$this->stockItemInitializer = $stockItemInitializer;
$this->stockRegistry = $stockRegistry;
$this->stockState = $stockState;
}
/**
* Check product inventory data when quote item quantity declaring
*
* @param MagentoFrameworkEventObserver $observer
*
* @return void
* @throws MagentoFrameworkExceptionLocalizedException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function validate(MagentoFrameworkEventObserver $observer)
{
/* @var $quoteItem MagentoQuoteModelQuoteItem */
$quoteItem = $observer->getEvent()->getItem();
if (!$quoteItem ||
!$quoteItem->getProductId() ||
!$quoteItem->getQuote() ||
$quoteItem->getQuote()->getIsSuperMode()
) {
return;
}
$product = $quoteItem->getProduct();
$qty = $quoteItem->getQty();
/** @var MagentoCatalogInventoryModelStockItem $stockItem */
$stockItem = $this->stockRegistry->getStockItem(
$quoteItem->getProduct()->getId(),
$quoteItem->getProduct()->getStore()->getWebsiteId()
);
if (!$stockItem instanceof MagentoCatalogInventoryApiDataStockItemInterface) {
throw new MagentoFrameworkExceptionLocalizedException(__('The stock item for Product is not valid.'));
}
/** @var MagentoCatalogInventoryApiDataStockStatusInterface $stockStatus */
$stockStatus = $this->stockRegistry->getStockStatus($product->getId(), $product->getStore()->getWebsiteId());
/** @var MagentoCatalogInventoryApiDataStockStatusInterface|bool $parentStockStatus */
$parentStockStatus = false;
/**
* Check if product in stock. For composite products check base (parent) item stock status
*/
if ($quoteItem->getParentItem()) {
$product = $quoteItem->getParentItem()->getProduct();
$parentStockStatus = $this->stockRegistry->getStockStatus(
$product->getId(),
$product->getStore()->getWebsiteId()
);
}
if ($stockStatus) {
if (($stockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK
|| $parentStockStatus && $parentStockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK) && !$stockItem->getBackorders()
) {
$quoteItem->addErrorInfo(
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('This product is out of stock.')
);
$quoteItem->getQuote()->addErrorInfo(
'stock',
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('Some of the products are out of stock.')
);
return;
} else {
// Delete error from item and its quote, if it was set due to item out of stock
$this->_removeErrorsFromQuoteAndItem($quoteItem, MagentoCatalogInventoryHelperData::ERROR_QTY);
}
}
}
}
?>
after override this file in our module getting this
ReflectionException
Class XXXXXXXXModelQuoteItemQuantityValidatorInitializerOption does not exist
if anyone know reply me
magento2 out-of-stock backorder product-detail-page
I have to used Magento2.1.9 when I add out of stock product to cart it is not working and am getting error as this product out of stock I need backorder working properly for out of stock product and I find, this is a bug in magento2.1.9 and applied patch after that backorder product which is in out of stock status working but I have not getting patch file. So I
ve tried the other way override this file and add condition for backorder
MagentoCatalogInventoryModelQuoteItemQuantityValidatorQuantityValidator.php
this is my code used
<?php
namespace XXXXXXXXXXModelQuoteItem;
use MagentoCatalogInventoryModelStock;
/**
* Quantity validation.
*/
class QuantityValidator extends MagentoCatalogInventoryModelQuoteItemQuantityValidator
{
protected $optionInitializer;
/**
* @var QuantityValidatorInitializerStockItem
*/
protected $stockItemInitializer;
/**
* Stock registry.
*
* @var MagentoCatalogInventoryApiStockRegistryInterface
*/
protected $stockRegistry;
/**
* Stock state.
*
* @var MagentoCatalogInventoryApiStockStateInterface
*/
protected $stockState;
/**
* @param QuantityValidatorInitializerOption $optionInitializer
* @param QuantityValidatorInitializerStockItem $stockItemInitializer
* @param MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry
* @param MagentoCatalogInventoryApiStockStateInterface $stockState
*/
public function __construct(
QuantityValidatorInitializerOption $optionInitializer,
QuantityValidatorInitializerStockItem $stockItemInitializer,
MagentoCatalogInventoryApiStockRegistryInterface $stockRegistry,
MagentoCatalogInventoryApiStockStateInterface $stockState
) {
$this->optionInitializer = $optionInitializer;
$this->stockItemInitializer = $stockItemInitializer;
$this->stockRegistry = $stockRegistry;
$this->stockState = $stockState;
}
/**
* Check product inventory data when quote item quantity declaring
*
* @param MagentoFrameworkEventObserver $observer
*
* @return void
* @throws MagentoFrameworkExceptionLocalizedException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function validate(MagentoFrameworkEventObserver $observer)
{
/* @var $quoteItem MagentoQuoteModelQuoteItem */
$quoteItem = $observer->getEvent()->getItem();
if (!$quoteItem ||
!$quoteItem->getProductId() ||
!$quoteItem->getQuote() ||
$quoteItem->getQuote()->getIsSuperMode()
) {
return;
}
$product = $quoteItem->getProduct();
$qty = $quoteItem->getQty();
/** @var MagentoCatalogInventoryModelStockItem $stockItem */
$stockItem = $this->stockRegistry->getStockItem(
$quoteItem->getProduct()->getId(),
$quoteItem->getProduct()->getStore()->getWebsiteId()
);
if (!$stockItem instanceof MagentoCatalogInventoryApiDataStockItemInterface) {
throw new MagentoFrameworkExceptionLocalizedException(__('The stock item for Product is not valid.'));
}
/** @var MagentoCatalogInventoryApiDataStockStatusInterface $stockStatus */
$stockStatus = $this->stockRegistry->getStockStatus($product->getId(), $product->getStore()->getWebsiteId());
/** @var MagentoCatalogInventoryApiDataStockStatusInterface|bool $parentStockStatus */
$parentStockStatus = false;
/**
* Check if product in stock. For composite products check base (parent) item stock status
*/
if ($quoteItem->getParentItem()) {
$product = $quoteItem->getParentItem()->getProduct();
$parentStockStatus = $this->stockRegistry->getStockStatus(
$product->getId(),
$product->getStore()->getWebsiteId()
);
}
if ($stockStatus) {
if (($stockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK
|| $parentStockStatus && $parentStockStatus->getStockStatus() == Stock::STOCK_OUT_OF_STOCK) && !$stockItem->getBackorders()
) {
$quoteItem->addErrorInfo(
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('This product is out of stock.')
);
$quoteItem->getQuote()->addErrorInfo(
'stock',
'cataloginventory',
MagentoCatalogInventoryHelperData::ERROR_QTY,
__('Some of the products are out of stock.')
);
return;
} else {
// Delete error from item and its quote, if it was set due to item out of stock
$this->_removeErrorsFromQuoteAndItem($quoteItem, MagentoCatalogInventoryHelperData::ERROR_QTY);
}
}
}
}
?>
after override this file in our module getting this
ReflectionException
Class XXXXXXXXModelQuoteItemQuantityValidatorInitializerOption does not exist
if anyone know reply me
magento2 out-of-stock backorder product-detail-page
magento2 out-of-stock backorder product-detail-page
edited 3 mins ago
Rv Singh
asked 27 mins ago
Rv SinghRv Singh
666417
666417
add a comment |
add a comment |
0
active
oldest
votes
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%2f263944%2fmagento2-1-9-out-of-stock-product-backorder-not-working%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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%2f263944%2fmagento2-1-9-out-of-stock-product-backorder-not-working%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