ToOrderAddress.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Model\Quote\Address;
  7. use Magento\Framework\DataObject\Copy;
  8. use Magento\Quote\Model\Quote\Address;
  9. use Magento\Sales\Model\Order\AddressRepository as OrderAddressRepository;
  10. use Magento\Sales\Api\Data\OrderAddressInterface;
  11. /**
  12. * Class ToOrderAddress
  13. */
  14. class ToOrderAddress
  15. {
  16. /**
  17. * @var Copy
  18. */
  19. protected $objectCopyService;
  20. /**
  21. * @var OrderAddressRepository
  22. */
  23. protected $orderAddressRepository;
  24. /**
  25. * @var \Magento\Framework\Api\DataObjectHelper
  26. */
  27. protected $dataObjectHelper;
  28. /**
  29. * @param OrderAddressRepository $orderAddressRepository
  30. * @param Copy $objectCopyService
  31. * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
  32. */
  33. public function __construct(
  34. OrderAddressRepository $orderAddressRepository,
  35. Copy $objectCopyService,
  36. \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
  37. ) {
  38. $this->orderAddressRepository = $orderAddressRepository;
  39. $this->objectCopyService = $objectCopyService;
  40. $this->dataObjectHelper = $dataObjectHelper;
  41. }
  42. /**
  43. * @param Address $object
  44. * @param array $data
  45. * @return OrderAddressInterface
  46. */
  47. public function convert(Address $object, $data = [])
  48. {
  49. $orderAddress = $this->orderAddressRepository->create();
  50. $orderAddressData = $this->objectCopyService->getDataFromFieldset(
  51. 'sales_convert_quote_address',
  52. 'to_order_address',
  53. $object
  54. );
  55. $this->dataObjectHelper->populateWithArray(
  56. $orderAddress,
  57. array_merge($orderAddressData, $data),
  58. \Magento\Sales\Api\Data\OrderAddressInterface::class
  59. );
  60. return $orderAddress;
  61. }
  62. }