![]() 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/dev/tests/integration/testsuite/Magento/Tax/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Tax\Model; use Magento\TestFramework\Helper\Bootstrap; /** * TaxRuleFixtureFactory is meant to help in testing tax by creating/destroying tax rules/classes/rates easily. */ class TaxRuleFixtureFactory { /** * Object Manager * * @var \Magento\Framework\ObjectManagerInterface */ private $objectManager; /** * @var \Magento\Framework\Api\DataObjectHelper */ private $dataObjectHelper; public function __construct() { $this->objectManager = Bootstrap::getObjectManager(); $this->dataObjectHelper = $this->objectManager->create(\Magento\Framework\Api\DataObjectHelper::class); } /** * Helper to create tax rules. * * @param array $rulesData Keys match populateWithArray * @return array code => rule id */ public function createTaxRules($rulesData) { /** @var \Magento\Tax\Api\Data\TaxRuleInterfaceFactory $taxRuleFactory */ $taxRuleFactory = $this->objectManager->create(\Magento\Tax\Api\Data\TaxRuleInterfaceFactory::class); /** @var \Magento\Tax\Api\TaxRuleRepositoryInterface $taxRuleService */ $taxRuleService = $this->objectManager->create(\Magento\Tax\Api\TaxRuleRepositoryInterface::class); $rules = []; foreach ($rulesData as $ruleData) { $taxRule = $taxRuleFactory->create(); $this->dataObjectHelper->populateWithArray( $taxRule, $ruleData, \Magento\Tax\Api\Data\TaxRuleInterface::class ); $rules[$ruleData['code']] = $taxRuleService->save($taxRule)->getId(); } return $rules; } /** * Helper function that deletes tax rules * * @param int[] $ruleIds */ public function deleteTaxRules($ruleIds) { /** @var \Magento\Tax\Api\TaxRuleRepositoryInterface $taxRuleService */ $taxRuleService = $this->objectManager->create(\Magento\Tax\Api\TaxRuleRepositoryInterface::class); foreach ($ruleIds as $ruleId) { $taxRuleService->deleteById($ruleId); } } /** * Helper function that creates rates based on a set of input percentages. * * Returns a map of percentage => rate * * @param array $ratesData array of rate data, keys are 'country', 'region' and 'percentage' * @return int[] Tax Rate Id */ public function createTaxRates($ratesData) { /** @var \Magento\Tax\Api\Data\TaxRateInterfaceFactory $taxRateFactory */ $taxRateFactory = $this->objectManager->create(\Magento\Tax\Api\Data\TaxRateInterfaceFactory::class); /** @var \Magento\Tax\Api\TaxRateRepositoryInterface $taxRateService */ $taxRateService = $this->objectManager->create(\Magento\Tax\Api\TaxRateRepositoryInterface::class); $rates = []; foreach ($ratesData as $rateData) { $code = "{$rateData['country']} - {$rateData['region']} - {$rateData['percentage']}"; $postcode = '*'; if (isset($rateData['postcode'])) { $postcode = $rateData['postcode']; $code = $code . " - " . $postcode; } $taxRate = $taxRateFactory->create(); $taxRate->setTaxCountryId($rateData['country']) ->setTaxRegionId($rateData['region']) ->setTaxPostcode($postcode) ->setCode($code) ->setRate($rateData['percentage']); $rates[$code] = $taxRateService->save($taxRate)->getId(); } return $rates; } /** * Helper function that deletes tax rates * * @param int[] $rateIds */ public function deleteTaxRates($rateIds) { /** @var \Magento\Tax\Api\TaxRateRepositoryInterface $taxRateService */ $taxRateService = $this->objectManager->create(\Magento\Tax\Api\TaxRateRepositoryInterface::class); foreach ($rateIds as $rateId) { $taxRateService->deleteById($rateId); } } /** * Helper function that creates tax classes based on input. * * @param array $classesData Keys include 'name' and 'type' * @return array ClassName => ClassId */ public function createTaxClasses($classesData) { $classes = []; foreach ($classesData as $classData) { /** @var \Magento\Tax\Model\ClassModel $class */ $class = $this->objectManager->create(\Magento\Tax\Model\ClassModel::class) ->setClassName($classData['name']) ->setClassType($classData['type']) ->save(); $classes[$classData['name']] = $class->getId(); } return $classes; } /** * Helper function that deletes tax classes * * @param int[] $classIds */ public function deleteTaxClasses($classIds) { /** @var \Magento\Tax\Model\ClassModel $class */ $class = $this->objectManager->create(\Magento\Tax\Model\ClassModel::class); foreach ($classIds as $classId) { $class->load($classId); $class->delete(); } } }