Newer
Older
TillQliro / Model / Order / Total / Creditmemo / Fee.php
@Jonas Jonsson Jonas Jonsson on 2 Apr 2024 1 KB Initial
<?php
/**
 * Copyright © Qliro AB. All rights reserved.
 * See LICENSE.txt for license details.
 */

namespace Qliro\QliroOne\Model\Order\Total\Creditmemo;

use Magento\Sales\Model\Order\Creditmemo;
use Magento\Sales\Model\Order\Creditmemo\Total\AbstractTotal;

class Fee extends AbstractTotal
{
    /**
     * Collect totals
     *
     * @param Creditmemo $creditmemo
     * @return $this
     */
    public function collect(Creditmemo $creditmemo)
    {
        /** @var \Magento\Sales\Model\Order $order */
        $order = $creditmemo->getOrder();
        if ($order->getQlirooneFeeInvoiced() > 0) {
            $feeAmount = $order->getQlirooneFeeInvoiced() - $order->getQlirooneFeeRefunded();
            if ($feeAmount > 0) {
                $basefeeAmount = $order->getBaseQlirooneFeeInvoiced() - $order->getBaseQlirooneFeeRefunded();

                $feeAmountTax = $order->getQlirooneFeeTax();
                $basefeeAmountTax = $order->getBaseQlirooneFeeTax();
                $creditmemo->setQlirooneFee($feeAmount);
                $creditmemo->setBaseQlirooneFee($basefeeAmount);

                $creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $feeAmount - $feeAmountTax);
                $creditmemo->setBaseGrandTotal($creditmemo->getBaseGrandTotal() + $basefeeAmount - $basefeeAmountTax);
                $order->setQlirooneFeeRefunded($order->getQlirooneFeeRefunded() + $feeAmount);
                $order->setBaseQlirooneFeeRefunded($order->getBaseQlirooneFeeRefunded() + $basefeeAmount);
            }
        }

        return $this;
    }
}