31 $catalogPriceRulesCount = $this->fixtureModel->getValue(
'catalog_price_rules', 0);
32 if (!$catalogPriceRulesCount) {
35 $this->fixtureModel->resetObjectManager();
40 $category = $this->fixtureModel->getObjectManager()->get(\
Magento\Catalog\Model\Category::class);
42 $model = $this->fixtureModel->getObjectManager()->get(\
Magento\CatalogRule\Model\Rule::class);
44 $metadataPool = $this->fixtureModel->getObjectManager()
45 ->get(\
Magento\Framework\EntityManager\MetadataPool::class);
46 $metadata = $metadataPool->getMetadata(\
Magento\CatalogRule\Api\
Data\RuleInterface::class);
49 $categoriesArray = [];
53 $websiteGroups =
$website->getGroups();
54 foreach ($websiteGroups as $websiteGroup) {
55 $websiteGroupRootCategory = $websiteGroup->getRootCategoryId();
56 $category->load($websiteGroupRootCategory);
57 $categoryResource =
$category->getResource();
59 $resultsCategories = $categoryResource->getAllChildren(
$category);
60 foreach ($resultsCategories as $resultsCategory) {
62 $structure = explode(
'/',
$category->getPath());
63 if (count($structure) > 2) {
69 asort($categoriesArray);
70 $categoriesArray = array_values($categoriesArray);
71 $linkField = $metadata->getLinkField();
72 $idField = $metadata->getIdentifierField();
74 for (
$i = 0;
$i < $catalogPriceRulesCount;
$i++) {
75 $ruleName = sprintf(
'Catalog Price Rule %1$d',
$i);
82 'website_ids' => $categoriesArray[
$i % count($categoriesArray)][1],
83 'customer_group_ids' => [
95 'type' => \Magento\CatalogRule\Model\Rule\Condition\Combine::class,
96 'aggregator' =>
'all',
101 'type' => \Magento\CatalogRule\Model\Rule\Condition\Product::class,
102 'attribute' =>
'category_ids',
104 'value' => $categoriesArray[
$i % count($categoriesArray)][0],
108 'simple_action' =>
'by_percent',
109 'discount_amount' =>
'15',
110 'stop_rules_processing' =>
'0',
120 'banner_is_enabled' =>
'',
121 'related_banners' => [],
123 if (isset(
$data[
'simple_action']) &&
$data[
'simple_action'] ==
'by_percent' 124 && isset(
$data[
'discount_amount'])
126 $data[
'discount_amount'] = min(100,
$data[
'discount_amount']);
128 if (isset(
$data[
'rule'][
'conditions'])) {
129 $data[
'conditions'] =
$data[
'rule'][
'conditions'];
131 if (isset(
$data[
'rule'][
'actions'])) {
134 unset(
$data[
'rule']);
137 $useAutoGeneration = (int)!empty(
$data[
'use_auto_generation']);
138 $model->setUseAutoGeneration($useAutoGeneration);
148 return 'Generating catalog price rules';
157 'catalog_price_rules' =>
'Catalog Price Rules'