Skip to content

Commit

Permalink
Bugfix: Add Magento Discount to order lines
Browse files Browse the repository at this point in the history
  • Loading branch information
michielgerritsen committed Nov 11, 2024
1 parent 96fdc1f commit 16f4313
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
46 changes: 46 additions & 0 deletions Service/Order/Lines/Generator/MagentoDiscount.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

declare(strict_types=1);

namespace Mollie\Payment\Service\Order\Lines\Generator;

use Magento\Sales\Api\Data\OrderInterface;
use Mollie\Api\Types\OrderLineType;
use Mollie\Payment\Helper\General;

class MagentoDiscount implements GeneratorInterface
{
/**
* @var General
*/
private $mollieHelper;

public function __construct(
General $mollieHelper
) {
$this->mollieHelper = $mollieHelper;
}

public function process(OrderInterface $order, array $orderLines): array
{
if (!$order->getBaseDiscountAmount()) {
return $orderLines;
}

$forceBaseCurrency = (bool)$this->mollieHelper->useBaseCurrency($order->getStoreId());
$currency = $forceBaseCurrency ? $order->getBaseCurrencyCode() : $order->getOrderCurrencyCode();
$amount = (float)$order->getData(($forceBaseCurrency ? 'base_' : '') . 'discount_amount');

$orderLines[] = [
'type' => OrderLineType::TYPE_DISCOUNT,
'name' => __('Magento Discount'),
'quantity' => 1,
'unitPrice' => $this->mollieHelper->getAmountArray($currency, $amount),
'totalAmount' => $this->mollieHelper->getAmountArray($currency, $amount),
'vatRate' => '0.00',
'vatAmount' => $this->mollieHelper->getAmountArray($currency, 0),
];

return $orderLines;
}
}
1 change: 1 addition & 0 deletions etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@
<type name="Mollie\Payment\Service\Order\Lines\OrderLinesGenerator">
<arguments>
<argument name="generators" xsi:type="array">
<item name="magento_discount" xsi:type="object">Mollie\Payment\Service\Order\Lines\Generator\MagentoDiscount</item>
<item name="fooman_totals" xsi:type="object">Mollie\Payment\Service\Order\Lines\Generator\FoomanTotals</item>
<item name="weee_fee" xsi:type="object">Mollie\Payment\Service\Order\Lines\Generator\WeeeFeeGenerator</item>
<item name="mageworx_rewardpoints" xsi:type="object">Mollie\Payment\Service\Order\Lines\Generator\MageWorxRewardPoints</item>
Expand Down

0 comments on commit 16f4313

Please sign in to comment.