Current File : //var/www/prestashop/src/PrestaShopBundle/Resources/config/services/core/form/command_builder.yml
services:
  _defaults:
    public: true

  prestashop.core.form.command_builder.product_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ProductCommandsBuilder
    arguments:
      - !tagged core.product_command_builder

  # IMPORTANT these two builders update the product indexation, since the indexes are based on other product data
  # like names, references and so on they should be executed last for more up-to-date indexes, this can be done
  # before the product type though as it doesn't influence the indexes
  prestashop.core.form.command_builder.product.options_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\OptionsCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags:
      - { name: 'core.product_command_builder', priority: -15 }

  # Status update should be after the visibility as it is the final dependency on the product indexation
  prestashop.core.form.command_builder.product.product_status_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ProductStatusCommandsBuilder
    tags:
      - { name: 'core.product_command_builder', priority: -21 }

  # VERY IMPORTANT this builder must be the last one, it will avoid conflicts with previous commands
  # that may not be compatible with the updated type, its priority musk be kept lower than others
  prestashop.core.form.command_builder.product.type:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\TypeCommandsBuilder
    tags:
      - { name: 'core.product_command_builder', priority: -42 }

  prestashop.core.form.command_builder.product.basic_information:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\BasicInformationCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.prices:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\PricesCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.seo:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\SEOCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.shipping:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ShippingCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.stock_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\StockCommandsBuilder
    arguments:
      - !php/const PrestaShopBundle\Form\Admin\Extension\ModifyAllShopsExtension::MODIFY_ALL_SHOPS_PREFIX
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.product_suppliers_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ProductSuppliersCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.feature_values_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\FeatureValuesCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.customization_fields_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\CustomizationFieldsCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.virtual_product_file_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\VirtualProductFileCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.categories:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ProductCategoriesCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.details_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\DetailsCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.attachments:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\ProductAttachmentsCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.related_products_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\RelatedProductsCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop_core_form_command_builder_product_specific_price_priority_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\SpecificPricePriorityCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  prestashop.core.form.command_builder.product.packed_products_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\PackedProductsCommandsBuilder
    tags: [ 'core.product_command_builder' ]

  # Combination builders
  prestashop.core.form.command_builder.combination.combination_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationCommandsBuilder
    arguments:
      - !tagged core.combination_command_builder

  prestashop.core.form.command_builder.product.combination.stock_command_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationStockCommandsBuilder
    tags: [ 'core.combination_command_builder' ]

  prestashop.core.form.command_builder.product.combination.price_command_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationPriceCommandsBuilder
    tags: [ 'core.combination_command_builder' ]

  prestashop.core.form.command_builder.product.combination.details_command_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationDetailsCommandsBuilder
    tags: [ 'core.combination_command_builder' ]

  prestashop.core.form.command_builder.product.combination.suppliers_command_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationSuppliersCommandsBuilder
    tags: [ 'core.combination_command_builder' ]

  prestashop.core.form.command_builder.product.combination.images_command_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\CombinationImagesCommandsBuilder
    tags: [ 'core.combination_command_builder' ]

  prestashop.core.form.command_builder.product.combination.default_combination_commands_builder:
    class: PrestaShop\PrestaShop\Core\Form\IdentifiableObject\CommandBuilder\Product\Combination\DefaultCombinationCommandsBuilder
    tags: [ 'core.combination_command_builder' ]