Skip to content

Commit 1356c3c

Browse files
[Magento Community Engineering] Community Contributions - 2.4-develop
- merged latest code from mainline branch
2 parents 596607b + 29a6af8 commit 1356c3c

File tree

35 files changed

+920
-32
lines changed

35 files changed

+920
-32
lines changed

app/code/Magento/Braintree/view/adminhtml/web/js/braintree.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ define([
309309

310310
self.hostedFieldsInstance.tokenize(function (err, payload) {
311311
if (err) {
312+
$('body').trigger('processStop');
312313
self.error($t('Some payment input fields are invalid.'));
313314

314315
return false;

app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ define([
88
'mage/translate',
99
'underscore',
1010
'Magento_Catalog/js/product/view/product-ids-resolver',
11+
'Magento_Catalog/js/product/view/product-info-resolver',
1112
'jquery-ui-modules/widget'
12-
], function ($, $t, _, idsResolver) {
13+
], function ($, $t, _, idsResolver, productInfoResolver) {
1314
'use strict';
1415

1516
$.widget('mage.catalogAddToCart', {
@@ -24,7 +25,8 @@ define([
2425
addToCartButtonDisabledClass: 'disabled',
2526
addToCartButtonTextWhileAdding: '',
2627
addToCartButtonTextAdded: '',
27-
addToCartButtonTextDefault: ''
28+
addToCartButtonTextDefault: '',
29+
productInfoResolver: productInfoResolver
2830
},
2931

3032
/** @inheritdoc */
@@ -90,6 +92,7 @@ define([
9092
ajaxSubmit: function (form) {
9193
var self = this,
9294
productIds = idsResolver(form),
95+
productInfo = self.options.productInfoResolver(form),
9396
formData;
9497

9598
$(self.options.minicartSelector).trigger('contentLoading');
@@ -119,6 +122,7 @@ define([
119122
$(document).trigger('ajax:addToCart', {
120123
'sku': form.data().productSku,
121124
'productIds': productIds,
125+
'productInfo': productInfo,
122126
'form': form,
123127
'response': res
124128
});
@@ -172,6 +176,7 @@ define([
172176
$(document).trigger('ajax:addToCart:error', {
173177
'sku': form.data().productSku,
174178
'productIds': productIds,
179+
'productInfo': productInfo,
175180
'form': form,
176181
'response': res
177182
});
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
define([
6+
'underscore',
7+
'Magento_Catalog/js/product/view/product-info'
8+
], function (_, productInfo) {
9+
'use strict';
10+
11+
/**
12+
* Returns info about products in form.
13+
*
14+
* @param {jQuery} $form
15+
* @return {Array}
16+
*/
17+
return function ($form) {
18+
var product = _.findWhere($form.serializeArray(), {
19+
name: 'product'
20+
});
21+
22+
if (!_.isUndefined(product)) {
23+
productInfo().push(
24+
{
25+
'id': product.value
26+
}
27+
);
28+
}
29+
30+
return _.uniq(productInfo(), function (item) {
31+
return item.id;
32+
});
33+
};
34+
});
35+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
define([
7+
'ko'
8+
], function (ko) {
9+
'use strict';
10+
11+
return ko.observableArray([]);
12+
});

app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItem.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ public function initialize(
118118
$product->getStore()->getWebsiteId()
119119
);
120120

121+
if ($result->getHasError() === true && in_array($result->getErrorCode(), ['qty_available', 'out_stock'])) {
122+
$quoteItem->setHasError(true);
123+
}
124+
121125
/* We need to ensure that any possible plugin will not erase the data */
122126
$backOrdersQty = $this->stockStateProvider->checkQuoteItemQty($stockItem, $rowQty, $qtyForCheck, $qty)
123127
->getItemBackorders();

app/code/Magento/CatalogInventory/Model/StockStateProvider.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Magento\Framework\Math\Division as MathDivision;
1515

1616
/**
17-
* Interface StockStateProvider
17+
* Provider stocks state
1818
*/
1919
class StockStateProvider implements StockStateProviderInterface
2020
{
@@ -156,6 +156,7 @@ public function checkQuoteItemQty(StockItemInterface $stockItem, $qty, $summaryQ
156156

157157
if (!$stockItem->getIsInStock()) {
158158
$result->setHasError(true)
159+
->setErrorCode('out_stock')
159160
->setMessage(__('This product is out of stock.'))
160161
->setQuoteMessage(__('Some of the products are out of stock.'))
161162
->setQuoteMessageIndex('stock');
@@ -165,7 +166,11 @@ public function checkQuoteItemQty(StockItemInterface $stockItem, $qty, $summaryQ
165166

166167
if (!$this->checkQty($stockItem, $summaryQty) || !$this->checkQty($stockItem, $qty)) {
167168
$message = __('The requested qty is not available');
168-
$result->setHasError(true)->setMessage($message)->setQuoteMessage($message)->setQuoteMessageIndex('qty');
169+
$result->setHasError(true)
170+
->setErrorCode('qty_available')
171+
->setMessage($message)
172+
->setQuoteMessage($message)
173+
->setQuoteMessageIndex('qty');
169174
return $result;
170175
} else {
171176
if ($stockItem->getQty() - $summaryQty < 0) {

app/code/Magento/CatalogInventory/etc/adminhtml/di.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@
1414
</argument>
1515
</arguments>
1616
</type>
17-
<type name="Magento\CatalogInventory\Model\Spi\StockStateProviderInterface">
18-
<arguments>
19-
<argument name="qtyCheckApplicable" xsi:type="boolean">false</argument>
20-
</arguments>
21-
</type>
2217
<type name="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider">
2318
<arguments>
2419
<argument name="addFieldStrategies" xsi:type="array">

app/code/Magento/Checkout/view/frontend/web/js/sidebar.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,12 @@ define([
260260

261261
if (!_.isUndefined(productData)) {
262262
$(document).trigger('ajax:removeFromCart', {
263-
productIds: [productData['product_id']]
263+
productIds: [productData['product_id']],
264+
productInfo: [
265+
{
266+
'id': productData['product_id']
267+
}
268+
]
264269
});
265270

266271
if (window.location.href.indexOf(this.shoppingCartUrl) === 0) {

app/code/Magento/ConfigurableProduct/Test/Mftf/Test/NoOptionAvailableToConfigureDisabledProductTest.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,12 @@
161161
<click selector="{{AdminInvoicePaymentShippingSection.shippingMethod}}" stepKey="chooseShippingMethod"/>
162162
<waitForPageLoad stepKey="waitForShippingMethodLoad"/>
163163
<click selector="{{AdminOrderFormActionSection.SubmitOrder}}" stepKey="clickSubmitOrder"/>
164-
<waitForPageLoad stepKey="waitForSuccess"/>
165-
<see selector="{{AdminOrderDetailsMessagesSection.successMessage}}" userInput="You created the order." stepKey="seeSuccessMessage"/>
164+
<waitForPageLoad stepKey="waitForError"/>
165+
<!-- Check that error remains -->
166+
<actionGroup ref="AssertAdminItemOrderedErrorActionGroup" stepKey="assertProductErrorRemains">
167+
<argument name="productName" value="$createConfigChildProduct2.name$"/>
168+
<argument name="messageType" value="error"/>
169+
<argument name="message" value="This product is out of stock."/>
170+
</actionGroup>
166171
</test>
167172
</tests>

app/code/Magento/ConfigurableProduct/view/frontend/requirejs-config.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,12 @@ var config = {
88
'*': {
99
configurable: 'Magento_ConfigurableProduct/js/configurable'
1010
}
11+
},
12+
config: {
13+
mixins: {
14+
'Magento_Catalog/js/catalog-add-to-cart': {
15+
'Magento_ConfigurableProduct/js/catalog-add-to-cart-mixin': true
16+
}
17+
}
1118
}
1219
};

0 commit comments

Comments
 (0)