Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FillQuoteAddressIdInSalesOrderAddress.php
Go to the documentation of this file.
1 <?php
8 
11 use Magento\Quote\Model\QuoteFactory;
12 use Magento\Sales\Model\OrderFactory;
13 use Magento\Sales\Model\ResourceModel\Order\Address\CollectionFactory as AddressCollectionFactory;
15 use Magento\Sales\Setup\SalesSetupFactory;
19 
21 {
25  private $moduleDataSetup;
26 
30  private $salesSetupFactory;
31 
35  private $state;
36 
40  private $eavConfig;
41 
45  private $addressCollectionFactory;
46 
50  private $orderFactory;
51 
55  private $quoteFactory;
56 
61  public function __construct(
62  ModuleDataSetupInterface $moduleDataSetup,
63  SalesSetupFactory $salesSetupFactory,
64  State $state,
65  Config $eavConfig,
66  AddressCollectionFactory $addressCollectionFactory,
67  OrderFactory $orderFactory,
68  QuoteFactory $quoteFactory
69  ) {
70  $this->moduleDataSetup = $moduleDataSetup;
71  $this->salesSetupFactory = $salesSetupFactory;
72  $this->state = $state;
73  $this->eavConfig = $eavConfig;
74  $this->addressCollectionFactory = $addressCollectionFactory;
75  $this->orderFactory = $orderFactory;
76  $this->quoteFactory = $quoteFactory;
77  }
78 
82  public function apply()
83  {
84  $this->state->emulateAreaCode(
85  \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE,
86  [$this, 'fillQuoteAddressIdInSalesOrderAddress'],
87  [$this->moduleDataSetup]
88  );
89  $this->eavConfig->clear();
90  }
91 
98  {
99  $addressTable = $setup->getTable('sales_order_address');
100  $updateOrderAddress = $setup->getConnection()
101  ->select()
102  ->joinInner(
103  ['sales_order' => $setup->getTable('sales_order')],
104  $addressTable . '.parent_id = sales_order.entity_id',
105  ['quote_address_id' => 'quote_address.address_id']
106  )
107  ->joinInner(
108  ['quote_address' => $setup->getTable('quote_address')],
109  'sales_order.quote_id = quote_address.quote_id
110  AND ' . $addressTable . '.address_type = quote_address.address_type',
111  []
112  )
113  ->where(
114  $addressTable . '.quote_address_id IS NULL'
115  );
116  $updateOrderAddress = $setup->getConnection()->updateFromSelect(
117  $updateOrderAddress,
118  $addressTable
119  );
120  $setup->getConnection()->query($updateOrderAddress);
121  }
122 
126  public static function getDependencies()
127  {
128  return [
129  ConvertSerializedDataToJson::class
130  ];
131  }
132 
136  public static function getVersion()
137  {
138  return '2.0.8';
139  }
140 
144  public function getAliases()
145  {
146  return [];
147  }
148 }
__construct(ModuleDataSetupInterface $moduleDataSetup, SalesSetupFactory $salesSetupFactory, State $state, Config $eavConfig, AddressCollectionFactory $addressCollectionFactory, OrderFactory $orderFactory, QuoteFactory $quoteFactory)
$setup
Definition: trigger.php:12