Newer
Older
TillQliro / Model / Order / Total / Invoice / 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\Invoice;

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

class Fee extends AbstractTotal
{
    /**
     * Collect totals
     *
     * @param Invoice $invoice
     * @return $this
     */
    public function collect(Invoice $invoice)
    {
        /** @var \Magento\Sales\Model\Order $order */
        $order = $invoice->getOrder();
        if (!$order->getQlirooneFeeInvoiced()) {
            $feeAmount = $order->getQlirooneFee();
            $feeAmountTax = $order->getQlirooneFeeTax();
            $basefeeAmount = $order->getBaseQlirooneFee();
            $basefeeAmountTax = $order->getBaseQlirooneFeeTax();
            $invoice->setQlirooneFee($feeAmount);
            $invoice->setBaseQlirooneFee($basefeeAmount);

            $invoice->setGrandTotal($invoice->getGrandTotal() + $feeAmount - $feeAmountTax);
            $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $basefeeAmount - $basefeeAmountTax);
            $order->setQlirooneFeeInvoiced($feeAmount);
            $order->setBaseQlirooneFeeInvoiced($basefeeAmount);
        }

        return $this;
    }
}