99use Magento \Catalog \Api \Data \ProductInterface ;
1010use Magento \Catalog \Model \Product ;
1111use Magento \Catalog \Model \ResourceModel \Product \Collection ;
12+ use Magento \Catalog \Model \ResourceModel \Product \CollectionFactory as ProductCollectionFactory ;
13+ use Magento \Framework \DataObject ;
1214use Magento \Framework \Exception \InputException ;
1315use Magento \Framework \Exception \NoSuchEntityException ;
1416use Magento \Quote \Api \CartRepositoryInterface ;
1517use Magento \Quote \Api \Data \CartInterface ;
1618use Magento \Quote \Model \Cart \CustomerCartResolver ;
17- use Magento \Quote \Model \Quote ;
1819use Magento \Quote \Model \GuestCart \GuestCartResolver ;
20+ use Magento \Quote \Model \Quote ;
1921use Magento \Sales \Api \Data \OrderItemInterface ;
2022use Magento \Sales \Helper \Reorder as ReorderHelper ;
2123use Magento \Sales \Model \Order \Item ;
2224use Magento \Sales \Model \OrderFactory ;
2325use Magento \Sales \Model \ResourceModel \Order \Item \Collection as ItemCollection ;
24- use Magento \Catalog \Model \ResourceModel \Product \CollectionFactory as ProductCollectionFactory ;
2526use Psr \Log \LoggerInterface ;
2627
2728/**
3031 */
3132class Reorder
3233{
34+ /**
35+ * Forbidden reorder item properties
36+ */
37+ private const FORBIDDEN_REORDER_PROPERTIES = ['custom_price ' ];
38+
3339 /**#@+
3440 * Error message codes
3541 */
@@ -253,6 +259,7 @@ private function getOrderProducts(string $storeId, array $orderItemProductIds):
253259 private function addItemToCart (OrderItemInterface $ orderItem , Quote $ cart , ProductInterface $ product ): void
254260 {
255261 $ infoBuyRequest = $ this ->orderInfoBuyRequestGetter ->getInfoBuyRequest ($ orderItem );
262+ $ this ->sanitizeBuyRequest ($ infoBuyRequest );
256263
257264 $ addProductResult = null ;
258265 try {
@@ -273,6 +280,21 @@ private function addItemToCart(OrderItemInterface $orderItem, Quote $cart, Produ
273280 }
274281 }
275282
283+ /**
284+ * Removes forbidden reorder item properties
285+ *
286+ * @param DataObject $dataObject
287+ * @return void
288+ */
289+ private function sanitizeBuyRequest (DataObject $ dataObject ): void
290+ {
291+ foreach (self ::FORBIDDEN_REORDER_PROPERTIES as $ forbiddenProp ) {
292+ if ($ dataObject ->hasData ($ forbiddenProp )) {
293+ $ dataObject ->unsetData ($ forbiddenProp );
294+ }
295+ }
296+ }
297+
276298 /**
277299 * Add order line item error
278300 *
0 commit comments