![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/setup/src/Magento/Setup/Fixtures/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Setup\Fixtures; /** * Fixture for generating coupon codes * * Support the following format: * <!-- Number of coupon codes --> * <coupon_codes>{int}</coupon_codes> * * @see setup/performance-toolkit/profiles/ce/small.xml */ class CouponCodesFixture extends Fixture { /** * @var int */ protected $priority = 129; /** * @var int */ protected $couponCodesCount = 0; /** * @var \Magento\SalesRule\Model\RuleFactory */ private $ruleFactory; /** * @var \Magento\SalesRule\Model\CouponFactory */ private $couponCodeFactory; /** * Constructor * * @param FixtureModel $fixtureModel * @param \Magento\SalesRule\Model\RuleFactory|null $ruleFactory * @param \Magento\SalesRule\Model\CouponFactory|null $couponCodeFactory */ public function __construct( FixtureModel $fixtureModel, \Magento\SalesRule\Model\RuleFactory $ruleFactory = null, \Magento\SalesRule\Model\CouponFactory $couponCodeFactory = null ) { parent::__construct($fixtureModel); $this->ruleFactory = $ruleFactory ?: $this->fixtureModel->getObjectManager() ->get(\Magento\SalesRule\Model\RuleFactory::class); $this->couponCodeFactory = $couponCodeFactory ?: $this->fixtureModel->getObjectManager() ->get(\Magento\SalesRule\Model\CouponFactory::class); } /** * @inheritdoc * * @SuppressWarnings(PHPMD) */ public function execute() { $this->fixtureModel->resetObjectManager(); $this->couponCodesCount = $this->fixtureModel->getValue('coupon_codes', 0); if (!$this->couponCodesCount) { return; } /** @var \Magento\Store\Model\StoreManager $storeManager */ $storeManager = $this->fixtureModel->getObjectManager()->create(\Magento\Store\Model\StoreManager::class); //Get all websites $websitesArray = []; $websites = $storeManager->getWebsites(); foreach ($websites as $website) { $websitesArray[] = $website->getId(); } $this->generateCouponCodes($this->ruleFactory, $this->couponCodeFactory, $websitesArray); } /** * Generate Coupon Codes * * @param \Magento\SalesRule\Model\RuleFactory $ruleFactory * @param \Magento\SalesRule\Model\CouponFactory $couponCodeFactory * @param array $websitesArray * * @return void */ public function generateCouponCodes($ruleFactory, $couponCodeFactory, $websitesArray) { for ($i = 0; $i < $this->couponCodesCount; $i++) { $ruleName = sprintf('Coupon Code %1$d', $i); $data = [ 'rule_id' => null, 'name' => $ruleName, 'is_active' => '1', 'website_ids' => $websitesArray, 'customer_group_ids' => [ 0 => '0', 1 => '1', 2 => '2', 3 => '3', ], 'coupon_type' => \Magento\SalesRule\Model\Rule::COUPON_TYPE_SPECIFIC, 'conditions' => [], 'simple_action' => \Magento\SalesRule\Model\Rule::BY_PERCENT_ACTION, 'discount_amount' => 5, 'discount_step' => 0, 'stop_rules_processing' => 1, 'sort_order' => '5', ]; $model = $ruleFactory->create(); $model->loadPost($data); $useAutoGeneration = (int)!empty($data['use_auto_generation']); $model->setUseAutoGeneration($useAutoGeneration); $model->save(); $coupon = $couponCodeFactory->create(); $coupon->setRuleId($model->getId()) ->setCode('CouponCode' . $i) ->setIsPrimary(true) ->setType(0); $coupon->save(); } } /** * @inheritdoc */ public function getActionTitle() { return 'Generating coupon codes'; } /** * @inheritdoc */ public function introduceParamLabels() { return [ 'coupon_codes' => 'Coupon Codes' ]; } }