Common/Calculator/AmountCalculator.php
protected function createPercentAdjustment(
        Model\AdjustmentInterface $data,
        float $base,
        string $currency
    ): Adjustment {
        $this->assertAdjustmentMode($data, Model\AdjustmentModes::MODE_PERCENT);

        $rate = (float)$data->getAmount();

        if ($data->getType() === Model\AdjustmentTypes::TYPE_TAXATION) {
            // Calculate taxation as ATI - NET
            $amount = Money::round($base * (1 + $rate / 100), $currency) - Money::round($base, $currency);
        } else {
            $amount = Money::round($base * $rate / 100, $currency);
        }

        return new Adjustment((string)$data->getDesignation(), $amount, $rate);
    }
protected function createPercentAdjustment(
        Model\AdjustmentInterface $data,
        float $base,
        string $currency
    ): Adjustment {
        $this->assertAdjustmentMode($data, Model\AdjustmentModes::MODE_PERCENT);

        $rate = (float)$data->getAmount();

        if ($data->getType() === Model\AdjustmentTypes::TYPE_TAXATION) {
            // Calculate taxation as ATI - NET
            $amount = Money::round($base * (1 + $rate / 100), $currency) - Money::round($base, $currency);
        } else {
            $amount = Money::round($base * $rate / 100, $currency);
        }

        return new Adjustment((string)$data->getDesignation(), $amount, $rate);
    }
Creates a new result adjustment.

@param Model\AdjustmentInterface $data
@param float                     $base
@param string                    $currency

@return Adjustment