7
7
8
8
use Magento \Catalog \Api \Data \ProductAttributeInterface ;
9
9
use Magento \Catalog \Ui \DataProvider \Product \Form \Modifier \AbstractModifier ;
10
+ use Magento \Framework \Stdlib \ArrayManager ;
10
11
11
12
/**
12
13
* Customize Advanced Pricing modal panel
13
14
*/
14
15
class BundleAdvancedPricing extends AbstractModifier
15
16
{
17
+ const CODE_PRICE_TYPE = 'price_type ' ;
16
18
const CODE_MSRP = 'msrp ' ;
17
19
const CODE_MSRP_DISPLAY_ACTUAL_PRICE_TYPE = 'msrp_display_actual_price_type ' ;
18
20
const CODE_ADVANCED_PRICING = 'advanced-pricing ' ;
19
21
const CODE_RECORD = 'record ' ;
20
22
23
+ /**
24
+ * @var ArrayManager
25
+ */
26
+ private $ arrayManager ;
27
+
28
+ /**
29
+ * @param ArrayManager $arrayManager
30
+ */
31
+ public function __construct (ArrayManager $ arrayManager )
32
+ {
33
+ $ this ->arrayManager = $ arrayManager ;
34
+ }
35
+
21
36
/**
22
37
* {@inheritdoc}
23
38
*/
@@ -29,8 +44,7 @@ public function modifyMeta(array $meta)
29
44
if (isset ($ parentNode ['container_ ' . self ::CODE_MSRP ])
30
45
&& isset ($ parentNode ['container_ ' . self ::CODE_MSRP_DISPLAY_ACTUAL_PRICE_TYPE ])
31
46
) {
32
- unset($ parentNode ['container_ ' . self ::CODE_MSRP ]);
33
- unset($ parentNode ['container_ ' . self ::CODE_MSRP_DISPLAY_ACTUAL_PRICE_TYPE ]);
47
+ $ parentNode = $ this ->modifyMsrpMeta ($ parentNode );
34
48
}
35
49
if (isset ($ parentNode ['container_ ' . ProductAttributeInterface::CODE_SPECIAL_PRICE ])) {
36
50
$ currentNode = &$ parentNode ['container_ ' . ProductAttributeInterface::CODE_SPECIAL_PRICE ]['children ' ];
@@ -55,4 +69,45 @@ public function modifyData(array $data)
55
69
{
56
70
return $ data ;
57
71
}
72
+
73
+ /**
74
+ * Modify meta for MSRP fields.
75
+ *
76
+ * @param array $meta
77
+ * @return array
78
+ */
79
+ private function modifyMsrpMeta (array $ meta )
80
+ {
81
+ $ meta = $ this ->arrayManager ->merge (
82
+ $ this ->arrayManager ->findPath (
83
+ static ::CODE_MSRP ,
84
+ $ meta ,
85
+ null ,
86
+ 'children '
87
+ ) . static ::META_CONFIG_PATH ,
88
+ $ meta ,
89
+ [
90
+ 'imports ' => [
91
+ 'disabled ' => 'ns = ${ $.ns }, index = ' . static ::CODE_PRICE_TYPE . ':checked '
92
+ ]
93
+ ]
94
+ );
95
+
96
+ $ meta = $ this ->arrayManager ->merge (
97
+ $ this ->arrayManager ->findPath (
98
+ static ::CODE_MSRP_DISPLAY_ACTUAL_PRICE_TYPE ,
99
+ $ meta ,
100
+ null ,
101
+ 'children '
102
+ ) . static ::META_CONFIG_PATH ,
103
+ $ meta ,
104
+ [
105
+ 'imports ' => [
106
+ 'disabled ' => 'ns = ${ $.ns }, index = ' . static ::CODE_PRICE_TYPE . ':checked '
107
+ ]
108
+ ]
109
+ );
110
+
111
+ return $ meta ;
112
+ }
58
113
}
0 commit comments