<?php/** * Pimcore * * This source file is available under two different licenses: * - GNU General Public License version 3 (GPLv3) * - Pimcore Commercial License (PCL) * Full copyright and license information is available in * LICENSE.md which is distributed with this source code. * * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) * @license http://www.pimcore.org/license GPLv3 and PCL */namespace Pimcore\Bundle\EcommerceFrameworkBundle\PriceSystem\TaxManagement;use Pimcore\Bundle\EcommerceFrameworkBundle\Type\Decimal;use Pimcore\Model\DataObject\Fieldcollection\Data\TaxEntry as TaxEntryFieldcollection;use Pimcore\Model\DataObject\OnlineShopTaxClass;class TaxEntry{ const CALCULATION_MODE_COMBINE = 'combine'; const CALCULATION_MODE_ONE_AFTER_ANOTHER = 'oneAfterAnother'; const CALCULATION_MODE_FIXED = 'fixed'; /** * @var TaxEntryFieldcollection|null */ protected $entry; /** * @var float */ protected $percent; /** * @var Decimal */ protected $amount; /** * @var string|null */ protected $taxId; /** * @param float $percent * @param Decimal $amount * @param string|null $taxId * @param TaxEntryFieldcollection|null $entry */ public function __construct($percent, Decimal $amount, string $taxId = null, TaxEntryFieldcollection $entry = null) { $this->percent = $percent; $this->amount = $amount; $this->taxId = $taxId; $this->entry = $entry; } /** * @return float */ public function getPercent() { return $this->percent; } /** * @param float $percent */ public function setPercent($percent) { $this->percent = $percent; } /** * @param TaxEntryFieldcollection $entry */ public function setEntry(TaxEntryFieldcollection $entry) { $this->entry = $entry; } /** * @return TaxEntryFieldcollection */ public function getEntry(): TaxEntryFieldcollection { return $this->entry; } /** * @return Decimal */ public function getAmount(): Decimal { return $this->amount; } /** * @param Decimal $amount */ public function setAmount(Decimal $amount) { $this->amount = $amount; } /** * @return string|null */ public function getTaxId() { return $this->taxId; } /** * @param string|null $taxId */ public function setTaxId(string $taxId = null) { $this->taxId = $taxId; } /** * Converts tax rate configuration of given OnlineShopTaxClass to TaxEntries that can be used for * tax calculation. * * @param OnlineShopTaxClass $taxClass * * @return TaxEntry[] */ public static function convertTaxEntries(OnlineShopTaxClass $taxClass) { $convertedTaxEntries = []; if ($taxEntries = $taxClass->getTaxEntries()) { /** @var TaxEntryFieldcollection $entry */ foreach ($taxEntries as $entry) { $convertedTaxEntries[] = new static( $entry->getPercent(), Decimal::create(0), $entry->getName() . '-' . $entry->getPercent(), $entry ); } } return $convertedTaxEntries; }}