55namespace Sylius \RefundPlugin \Generator ;
66
77use Sylius \Component \Core \Model \AdjustmentInterface ;
8+ use Sylius \Component \Order \Model \AdjustmentInterface as OrderAdjustmentInterface ;
89use Sylius \Component \Resource \Repository \RepositoryInterface ;
910use Sylius \RefundPlugin \Entity \CreditMemoUnit ;
1011use Sylius \RefundPlugin \Entity \CreditMemoUnitInterface ;
@@ -22,13 +23,23 @@ public function __construct(RepositoryInterface $adjustmentRepository)
2223
2324 public function generate (int $ unitId , int $ amount = null ): CreditMemoUnitInterface
2425 {
25- /** @var AdjustmentInterface $shippingAdjustment */
26+ /** @var OrderAdjustmentInterface $shippingAdjustment */
2627 $ shippingAdjustment = $ this
2728 ->adjustmentRepository
2829 ->findOneBy (['id ' => $ unitId , 'type ' => AdjustmentInterface::SHIPPING_ADJUSTMENT ])
2930 ;
3031 Assert::notNull ($ shippingAdjustment );
3132
32- return new CreditMemoUnit ($ shippingAdjustment ->getLabel (), $ shippingAdjustment ->getAmount (), 0 );
33+ $ creditMemoUnitTotal = $ this ->getCreditMemoUnitTotal ($ shippingAdjustment , $ amount );
34+
35+ return new CreditMemoUnit ($ shippingAdjustment ->getLabel (), $ creditMemoUnitTotal , 0 );
36+ }
37+
38+ private function getCreditMemoUnitTotal (OrderAdjustmentInterface $ shippingAdjustment , int $ amount = null ): int
39+ {
40+ Assert::lessThanEq ($ amount , $ shippingAdjustment ->getAmount ());
41+ $ creditMemoUnitTotal = null === $ amount ? $ shippingAdjustment ->getAmount () : $ amount ;
42+
43+ return $ creditMemoUnitTotal ;
3344 }
3445}
0 commit comments