Order.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Order data convert model
  8. */
  9. namespace Magento\Sales\Model\Convert;
  10. /**
  11. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  12. */
  13. class Order extends \Magento\Framework\DataObject
  14. {
  15. /**
  16. * Core event manager proxy
  17. *
  18. * @var \Magento\Framework\Event\ManagerInterface
  19. */
  20. protected $_eventManager = null;
  21. /**
  22. * @var \Magento\Sales\Api\InvoiceRepositoryInterface
  23. */
  24. protected $invoiceRepository;
  25. /**
  26. * @var \Magento\Sales\Model\Order\Invoice\ItemFactory
  27. */
  28. protected $_invoiceItemFactory;
  29. /**
  30. * @var \Magento\Sales\Api\ShipmentRepositoryInterface
  31. */
  32. protected $shipmentRepository;
  33. /**
  34. * @var \Magento\Sales\Api\CreditmemoRepositoryInterface
  35. */
  36. protected $creditmemoRepository;
  37. /**
  38. * @var \Magento\Sales\Model\Order\Creditmemo\ItemFactory
  39. */
  40. protected $_creditmemoItemFactory;
  41. /**
  42. * @var \Magento\Framework\DataObject\Copy
  43. */
  44. protected $_objectCopyService;
  45. /**
  46. * @param \Magento\Framework\Event\ManagerInterface $eventManager
  47. * @param \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository
  48. * @param \Magento\Sales\Model\Order\Invoice\ItemFactory $invoiceItemFactory
  49. * @param \Magento\Sales\Api\ShipmentRepositoryInterface $shipmentRepository
  50. * @param \Magento\Sales\Model\Order\Shipment\ItemFactory $shipmentItemFactory
  51. * @param \Magento\Sales\Api\CreditmemoRepositoryInterface $creditmemoRepository
  52. * @param \Magento\Sales\Model\Order\Creditmemo\ItemFactory $creditmemoItemFactory
  53. * @param \Magento\Framework\DataObject\Copy $objectCopyService
  54. * @param array $data
  55. *
  56. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  57. */
  58. public function __construct(
  59. \Magento\Framework\Event\ManagerInterface $eventManager,
  60. \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository,
  61. \Magento\Sales\Model\Order\Invoice\ItemFactory $invoiceItemFactory,
  62. \Magento\Sales\Api\ShipmentRepositoryInterface $shipmentRepository,
  63. \Magento\Sales\Model\Order\Shipment\ItemFactory $shipmentItemFactory,
  64. \Magento\Sales\Api\CreditmemoRepositoryInterface $creditmemoRepository,
  65. \Magento\Sales\Model\Order\Creditmemo\ItemFactory $creditmemoItemFactory,
  66. \Magento\Framework\DataObject\Copy $objectCopyService,
  67. array $data = []
  68. ) {
  69. $this->_eventManager = $eventManager;
  70. $this->invoiceRepository = $invoiceRepository;
  71. $this->_invoiceItemFactory = $invoiceItemFactory;
  72. $this->shipmentRepository = $shipmentRepository;
  73. $this->_shipmentItemFactory = $shipmentItemFactory;
  74. $this->creditmemoRepository = $creditmemoRepository;
  75. $this->_creditmemoItemFactory = $creditmemoItemFactory;
  76. $this->_objectCopyService = $objectCopyService;
  77. parent::__construct($data);
  78. }
  79. /**
  80. * Convert order object to invoice
  81. *
  82. * @param \Magento\Sales\Model\Order $order
  83. * @return \Magento\Sales\Model\Order\Invoice
  84. */
  85. public function toInvoice(\Magento\Sales\Model\Order $order)
  86. {
  87. $invoice = $this->invoiceRepository->create();
  88. $invoice->setOrder(
  89. $order
  90. )->setStoreId(
  91. $order->getStoreId()
  92. )->setCustomerId(
  93. $order->getCustomerId()
  94. )->setBillingAddressId(
  95. $order->getBillingAddressId()
  96. )->setShippingAddressId(
  97. $order->getShippingAddressId()
  98. );
  99. $this->_objectCopyService->copyFieldsetToTarget('sales_convert_order', 'to_invoice', $order, $invoice);
  100. return $invoice;
  101. }
  102. /**
  103. * Convert order item object to invoice item
  104. *
  105. * @param \Magento\Sales\Model\Order\Item $item
  106. * @return \Magento\Sales\Model\Order\Invoice\Item
  107. */
  108. public function itemToInvoiceItem(\Magento\Sales\Model\Order\Item $item)
  109. {
  110. $invoiceItem = $this->_invoiceItemFactory->create();
  111. $invoiceItem->setOrderItem($item)->setProductId($item->getProductId());
  112. $this->_objectCopyService->copyFieldsetToTarget(
  113. 'sales_convert_order_item',
  114. 'to_invoice_item',
  115. $item,
  116. $invoiceItem
  117. );
  118. return $invoiceItem;
  119. }
  120. /**
  121. * Convert order object to Shipment
  122. *
  123. * @param \Magento\Sales\Model\Order $order
  124. * @return \Magento\Sales\Model\Order\Shipment
  125. */
  126. public function toShipment(\Magento\Sales\Model\Order $order)
  127. {
  128. $shipment = $this->shipmentRepository->create();
  129. $shipment->setOrder(
  130. $order
  131. )->setStoreId(
  132. $order->getStoreId()
  133. )->setCustomerId(
  134. $order->getCustomerId()
  135. )->setBillingAddressId(
  136. $order->getBillingAddressId()
  137. )->setShippingAddressId(
  138. $order->getShippingAddressId()
  139. );
  140. $this->_objectCopyService->copyFieldsetToTarget('sales_convert_order', 'to_shipment', $order, $shipment);
  141. return $shipment;
  142. }
  143. /**
  144. * Convert order item object to Shipment item
  145. *
  146. * @param \Magento\Sales\Model\Order\Item $item
  147. * @return \Magento\Sales\Model\Order\Shipment\Item
  148. */
  149. public function itemToShipmentItem(\Magento\Sales\Model\Order\Item $item)
  150. {
  151. $shipmentItem = $this->_shipmentItemFactory->create();
  152. $shipmentItem->setOrderItem($item)->setProductId($item->getProductId());
  153. $this->_objectCopyService->copyFieldsetToTarget(
  154. 'sales_convert_order_item',
  155. 'to_shipment_item',
  156. $item,
  157. $shipmentItem
  158. );
  159. return $shipmentItem;
  160. }
  161. /**
  162. * Convert order object to creditmemo
  163. *
  164. * @param \Magento\Sales\Model\Order $order
  165. * @return \Magento\Sales\Model\Order\Creditmemo
  166. */
  167. public function toCreditmemo(\Magento\Sales\Model\Order $order)
  168. {
  169. $creditmemo = $this->creditmemoRepository->create();
  170. $creditmemo->setOrder(
  171. $order
  172. )->setStoreId(
  173. $order->getStoreId()
  174. )->setCustomerId(
  175. $order->getCustomerId()
  176. )->setBillingAddressId(
  177. $order->getBillingAddressId()
  178. )->setShippingAddressId(
  179. $order->getShippingAddressId()
  180. );
  181. $this->_objectCopyService->copyFieldsetToTarget('sales_convert_order', 'to_cm', $order, $creditmemo);
  182. return $creditmemo;
  183. }
  184. /**
  185. * Convert order item object to Creditmemo item
  186. *
  187. * @param \Magento\Sales\Model\Order\Item $item
  188. * @return \Magento\Sales\Model\Order\Creditmemo\Item
  189. */
  190. public function itemToCreditmemoItem(\Magento\Sales\Model\Order\Item $item)
  191. {
  192. $creditmemoItem = $this->_creditmemoItemFactory->create();
  193. $creditmemoItem->setOrderItem($item)->setProductId($item->getProductId());
  194. $this->_objectCopyService->copyFieldsetToTarget(
  195. 'sales_convert_order_item',
  196. 'to_cm_item',
  197. $item,
  198. $creditmemoItem
  199. );
  200. return $creditmemoItem;
  201. }
  202. }