/** * Get Collection of Tax Rules that are assigned to this tax class * * @return \Magento\Framework\Model\Resource\Db\Collection\AbstractCollection */ public function getAssignedToRules() { return $this->_calculationRule->getCollection()->setClassTypeFilter($this->_classType, $this->getId()); }
/** * Convert a rate model to a TaxRate data object * * @param TaxRuleModel $ruleModel * @return TaxRuleDataObject */ public function createTaxRuleDataObjectFromModel(TaxRuleModel $ruleModel) { if (!is_null($ruleModel->getId())) { $this->taxRuleDataObjectBuilder->setId($ruleModel->getId()); } if (!is_null($ruleModel->getCode())) { $this->taxRuleDataObjectBuilder->setCode($ruleModel->getCode()); } if (!is_null($ruleModel->getCustomerTaxClasses())) { $this->taxRuleDataObjectBuilder->setCustomerTaxClassIds($this->_getUniqueValues($ruleModel->getCustomerTaxClasses())); } if (!is_null($ruleModel->getProductTaxClasses())) { $this->taxRuleDataObjectBuilder->setProductTaxClassIds($this->_getUniqueValues($ruleModel->getProductTaxClasses())); } if (!is_null($ruleModel->getRates())) { $this->taxRuleDataObjectBuilder->setTaxRateIds($this->_getUniqueValues($ruleModel->getRates())); } if (!is_null($ruleModel->getPriority())) { $this->taxRuleDataObjectBuilder->setPriority($ruleModel->getPriority()); } if (!is_null($ruleModel->getPosition())) { $this->taxRuleDataObjectBuilder->setSortOrder($ruleModel->getPosition()); } if (!is_null($ruleModel->getCalculateSubtotal())) { $this->taxRuleDataObjectBuilder->setCalculateSubtotal($ruleModel->getCalculateSubtotal()); } return $this->taxRuleDataObjectBuilder->create(); }
/** * Validate rule model * * @param \Magento\Tax\Model\Calculation\Rule $value * @return boolean * @throws Zend_Validate_Exception If validation of $value is impossible * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function isValid($value) { $messages = []; // Position is required and must be 0 or greater if (!\Zend_Validate::is(trim($value->getPosition()), 'NotEmpty')) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'position']); } if (!\Zend_Validate::is(trim($value->getPosition()), 'GreaterThan', [-1])) { $this->addErrorMessage($messages, InputException::INVALID_FIELD_MIN_VALUE, ['fieldName' => 'position', 'value' => $value->getPosition(), 'minValue' => 0]); } // Priority is required and must be 0 or greater if (!\Zend_Validate::is(trim($value->getPriority()), 'NotEmpty')) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'priority']); } if (!\Zend_Validate::is(trim($value->getPriority()), 'GreaterThan', [-1])) { $this->addErrorMessage($messages, InputException::INVALID_FIELD_MIN_VALUE, ['fieldName' => 'priority', 'value' => $value->getPriority(), 'minValue' => 0]); } // Code is required if (!\Zend_Validate::is(trim($value->getCode()), 'NotEmpty')) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'code']); } // customer tax class ids is required if ($value->getCustomerTaxClassIds() === null || !$value->getCustomerTaxClassIds()) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'customer_tax_class_ids']); } else { // see if the customer tax class ids exist $customerTaxClassIds = $value->getCustomerTaxClassIds(); foreach ($customerTaxClassIds as $customerTaxClassId) { try { $taxClass = $this->classModelRegistry->retrieve($customerTaxClassId); if ($taxClass === null || !($taxClass->getClassType() == TaxClassModel::TAX_CLASS_TYPE_CUSTOMER)) { $this->addErrorMessage($messages, NoSuchEntityException::MESSAGE_SINGLE_FIELD, ['fieldName' => 'customer_tax_class_ids', 'value' => $customerTaxClassId]); } } catch (NoSuchEntityException $e) { $this->addErrorMessage($messages, $e->getRawMessage(), $e->getParameters()); } } } // product tax class ids is required if ($value->getProductTaxClassIds() === null || !$value->getProductTaxClassIds()) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'product_tax_class_ids']); } else { // see if the product tax class ids exist $productTaxClassIds = $value->getProductTaxClassIds(); foreach ($productTaxClassIds as $productTaxClassId) { try { $taxClass = $this->classModelRegistry->retrieve($productTaxClassId); if ($taxClass === null || !($taxClass->getClassType() == TaxClassModel::TAX_CLASS_TYPE_PRODUCT)) { $this->addErrorMessage($messages, NoSuchEntityException::MESSAGE_SINGLE_FIELD, ['fieldName' => 'product_tax_class_ids', 'value' => $productTaxClassId]); } } catch (NoSuchEntityException $e) { $this->addErrorMessage($messages, $e->getRawMessage(), $e->getParameters()); } } } // tax rate ids is required if ($value->getTaxRateIds() === null || !$value->getTaxRateIds()) { $this->addErrorMessage($messages, InputException::REQUIRED_FIELD, ['fieldName' => 'tax_rate_ids']); } $this->_addMessages($messages); return empty($messages); }
/** * Registers TaxRule Model to registry * * @param TaxRuleModel $taxRuleModel * @return void */ public function registerTaxRule(TaxRuleModel $taxRuleModel) { $this->registry[$taxRuleModel->getId()] = $taxRuleModel; }