Extending bundle product in custom type ends up without “add option” button
I need a custom product type to be able to use other transaction mail templates.
For that purpose I am using an existing module which contains the following code:
<vendor>/<module>/etc/product_types.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_types.xsd">
<type name="customtype" label="Custom Product Type" modelInstance="<vendor><module>ModelProductTypeCustom" composite="true" indexPriority="110" sortOrder="110">
<priceModel instance="MagentoBundleModelProductPrice" />
<indexerModel instance="MagentoBundleModelResourceModelIndexerPrice" />
<stockIndexerModel instance="MagentoBundleModelResourceModelIndexerStock" />
<allowedSelectionTypes>
<type name="simple" />
<type name="virtual" />
</allowedSelectionTypes>
<customAttributes>
<attribute name="refundable" value="true"/>
</customAttributes>
</type>
</config>
<vendor>/<module>/Model/Product/Type/Custom.php
:
<?php
namespace <vendor><model>ModelProductType;
class Custom extends MagentoBundleModelProductType
{
const TYPE_ID = 'customtype';
}
<vendor>/<module>/Setup/UpgradeData.php
:
<?php
namespace <vendor><module>/Setup;
use MagentoCatalogApiDataProductAttributeInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoFrameworkSetupUpgradeDataInterface;
use MagentoEavSetupEavSetupFactory;
use MagentoEavSetupEavSetup;
use MagentoCatalogModelProduct;
use <vendor><module>ModelProductTypeCustom as CustomProductType;
/**
* Upgrade Data script
* @codeCoverageIgnore
*/
class UpgradeData implements UpgradeDataInterface
{
/**
* EAV setup factory
*
* @var EavSetupFactory
*/
private $eavSetupFactory;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
if (version_compare($context->getVersion(), '0.0.6') < 0) {
/** Version under 0.0.6 -> Upgrade */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$fieldList = [
'price',
'special_price',
'special_from_date',
'special_to_date',
'minimal_price',
'cost',
'tier_price',
'weight',
'price_type',
'sku_type',
'weight_type',
'price_view',
'shipment_type',
'tax_class_id',
];
foreach ($fieldList as $field) {
$applyTo = explode(
',',
$eavSetup->getAttribute(Product::ENTITY, $field, 'apply_to')
);
if (!in_array(CustomProductType::TYPE_ID, $applyTo)) {
$applyTo = CustomProductType::TYPE_ID;
$eavSetup->updateAttribute(
Product::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);
}
}
}
}
}
The Upgradescript runs successfull and I can see according changes in catalog_eav_attribute
's apply_to
column.
With all that done I lack the option to add options for containing products:
magento2.2.2 bundled-product custom-product-type
add a comment |
I need a custom product type to be able to use other transaction mail templates.
For that purpose I am using an existing module which contains the following code:
<vendor>/<module>/etc/product_types.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_types.xsd">
<type name="customtype" label="Custom Product Type" modelInstance="<vendor><module>ModelProductTypeCustom" composite="true" indexPriority="110" sortOrder="110">
<priceModel instance="MagentoBundleModelProductPrice" />
<indexerModel instance="MagentoBundleModelResourceModelIndexerPrice" />
<stockIndexerModel instance="MagentoBundleModelResourceModelIndexerStock" />
<allowedSelectionTypes>
<type name="simple" />
<type name="virtual" />
</allowedSelectionTypes>
<customAttributes>
<attribute name="refundable" value="true"/>
</customAttributes>
</type>
</config>
<vendor>/<module>/Model/Product/Type/Custom.php
:
<?php
namespace <vendor><model>ModelProductType;
class Custom extends MagentoBundleModelProductType
{
const TYPE_ID = 'customtype';
}
<vendor>/<module>/Setup/UpgradeData.php
:
<?php
namespace <vendor><module>/Setup;
use MagentoCatalogApiDataProductAttributeInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoFrameworkSetupUpgradeDataInterface;
use MagentoEavSetupEavSetupFactory;
use MagentoEavSetupEavSetup;
use MagentoCatalogModelProduct;
use <vendor><module>ModelProductTypeCustom as CustomProductType;
/**
* Upgrade Data script
* @codeCoverageIgnore
*/
class UpgradeData implements UpgradeDataInterface
{
/**
* EAV setup factory
*
* @var EavSetupFactory
*/
private $eavSetupFactory;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
if (version_compare($context->getVersion(), '0.0.6') < 0) {
/** Version under 0.0.6 -> Upgrade */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$fieldList = [
'price',
'special_price',
'special_from_date',
'special_to_date',
'minimal_price',
'cost',
'tier_price',
'weight',
'price_type',
'sku_type',
'weight_type',
'price_view',
'shipment_type',
'tax_class_id',
];
foreach ($fieldList as $field) {
$applyTo = explode(
',',
$eavSetup->getAttribute(Product::ENTITY, $field, 'apply_to')
);
if (!in_array(CustomProductType::TYPE_ID, $applyTo)) {
$applyTo = CustomProductType::TYPE_ID;
$eavSetup->updateAttribute(
Product::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);
}
}
}
}
}
The Upgradescript runs successfull and I can see according changes in catalog_eav_attribute
's apply_to
column.
With all that done I lack the option to add options for containing products:
magento2.2.2 bundled-product custom-product-type
add a comment |
I need a custom product type to be able to use other transaction mail templates.
For that purpose I am using an existing module which contains the following code:
<vendor>/<module>/etc/product_types.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_types.xsd">
<type name="customtype" label="Custom Product Type" modelInstance="<vendor><module>ModelProductTypeCustom" composite="true" indexPriority="110" sortOrder="110">
<priceModel instance="MagentoBundleModelProductPrice" />
<indexerModel instance="MagentoBundleModelResourceModelIndexerPrice" />
<stockIndexerModel instance="MagentoBundleModelResourceModelIndexerStock" />
<allowedSelectionTypes>
<type name="simple" />
<type name="virtual" />
</allowedSelectionTypes>
<customAttributes>
<attribute name="refundable" value="true"/>
</customAttributes>
</type>
</config>
<vendor>/<module>/Model/Product/Type/Custom.php
:
<?php
namespace <vendor><model>ModelProductType;
class Custom extends MagentoBundleModelProductType
{
const TYPE_ID = 'customtype';
}
<vendor>/<module>/Setup/UpgradeData.php
:
<?php
namespace <vendor><module>/Setup;
use MagentoCatalogApiDataProductAttributeInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoFrameworkSetupUpgradeDataInterface;
use MagentoEavSetupEavSetupFactory;
use MagentoEavSetupEavSetup;
use MagentoCatalogModelProduct;
use <vendor><module>ModelProductTypeCustom as CustomProductType;
/**
* Upgrade Data script
* @codeCoverageIgnore
*/
class UpgradeData implements UpgradeDataInterface
{
/**
* EAV setup factory
*
* @var EavSetupFactory
*/
private $eavSetupFactory;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
if (version_compare($context->getVersion(), '0.0.6') < 0) {
/** Version under 0.0.6 -> Upgrade */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$fieldList = [
'price',
'special_price',
'special_from_date',
'special_to_date',
'minimal_price',
'cost',
'tier_price',
'weight',
'price_type',
'sku_type',
'weight_type',
'price_view',
'shipment_type',
'tax_class_id',
];
foreach ($fieldList as $field) {
$applyTo = explode(
',',
$eavSetup->getAttribute(Product::ENTITY, $field, 'apply_to')
);
if (!in_array(CustomProductType::TYPE_ID, $applyTo)) {
$applyTo = CustomProductType::TYPE_ID;
$eavSetup->updateAttribute(
Product::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);
}
}
}
}
}
The Upgradescript runs successfull and I can see according changes in catalog_eav_attribute
's apply_to
column.
With all that done I lack the option to add options for containing products:
magento2.2.2 bundled-product custom-product-type
I need a custom product type to be able to use other transaction mail templates.
For that purpose I am using an existing module which contains the following code:
<vendor>/<module>/etc/product_types.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_types.xsd">
<type name="customtype" label="Custom Product Type" modelInstance="<vendor><module>ModelProductTypeCustom" composite="true" indexPriority="110" sortOrder="110">
<priceModel instance="MagentoBundleModelProductPrice" />
<indexerModel instance="MagentoBundleModelResourceModelIndexerPrice" />
<stockIndexerModel instance="MagentoBundleModelResourceModelIndexerStock" />
<allowedSelectionTypes>
<type name="simple" />
<type name="virtual" />
</allowedSelectionTypes>
<customAttributes>
<attribute name="refundable" value="true"/>
</customAttributes>
</type>
</config>
<vendor>/<module>/Model/Product/Type/Custom.php
:
<?php
namespace <vendor><model>ModelProductType;
class Custom extends MagentoBundleModelProductType
{
const TYPE_ID = 'customtype';
}
<vendor>/<module>/Setup/UpgradeData.php
:
<?php
namespace <vendor><module>/Setup;
use MagentoCatalogApiDataProductAttributeInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoFrameworkSetupUpgradeDataInterface;
use MagentoEavSetupEavSetupFactory;
use MagentoEavSetupEavSetup;
use MagentoCatalogModelProduct;
use <vendor><module>ModelProductTypeCustom as CustomProductType;
/**
* Upgrade Data script
* @codeCoverageIgnore
*/
class UpgradeData implements UpgradeDataInterface
{
/**
* EAV setup factory
*
* @var EavSetupFactory
*/
private $eavSetupFactory;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
if (version_compare($context->getVersion(), '0.0.6') < 0) {
/** Version under 0.0.6 -> Upgrade */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$fieldList = [
'price',
'special_price',
'special_from_date',
'special_to_date',
'minimal_price',
'cost',
'tier_price',
'weight',
'price_type',
'sku_type',
'weight_type',
'price_view',
'shipment_type',
'tax_class_id',
];
foreach ($fieldList as $field) {
$applyTo = explode(
',',
$eavSetup->getAttribute(Product::ENTITY, $field, 'apply_to')
);
if (!in_array(CustomProductType::TYPE_ID, $applyTo)) {
$applyTo = CustomProductType::TYPE_ID;
$eavSetup->updateAttribute(
Product::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);
}
}
}
}
}
The Upgradescript runs successfull and I can see according changes in catalog_eav_attribute
's apply_to
column.
With all that done I lack the option to add options for containing products:
magento2.2.2 bundled-product custom-product-type
magento2.2.2 bundled-product custom-product-type
asked 9 mins ago
muhkuh2005muhkuh2005
133
133
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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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%2f258316%2fextending-bundle-product-in-custom-type-ends-up-without-add-option-button%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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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%2f258316%2fextending-bundle-product-in-custom-type-ends-up-without-add-option-button%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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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