diff --git a/src/Components/RefundManager/DAL/RefundItem/RefundItemEntity.php b/src/Components/RefundManager/DAL/RefundItem/RefundItemEntity.php index 67e5fde55..50f8fb98c 100644 --- a/src/Components/RefundManager/DAL/RefundItem/RefundItemEntity.php +++ b/src/Components/RefundManager/DAL/RefundItem/RefundItemEntity.php @@ -221,4 +221,37 @@ public function setOrderLineItemVersionId(?string $orderLineItemVersionId): void { $this->orderLineItemVersionId = $orderLineItemVersionId; } + + /** + * @param string $type + * @param string $mollieLineId + * @param string $label + * @param int $quantity + * @param float $amount + * @param null|string $oderLineItemId + * @param null|string $oderLineItemVersionId + * @param null|string $refundId + * @return array + */ + public static function createEntryArray(string $type, string $mollieLineId, string $label, int $quantity, float $amount, ?string $oderLineItemId, ?string $oderLineItemVersionId, ?string $refundId): array + { + $row = [ + 'type' => $type, + 'mollieLineId' => $mollieLineId, + 'label' => $label, + 'quantity' => $quantity, + 'amount' => $amount, + 'oderLineItemId' => $oderLineItemId, + 'oderLineItemVersionId' => $oderLineItemVersionId, + ]; + + /** + * refundId is not given when we create a new entry because the id is created by shopware dal + */ + if ($refundId !== null) { + $row['refundId'] = $refundId; + } + + return $row; + } } diff --git a/src/Components/RefundManager/RefundManager.php b/src/Components/RefundManager/RefundManager.php index a2c3fa4d8..f3df010e9 100644 --- a/src/Components/RefundManager/RefundManager.php +++ b/src/Components/RefundManager/RefundManager.php @@ -6,6 +6,7 @@ use Kiener\MolliePayments\Compatibility\Bundles\FlowBuilder\FlowBuilderEventFactory; use Kiener\MolliePayments\Compatibility\Bundles\FlowBuilder\FlowBuilderFactoryInterface; use Kiener\MolliePayments\Components\RefundManager\Builder\RefundDataBuilder; +use Kiener\MolliePayments\Components\RefundManager\DAL\RefundItem\RefundItemEntity; use Kiener\MolliePayments\Components\RefundManager\DAL\Repository\RefundRepositoryInterface; use Kiener\MolliePayments\Components\RefundManager\Integrators\StockManagerInterface; use Kiener\MolliePayments\Components\RefundManager\RefundData\RefundData; @@ -466,16 +467,18 @@ private function convertToRepositoryArray(array $serviceItems, string $type): ar if ($item->getQuantity() <= 0) { continue; } + $row = RefundItemEntity::createEntryArray( + $type, + $item->getMollieLineID(), + $item->getShopwareReference(), + $item->getQuantity(), + $item->getAmount(), + $item->getShopwareLineID(), + $item->getShopwareLineVersionId(), + null + ); - $data[] = [ - 'type' => $type, - 'orderLineItemId' => $item->getShopwareLineID(), - 'orderLineItemVersionId' => $item->getShopwareLineVersionId(), - 'mollieLineId' => $item->getMollieLineID(), - 'label' => (string)$item->getShopwareReference(), - 'quantity' => $item->getQuantity(), - 'amount' => $item->getAmount(), - ]; + $data[] = $row; } return $data; } diff --git a/src/Service/Refund/CompositionMigrationService.php b/src/Service/Refund/CompositionMigrationService.php index 534df3956..fc83579eb 100644 --- a/src/Service/Refund/CompositionMigrationService.php +++ b/src/Service/Refund/CompositionMigrationService.php @@ -79,30 +79,30 @@ public function updateRefundItems(Refund $refund, OrderEntity $order, Context $c $dataToSave = []; foreach ($oldCompositions as $composition) { - $reference = $composition->swReference; - if (strlen($reference) === 0) { - $reference = RoundingDifferenceFixer::DEFAULT_TITLE; + $label = $composition->swReference; + if (strlen($label) === 0) { + $label = RoundingDifferenceFixer::DEFAULT_TITLE; } - $row = [ - 'type' => $oldMetadata->type, - 'mollieLineId' => $composition->mollieLineId, - 'label' => $reference, - 'quantity' => $composition->quantity, - 'amount' => $composition->amount, - 'refundId' => $shopwareRefund->getId(), - 'oderLineItemId' => null, - 'oderLineItemVersionId' => null, - ]; - - + $orderLineItemId = null; + $orderLineItemVersionId = null; $orderLineItem = $this->filterByMollieId($orderLineItems, $composition->mollieLineId); if ($orderLineItem instanceof OrderLineItemEntity) { - $row['orderLineItemId'] = $orderLineItem->getId(); - $row['orderLineItemVersionId'] = $orderLineItem->getVersionId(); + $orderLineItemId = $orderLineItem->getId(); + $orderLineItemVersionId = $orderLineItem->getVersionId(); } + $row = RefundItemEntity::createEntryArray( + $oldMetadata->type, + $composition->mollieLineId, + $label, + $composition->quantity, + $composition->amount, + $orderLineItemId, + $orderLineItemVersionId, + $shopwareRefund->getId() + ); $dataToSave[] = $row; }