Magento 2 : Custom product type module updateMagento2: How to add pre defined data (installData.php) for Custom ModuleError during upgrade to Magento 2.1 from 2.0.7installation stopping at 51%Magento 2.1.5 How to create Module which can use Eav functionalities (addAttribute in my case)I have created an extension to show Customer Company Name in Order grid. But when creating new order, order is not showing in order gridHaving trouble exporting products from Magento 2.x. Fatal error: Uncaught Error: Call to a member function getName()Custom EAV Entity Type Missing “default_attribute_set_id” In ModelMagento 2 How to upgrade existing custom customer address attribute?Magento2 REST API get all customers detailsMagento 2.3 How to get all the Multi Source Inventory (MSI) locations collection in custom module?

What is the meaning of "You've never met a graph you didn't like?"

How do you say "Trust your struggle." in French?

What is it called when someone votes for an option that's not their first choice?

Highest stage count that are used one right after the other?

Hashing password to increase entropy

How to test the sharpness of a knife?

Air travel with refrigerated insulin

Should a narrator ever describe things based on a character's view instead of facts?

Do native speakers use "ultima" and "proxima" frequently in spoken English?

Friend wants my recommendation but I don't want to give it to him

Amorphous proper classes in MK

Checking @@ROWCOUNT failing

Can you describe someone as luxurious? As in someone who likes luxurious things?

Weird lines in Microsoft Word

What properties make a magic weapon befit a Rogue more than a DEX-based Fighter?

What is the purpose of using a decision tree?

Why didn't Voldemort know what Grindelwald looked like?

Trouble reading roman numeral notation with flats

Why doesn't Gödel's incompleteness theorem apply to false statements?

Is there a distance limit for minecart tracks?

Make a Bowl of Alphabet Soup

Output visual diagram of picture

Started in 1987 vs. Starting in 1987

Reasons for having MCU pin-states default to pull-up/down out of reset



Magento 2 : Custom product type module update


Magento2: How to add pre defined data (installData.php) for Custom ModuleError during upgrade to Magento 2.1 from 2.0.7installation stopping at 51%Magento 2.1.5 How to create Module which can use Eav functionalities (addAttribute in my case)I have created an extension to show Customer Company Name in Order grid. But when creating new order, order is not showing in order gridHaving trouble exporting products from Magento 2.x. Fatal error: Uncaught Error: Call to a member function getName()Custom EAV Entity Type Missing “default_attribute_set_id” In ModelMagento 2 How to upgrade existing custom customer address attribute?Magento2 REST API get all customers detailsMagento 2.3 How to get all the Multi Source Inventory (MSI) locations collection in custom module?













0















I have a module that was defining a custom product type: MyPT1



I added a second custom product type (MyPT2) using the same module.



But When I create a MyPT2 product in the backend, the price is not present.

I Think that it is due to the fact that InstallData.php is not run during setup:upgrade as the module was already installed.

I then would like to create a UpgradeData.php but I don't know how to create it correctly.



Here is my InstallData.php



<?php
namespace VendorModuleSetup;

use MagentoEavSetupEavSetup;
use MagentoEavSetupEavSetupFactory;
use MagentoFrameworkSetupInstallDataInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;

class InstallData implements InstallDataInterface

protected $eavSetupFactory;

public function __construct(EavSetupFactory $eavSetupFactory)

$this->eavSetupFactory = $eavSetupFactory;


public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

$fieldList = [
'price',
'special_price',
'special_from_date',
'special_to_date',
'minimal_price',
'cost',
'tier_price',
'weight',
];

foreach ($fieldList as $field)
$applyTo = explode(
',',
$eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
);
if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
$applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
$eavSetup->updateAttribute(
MagentoCatalogModelProduct::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);


if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
$applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
$eavSetup->updateAttribute(
MagentoCatalogModelProduct::ENTITY,
$field,
'apply_to',
implode(',', $applyTo)
);






Thank you for your help,










share|improve this question




























    0















    I have a module that was defining a custom product type: MyPT1



    I added a second custom product type (MyPT2) using the same module.



    But When I create a MyPT2 product in the backend, the price is not present.

    I Think that it is due to the fact that InstallData.php is not run during setup:upgrade as the module was already installed.

    I then would like to create a UpgradeData.php but I don't know how to create it correctly.



    Here is my InstallData.php



    <?php
    namespace VendorModuleSetup;

    use MagentoEavSetupEavSetup;
    use MagentoEavSetupEavSetupFactory;
    use MagentoFrameworkSetupInstallDataInterface;
    use MagentoFrameworkSetupModuleContextInterface;
    use MagentoFrameworkSetupModuleDataSetupInterface;

    class InstallData implements InstallDataInterface

    protected $eavSetupFactory;

    public function __construct(EavSetupFactory $eavSetupFactory)

    $this->eavSetupFactory = $eavSetupFactory;


    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

    $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

    $fieldList = [
    'price',
    'special_price',
    'special_from_date',
    'special_to_date',
    'minimal_price',
    'cost',
    'tier_price',
    'weight',
    ];

    foreach ($fieldList as $field)
    $applyTo = explode(
    ',',
    $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
    );
    if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
    $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
    $eavSetup->updateAttribute(
    MagentoCatalogModelProduct::ENTITY,
    $field,
    'apply_to',
    implode(',', $applyTo)
    );


    if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
    $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
    $eavSetup->updateAttribute(
    MagentoCatalogModelProduct::ENTITY,
    $field,
    'apply_to',
    implode(',', $applyTo)
    );






    Thank you for your help,










    share|improve this question


























      0












      0








      0








      I have a module that was defining a custom product type: MyPT1



      I added a second custom product type (MyPT2) using the same module.



      But When I create a MyPT2 product in the backend, the price is not present.

      I Think that it is due to the fact that InstallData.php is not run during setup:upgrade as the module was already installed.

      I then would like to create a UpgradeData.php but I don't know how to create it correctly.



      Here is my InstallData.php



      <?php
      namespace VendorModuleSetup;

      use MagentoEavSetupEavSetup;
      use MagentoEavSetupEavSetupFactory;
      use MagentoFrameworkSetupInstallDataInterface;
      use MagentoFrameworkSetupModuleContextInterface;
      use MagentoFrameworkSetupModuleDataSetupInterface;

      class InstallData implements InstallDataInterface

      protected $eavSetupFactory;

      public function __construct(EavSetupFactory $eavSetupFactory)

      $this->eavSetupFactory = $eavSetupFactory;


      public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

      $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

      $fieldList = [
      'price',
      'special_price',
      'special_from_date',
      'special_to_date',
      'minimal_price',
      'cost',
      'tier_price',
      'weight',
      ];

      foreach ($fieldList as $field)
      $applyTo = explode(
      ',',
      $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
      );
      if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
      $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
      $eavSetup->updateAttribute(
      MagentoCatalogModelProduct::ENTITY,
      $field,
      'apply_to',
      implode(',', $applyTo)
      );


      if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
      $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
      $eavSetup->updateAttribute(
      MagentoCatalogModelProduct::ENTITY,
      $field,
      'apply_to',
      implode(',', $applyTo)
      );






      Thank you for your help,










      share|improve this question
















      I have a module that was defining a custom product type: MyPT1



      I added a second custom product type (MyPT2) using the same module.



      But When I create a MyPT2 product in the backend, the price is not present.

      I Think that it is due to the fact that InstallData.php is not run during setup:upgrade as the module was already installed.

      I then would like to create a UpgradeData.php but I don't know how to create it correctly.



      Here is my InstallData.php



      <?php
      namespace VendorModuleSetup;

      use MagentoEavSetupEavSetup;
      use MagentoEavSetupEavSetupFactory;
      use MagentoFrameworkSetupInstallDataInterface;
      use MagentoFrameworkSetupModuleContextInterface;
      use MagentoFrameworkSetupModuleDataSetupInterface;

      class InstallData implements InstallDataInterface

      protected $eavSetupFactory;

      public function __construct(EavSetupFactory $eavSetupFactory)

      $this->eavSetupFactory = $eavSetupFactory;


      public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

      $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

      $fieldList = [
      'price',
      'special_price',
      'special_from_date',
      'special_to_date',
      'minimal_price',
      'cost',
      'tier_price',
      'weight',
      ];

      foreach ($fieldList as $field)
      $applyTo = explode(
      ',',
      $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
      );
      if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
      $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
      $eavSetup->updateAttribute(
      MagentoCatalogModelProduct::ENTITY,
      $field,
      'apply_to',
      implode(',', $applyTo)
      );


      if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
      $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
      $eavSetup->updateAttribute(
      MagentoCatalogModelProduct::ENTITY,
      $field,
      'apply_to',
      implode(',', $applyTo)
      );






      Thank you for your help,







      magento2 module upgrade






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 16 hours ago









      magefms

      1,8321425




      1,8321425










      asked Apr 24 '18 at 8:45









      AlexglvrAlexglvr

      87511138




      87511138




















          1 Answer
          1






          active

          oldest

          votes


















          0














          This one should work:



          <?php
          namespace VendorModuleSetup;

          use MagentoEavSetupEavSetup;
          use MagentoEavSetupEavSetupFactory;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          class UpgradeData implements InstallDataInterface

          protected $eavSetupFactory;

          public function __construct(EavSetupFactory $eavSetupFactory)

          $this->eavSetupFactory = $eavSetupFactory;


          public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          $setup->startSetup();

          if (version_compare($context->getVersion(), '1.0.1', '<'))

          $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

          $fieldList = [
          'price',
          'special_price',
          'special_from_date',
          'special_to_date',
          'minimal_price',
          'cost',
          'tier_price',
          'weight',
          ];

          foreach ($fieldList as $field)
          $applyTo = explode(
          ',',
          $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
          );
          if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
          $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
          $eavSetup->updateAttribute(
          MagentoCatalogModelProduct::ENTITY,
          $field,
          'apply_to',
          implode(',', $applyTo)
          );


          if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
          $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
          $eavSetup->updateAttribute(
          MagentoCatalogModelProduct::ENTITY,
          $field,
          'apply_to',
          implode(',', $applyTo)
          );




          $setup->endSetup();







          share|improve this answer






















            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
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f223438%2fmagento-2-custom-product-type-module-update%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            This one should work:



            <?php
            namespace VendorModuleSetup;

            use MagentoEavSetupEavSetup;
            use MagentoEavSetupEavSetupFactory;
            use MagentoFrameworkSetupInstallDataInterface;
            use MagentoFrameworkSetupModuleContextInterface;
            use MagentoFrameworkSetupModuleDataSetupInterface;

            class UpgradeData implements InstallDataInterface

            protected $eavSetupFactory;

            public function __construct(EavSetupFactory $eavSetupFactory)

            $this->eavSetupFactory = $eavSetupFactory;


            public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

            $setup->startSetup();

            if (version_compare($context->getVersion(), '1.0.1', '<'))

            $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

            $fieldList = [
            'price',
            'special_price',
            'special_from_date',
            'special_to_date',
            'minimal_price',
            'cost',
            'tier_price',
            'weight',
            ];

            foreach ($fieldList as $field)
            $applyTo = explode(
            ',',
            $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
            );
            if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
            $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
            $eavSetup->updateAttribute(
            MagentoCatalogModelProduct::ENTITY,
            $field,
            'apply_to',
            implode(',', $applyTo)
            );


            if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
            $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
            $eavSetup->updateAttribute(
            MagentoCatalogModelProduct::ENTITY,
            $field,
            'apply_to',
            implode(',', $applyTo)
            );




            $setup->endSetup();







            share|improve this answer



























              0














              This one should work:



              <?php
              namespace VendorModuleSetup;

              use MagentoEavSetupEavSetup;
              use MagentoEavSetupEavSetupFactory;
              use MagentoFrameworkSetupInstallDataInterface;
              use MagentoFrameworkSetupModuleContextInterface;
              use MagentoFrameworkSetupModuleDataSetupInterface;

              class UpgradeData implements InstallDataInterface

              protected $eavSetupFactory;

              public function __construct(EavSetupFactory $eavSetupFactory)

              $this->eavSetupFactory = $eavSetupFactory;


              public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

              $setup->startSetup();

              if (version_compare($context->getVersion(), '1.0.1', '<'))

              $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

              $fieldList = [
              'price',
              'special_price',
              'special_from_date',
              'special_to_date',
              'minimal_price',
              'cost',
              'tier_price',
              'weight',
              ];

              foreach ($fieldList as $field)
              $applyTo = explode(
              ',',
              $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
              );
              if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
              $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
              $eavSetup->updateAttribute(
              MagentoCatalogModelProduct::ENTITY,
              $field,
              'apply_to',
              implode(',', $applyTo)
              );


              if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
              $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
              $eavSetup->updateAttribute(
              MagentoCatalogModelProduct::ENTITY,
              $field,
              'apply_to',
              implode(',', $applyTo)
              );




              $setup->endSetup();







              share|improve this answer

























                0












                0








                0







                This one should work:



                <?php
                namespace VendorModuleSetup;

                use MagentoEavSetupEavSetup;
                use MagentoEavSetupEavSetupFactory;
                use MagentoFrameworkSetupInstallDataInterface;
                use MagentoFrameworkSetupModuleContextInterface;
                use MagentoFrameworkSetupModuleDataSetupInterface;

                class UpgradeData implements InstallDataInterface

                protected $eavSetupFactory;

                public function __construct(EavSetupFactory $eavSetupFactory)

                $this->eavSetupFactory = $eavSetupFactory;


                public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

                $setup->startSetup();

                if (version_compare($context->getVersion(), '1.0.1', '<'))

                $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

                $fieldList = [
                'price',
                'special_price',
                'special_from_date',
                'special_to_date',
                'minimal_price',
                'cost',
                'tier_price',
                'weight',
                ];

                foreach ($fieldList as $field)
                $applyTo = explode(
                ',',
                $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
                );
                if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
                $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
                $eavSetup->updateAttribute(
                MagentoCatalogModelProduct::ENTITY,
                $field,
                'apply_to',
                implode(',', $applyTo)
                );


                if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
                $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
                $eavSetup->updateAttribute(
                MagentoCatalogModelProduct::ENTITY,
                $field,
                'apply_to',
                implode(',', $applyTo)
                );




                $setup->endSetup();







                share|improve this answer













                This one should work:



                <?php
                namespace VendorModuleSetup;

                use MagentoEavSetupEavSetup;
                use MagentoEavSetupEavSetupFactory;
                use MagentoFrameworkSetupInstallDataInterface;
                use MagentoFrameworkSetupModuleContextInterface;
                use MagentoFrameworkSetupModuleDataSetupInterface;

                class UpgradeData implements InstallDataInterface

                protected $eavSetupFactory;

                public function __construct(EavSetupFactory $eavSetupFactory)

                $this->eavSetupFactory = $eavSetupFactory;


                public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

                $setup->startSetup();

                if (version_compare($context->getVersion(), '1.0.1', '<'))

                $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

                $fieldList = [
                'price',
                'special_price',
                'special_from_date',
                'special_to_date',
                'minimal_price',
                'cost',
                'tier_price',
                'weight',
                ];

                foreach ($fieldList as $field)
                $applyTo = explode(
                ',',
                $eavSetup->getAttribute(MagentoCatalogModelProduct::ENTITY, $field, 'apply_to')
                );
                if (!in_array(VendorModuleModelProductTypeMyPT1::TYPE_CODE, $applyTo))
                $applyTo[] = VendorModuleModelProductTypeMyPT1::TYPE_CODE;
                $eavSetup->updateAttribute(
                MagentoCatalogModelProduct::ENTITY,
                $field,
                'apply_to',
                implode(',', $applyTo)
                );


                if (!in_array(VendorModuleModelProductTypeMyPT2::TYPE_CODE, $applyTo))
                $applyTo[] = VendorModuleModelProductTypeMyPT2::TYPE_CODE;
                $eavSetup->updateAttribute(
                MagentoCatalogModelProduct::ENTITY,
                $field,
                'apply_to',
                implode(',', $applyTo)
                );




                $setup->endSetup();








                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 16 hours ago









                magefmsmagefms

                1,8321425




                1,8321425



























                    draft saved

                    draft discarded
















































                    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.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f223438%2fmagento-2-custom-product-type-module-update%23new-answer', 'question_page');

                    );

                    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







                    Popular posts from this blog

                    Sum ergo cogito? 1 nng

                    419 nièngy_Soadمي 19bal1.5o_g

                    Queiggey Chernihivv 9NnOo i Zw X QqKk LpB