Skip to content

Commit 0249d6b

Browse files
author
Bohdan Korablov
committed
MAGETWO-46646: Validate Quantity fields depends to "Qty Uses Decimals" Option
1 parent b61eea7 commit 0249d6b

File tree

5 files changed

+52
-49
lines changed

5 files changed

+52
-49
lines changed

app/code/Magento/CatalogInventory/Ui/DataProvider/Product/Form/Modifier/AdvancedInventory.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ protected function prepareStockData(array $data)
117117
foreach ($stockDataFields as $field) {
118118
if (isset($data[$productId][self::DATA_SOURCE_DEFAULT][self::STOCK_DATA_FIELDS][$field])) {
119119
$data[$productId][self::DATA_SOURCE_DEFAULT][self::STOCK_DATA_FIELDS][$field] =
120-
(int)$data[$productId][self::DATA_SOURCE_DEFAULT][self::STOCK_DATA_FIELDS][$field];
120+
(float)$data[$productId][self::DATA_SOURCE_DEFAULT][self::STOCK_DATA_FIELDS][$field];
121121
}
122122
}
123123

@@ -186,6 +186,7 @@ private function prepareMeta()
186186
) - 1,
187187
];
188188
$qty['arguments']['data']['config'] = [
189+
'component' => 'Magento_CatalogInventory/js/components/qty-validator-changer',
189190
'dataType' => 'number',
190191
'formElement' => 'input',
191192
'componentType' => 'field',
@@ -196,6 +197,9 @@ private function prepareMeta()
196197
'validation' => [
197198
'validate-number' => true
198199
],
200+
'imports' => [
201+
'handleChanges' => '${$.provider}:data.product.stock_data.is_qty_decimal',
202+
],
199203
'sortOrder' => 10,
200204
];
201205
$advancedInventoryButton['arguments']['data']['config'] = [

app/code/Magento/CatalogInventory/view/adminhtml/ui_component/product_form.xml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
<field name="qty">
9090
<argument name="data" xsi:type="array">
9191
<item name="config" xsi:type="array">
92+
<item name="component" xsi:type="string">Magento_CatalogInventory/js/components/qty-validator-changer</item>
9293
<item name="label" xsi:type="string" translate="true">Qty</item>
9394
<item name="formElement" xsi:type="string">input</item>
9495
<item name="dataScope" xsi:type="string">quantity_and_stock_status.qty</item>
@@ -99,6 +100,7 @@
99100
<item name="scopeLabel" xsi:type="string">[GLOBAL]</item>
100101
<item name="imports" xsi:type="array">
101102
<item name="visible" xsi:type="string">${$.provider}:data.product.stock_data.manage_stock</item>
103+
<item name="handleChanges" xsi:type="string">${$.provider}:data.product.stock_data.is_qty_decimal</item>
102104
</item>
103105
</item>
104106
</argument>
@@ -163,12 +165,16 @@
163165
<field name="min_sale_qty">
164166
<argument name="data" xsi:type="array">
165167
<item name="config" xsi:type="array">
168+
<item name="component" xsi:type="string">Magento_CatalogInventory/js/components/qty-validator-changer</item>
166169
<item name="formElement" xsi:type="string">input</item>
167170
<item name="dataScope" xsi:type="string">min_sale_qty</item>
168171
<item name="validation" xsi:type="array">
169172
<item name="validate-number" xsi:type="boolean">true</item>
170173
</item>
171174
<item name="value" xsi:type="object">Magento\CatalogInventory\Model\Source\StockConfiguration</item>
175+
<item name="imports" xsi:type="array">
176+
<item name="handleChanges" xsi:type="string">${$.provider}:data.product.stock_data.is_qty_decimal</item>
177+
</item>
172178
</item>
173179
</argument>
174180
</field>
@@ -237,14 +243,11 @@
237243
<argument name="data" xsi:type="array">
238244
<item name="config" xsi:type="array">
239245
<item name="label" xsi:type="string" translate="true">Qty Uses Decimals</item>
240-
<item name="component" xsi:type="string">Magento_CatalogInventory/js/components/decimal-qty</item>
241246
<item name="formElement" xsi:type="string">select</item>
242247
<item name="dataScope" xsi:type="string">stock_data.is_qty_decimal</item>
243248
<item name="value" xsi:type="number">0</item>
244249
<item name="sortOrder" xsi:type="number">600</item>
245250
<item name="scopeLabel" xsi:type="string">[GLOBAL]</item>
246-
<item name="quantityIncrements" xsi:type="string">ns = ${ $.ns }, index=qty_increments</item>
247-
<item name="minSaleQuantity" xsi:type="string">ns = ${ $.ns }, index=min_sale_qty</item>
248251
<item name="imports" xsi:type="array">
249252
<item name="visible" xsi:type="string">${$.provider}:data.product.stock_data.manage_stock</item>
250253
</item>
@@ -460,12 +463,16 @@
460463
<field name="qty_increments">
461464
<argument name="data" xsi:type="array">
462465
<item name="config" xsi:type="array">
466+
<item name="component" xsi:type="string">Magento_CatalogInventory/js/components/qty-validator-changer</item>
463467
<item name="formElement" xsi:type="string">input</item>
464468
<item name="dataScope" xsi:type="string">qty_increments</item>
465469
<item name="validation" xsi:type="array">
466470
<item name="validate-number" xsi:type="boolean">true</item>
467471
</item>
468472
<item name="value" xsi:type="object">Magento\CatalogInventory\Model\Source\StockConfiguration</item>
473+
<item name="imports" xsi:type="array">
474+
<item name="handleChanges" xsi:type="string">${$.provider}:data.product.stock_data.is_qty_decimal</item>
475+
</item>
469476
</item>
470477
</argument>
471478
</field>

app/code/Magento/CatalogInventory/view/adminhtml/web/js/components/decimal-qty.js

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Copyright © 2015 Magento. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
define([
7+
'Magento_Ui/js/form/element/abstract'
8+
], function (Abstract) {
9+
'use strict';
10+
11+
return Abstract.extend({
12+
defaults: {
13+
numberValidator: {
14+
'validate-number': true
15+
},
16+
digitsValidator: {
17+
'validate-digits': true
18+
},
19+
valueUpdate: 'input'
20+
},
21+
22+
/**
23+
* Change validator
24+
*/
25+
handleChanges: function (value) {
26+
if (value === 1) {
27+
this.validation = this.numberValidator;
28+
this.validate();
29+
} else {
30+
this.validation = this.digitsValidator;
31+
this.validate();
32+
}
33+
}
34+
});
35+
});

app/code/Magento/Ui/view/base/web/js/form/element/abstract.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,10 @@ define([
366366
message = !this.disabled() && this.visible() ? result.message : '',
367367
isValid = this.disabled() || !this.visible() || result.passed;
368368

369+
this.error(message);
370+
369371
//TODO: Implement proper result propagation for form
370372
if (!isValid) {
371-
this.error(message);
372373
this.source.set('params.invalid', true);
373374
}
374375

0 commit comments

Comments
 (0)