/** * Prepare attributes form of bundle product * * @return void * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function _prepareForm() { parent::_prepareForm(); $specialPrice = $this->getForm()->getElement('special_price'); if ($specialPrice) { $specialPrice->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Special')->setDisableChild(false)); $specialPrice->addClass(implode(' ', ['validate-greater-than-zero', 'validate-number-range', 'number-range-0.00-100.00'])); } $sku = $this->getForm()->getElement('sku'); if ($sku) { $sku->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend')->setDisableChild(false)); } $price = $this->getForm()->getElement('price'); if ($price) { $price->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend', 'adminhtml.catalog.product.bundle.edit.tab.attributes.price')->setDisableChild(true)); } $tax = $this->getForm()->getElement('tax_class_id'); if ($tax) { $tax->setAfterElementHtml('<script>' . "\n require(['prototype'], function(){\n function changeTaxClassId() {\n if (\$('price_type').value == '" . \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC . "') {\n \$('tax_class_id').disabled = true;\n \$('tax_class_id').value = '0';\n \$('tax_class_id').removeClassName('required-entry');\n if (\$('advice-required-entry-tax_class_id')) {\n \$('advice-required-entry-tax_class_id').remove();\n }\n } else {\n \$('tax_class_id').disabled = false;\n " . ($tax->getRequired() ? "\$('tax_class_id').addClassName('required-entry');" : '') . "\n }\n }\n\n if (\$('price_type')) {\n \$('price_type').observe('change', changeTaxClassId);\n changeTaxClassId();\n }\n });\n " . '</script>'); } $weight = $this->getForm()->getElement('weight'); if ($weight) { $weight->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend')->setDisableChild(true)); } $tier_price = $this->getForm()->getElement('tier_price'); if ($tier_price) { $tier_price->setRenderer($this->getLayout()->createBlock('Magento\\Catalog\\Block\\Adminhtml\\Product\\Edit\\Tab\\Price\\Tier')->setPriceColumnHeader(__('Percent Discount'))->setPriceValidation('validate-greater-than-zero validate-number-range number-range-0.00-100.00')); } }
/** * Prepare attributes form of bundle product * * @return void */ protected function _prepareForm() { parent::_prepareForm(); $specialPrice = $this->getForm()->getElement('special_price'); if ($specialPrice) { $specialPrice->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Special')->setDisableChild(false)); $specialPrice->addClass(implode(' ', ['validate-greater-than-zero', 'validate-number-range', 'number-range-0.00-100.00'])); } $sku = $this->getForm()->getElement('sku'); if ($sku) { $sku->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend')->setDisableChild(false)); } $price = $this->getForm()->getElement('price'); if ($price) { $price->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend', 'adminhtml.catalog.product.bundle.edit.tab.attributes.price')->setDisableChild(true)); } $tax = $this->getForm()->getElement('tax_class_id'); if ($tax) { $tax->setAfterElementHtml('<script type="text/javascript">' . "\n //<![CDATA[\n function changeTaxClassId() {\n if (\$('price_type').value == '" . \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC . "') {\n \$('tax_class_id').disabled = true;\n \$('tax_class_id').value = '0';\n \$('tax_class_id').removeClassName('required-entry');\n if (\$('advice-required-entry-tax_class_id')) {\n \$('advice-required-entry-tax_class_id').remove();\n }\n } else {\n \$('tax_class_id').disabled = false;\n " . ($tax->getRequired() ? "\$('tax_class_id').addClassName('required-entry');" : '') . "\n }\n }\n\n document.observe('dom:loaded', function() {\n if (\$('price_type')) {\n \$('price_type').observe('change', changeTaxClassId);\n changeTaxClassId();\n }\n });\n //]]>\n " . '</script>'); } $weight = $this->getForm()->getElement('weight'); if ($weight) { $weight->setRenderer($this->getLayout()->createBlock('Magento\\Bundle\\Block\\Adminhtml\\Catalog\\Product\\Edit\\Tab\\Attributes\\Extend')->setDisableChild(true)); } $tier_price = $this->getForm()->getElement('tier_price'); if ($tier_price) { $tier_price->setRenderer($this->getLayout()->createBlock('Magento\\Catalog\\Block\\Adminhtml\\Product\\Edit\\Tab\\Price\\Tier')->setPriceColumnHeader(__('Percent Discount'))->setPriceValidation('validate-greater-than-zero validate-number-range number-range-0.00-100.00')); } $groupPrice = $this->getForm()->getElement('group_price'); if ($groupPrice) { $groupPrice->setRenderer($this->getLayout()->createBlock('Magento\\Catalog\\Block\\Adminhtml\\Product\\Edit\\Tab\\Price\\Group')->setPriceColumnHeader(__('Percent Discount'))->setPriceValidation('validate-greater-than-zero validate-number-range number-range-0.00-100.00')); } $mapEnabled = $this->getForm()->getElement('msrp_enabled'); if ($mapEnabled && $this->getCanEditPrice() !== false) { $mapEnabled->setAfterElementHtml('<script type="text/javascript">' . "\n function changePriceTypeMap() {\n if (\$('price_type').value == " . \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC . ") {\n \$('msrp_enabled').setValue(" . \Magento\Catalog\Model\Product\Attribute\Source\Msrp\Type\Enabled::MSRP_ENABLE_NO . ");\n \$('msrp_enabled').disable();\n \$('msrp_display_actual_price_type').setValue(" . \Magento\Catalog\Model\Product\Attribute\Source\Msrp\Type\Price::TYPE_USE_CONFIG . ");\n \$('msrp_display_actual_price_type').disable();\n \$('msrp').setValue('');\n \$('msrp').disable();\n } else {\n \$('msrp_enabled').enable();\n \$('msrp_display_actual_price_type').enable();\n \$('msrp').enable();\n }\n }\n document.observe('dom:loaded', function() {\n \$('price_type').observe('change', changePriceTypeMap);\n changePriceTypeMap();\n });\n " . '</script>'); } }