|
24 | 24 | use Sylius\MolliePlugin\Entity\OrderInterface; |
25 | 25 | use Sylius\MolliePlugin\Model\AdjustmentInterface; |
26 | 26 | use Webmozart\Assert\Assert; |
| 27 | +use Sylius\Component\Core\Model\AddressInterface; |
27 | 28 |
|
28 | 29 | final class SubscriptionOrderCloner implements SubscriptionOrderClonerInterface |
29 | 30 | { |
@@ -67,10 +68,14 @@ public function clone( |
67 | 68 | $clonedOrder->setPaymentState(OrderPaymentStates::STATE_AWAITING_PAYMENT); |
68 | 69 | $clonedOrder->setPromotionCoupon($order->getPromotionCoupon()); |
69 | 70 |
|
70 | | - Assert::notNull($order->getShippingAddress()); |
| 71 | + $shippingAddress = $order->getShippingAddress(); |
| 72 | + Assert::notNull($shippingAddress); |
| 73 | + $clonedOrder->setShippingAddress($this->hydrateAndClone($shippingAddress)); |
| 74 | + |
| 75 | + $billingAddress = $order->getBillingAddress(); |
71 | 76 | Assert::notNull($order->getBillingAddress()); |
72 | | - $clonedOrder->setShippingAddress(clone $order->getShippingAddress()); |
73 | | - $clonedOrder->setBillingAddress(clone $order->getBillingAddress()); |
| 77 | + $clonedOrder->setBillingAddress($this->hydrateAndClone($billingAddress)); |
| 78 | + |
74 | 79 | $clonedOrder->setShippingState(OrderShippingStates::STATE_READY); |
75 | 80 | $clonedOrder->setTokenValue($this->randomnessGenerator->generateUriSafeString(10)); |
76 | 81 |
|
@@ -113,4 +118,22 @@ public function clone( |
113 | 118 |
|
114 | 119 | return $clonedOrder; |
115 | 120 | } |
| 121 | + |
| 122 | + /** Hydrates the proxy data of the address before cloning it */ |
| 123 | + private function hydrateAndClone(AddressInterface $address): AddressInterface |
| 124 | + { |
| 125 | + $address->getFirstName(); |
| 126 | + $address->getLastName(); |
| 127 | + $address->getCompany(); |
| 128 | + $address->getStreet(); |
| 129 | + $address->getCity(); |
| 130 | + $address->getPostcode(); |
| 131 | + $address->getCountryCode(); |
| 132 | + $address->getProvinceCode(); |
| 133 | + $address->getProvinceName(); |
| 134 | + $address->getPhoneNumber(); |
| 135 | + $address->getCustomer(); |
| 136 | + |
| 137 | + return clone $address; |
| 138 | + } |
116 | 139 | } |
0 commit comments