ConfigureFedexDefaults.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Fedex\Setup\Patch\Data;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\Setup\Patch\DataPatchInterface;
  9. use Magento\Framework\Setup\Patch\PatchVersionInterface;
  10. class ConfigureFedexDefaults implements DataPatchInterface, PatchVersionInterface
  11. {
  12. /**
  13. * @var \Magento\Framework\Setup\ModuleDataSetupInterface
  14. */
  15. private $moduleDataSetup;
  16. /**
  17. * ConfigureFedexDefaults constructor.
  18. * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
  19. */
  20. public function __construct(
  21. \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
  22. ) {
  23. $this->moduleDataSetup = $moduleDataSetup;
  24. }
  25. /**
  26. * {@inheritdoc}
  27. * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  28. */
  29. public function apply()
  30. {
  31. $codes = [
  32. 'method' => [
  33. 'EUROPEFIRSTINTERNATIONALPRIORITY' => 'EUROPE_FIRST_INTERNATIONAL_PRIORITY',
  34. 'FEDEX1DAYFREIGHT' => 'FEDEX_1_DAY_FREIGHT',
  35. 'FEDEX2DAYFREIGHT' => 'FEDEX_2_DAY_FREIGHT',
  36. 'FEDEX2DAY' => 'FEDEX_2_DAY',
  37. 'FEDEX3DAYFREIGHT' => 'FEDEX_3_DAY_FREIGHT',
  38. 'FEDEXEXPRESSSAVER' => 'FEDEX_EXPRESS_SAVER',
  39. 'FEDEXGROUND' => 'FEDEX_GROUND',
  40. 'FIRSTOVERNIGHT' => 'FIRST_OVERNIGHT',
  41. 'GROUNDHOMEDELIVERY' => 'GROUND_HOME_DELIVERY',
  42. 'INTERNATIONALECONOMY' => 'INTERNATIONAL_ECONOMY',
  43. 'INTERNATIONALECONOMY FREIGHT' => 'INTERNATIONAL_ECONOMY_FREIGHT',
  44. 'INTERNATIONALFIRST' => 'INTERNATIONAL_FIRST',
  45. 'INTERNATIONALGROUND' => 'INTERNATIONAL_GROUND',
  46. 'INTERNATIONALPRIORITY' => 'INTERNATIONAL_PRIORITY',
  47. 'INTERNATIONALPRIORITY FREIGHT' => 'INTERNATIONAL_PRIORITY_FREIGHT',
  48. 'PRIORITYOVERNIGHT' => 'PRIORITY_OVERNIGHT',
  49. 'SMARTPOST' => 'SMART_POST',
  50. 'STANDARDOVERNIGHT' => 'STANDARD_OVERNIGHT',
  51. 'FEDEXFREIGHT' => 'FEDEX_FREIGHT',
  52. 'FEDEXNATIONALFREIGHT' => 'FEDEX_NATIONAL_FREIGHT',
  53. ],
  54. 'dropoff' => [
  55. 'REGULARPICKUP' => 'REGULAR_PICKUP',
  56. 'REQUESTCOURIER' => 'REQUEST_COURIER',
  57. 'DROPBOX' => 'DROP_BOX',
  58. 'BUSINESSSERVICECENTER' => 'BUSINESS_SERVICE_CENTER',
  59. 'STATION' => 'STATION',
  60. ],
  61. 'packaging' => [
  62. 'FEDEXENVELOPE' => 'FEDEX_ENVELOPE',
  63. 'FEDEXPAK' => 'FEDEX_PAK',
  64. 'FEDEXBOX' => 'FEDEX_BOX',
  65. 'FEDEXTUBE' => 'FEDEX_TUBE',
  66. 'FEDEX10KGBOX' => 'FEDEX_10KG_BOX',
  67. 'FEDEX25KGBOX' => 'FEDEX_25KG_BOX',
  68. 'YOURPACKAGING' => 'YOUR_PACKAGING',
  69. ],
  70. ];
  71. $conn = $this->moduleDataSetup->getConnection();
  72. $configDataTable = $this->moduleDataSetup->getTable('core_config_data');
  73. $select = $conn->select()->from(
  74. $configDataTable
  75. )->where(
  76. 'path IN (?)',
  77. [
  78. 'carriers/fedex/packaging',
  79. 'carriers/fedex/dropoff',
  80. 'carriers/fedex/free_method',
  81. 'carriers/fedex/allowed_methods'
  82. ]
  83. );
  84. $mapsOld = $conn->fetchAll($select);
  85. foreach ($mapsOld as $mapOld) {
  86. $mapNew = '';
  87. if (stripos($mapOld['path'], 'packaging') !== false && isset($codes['packaging'][$mapOld['value']])) {
  88. $mapNew = $codes['packaging'][$mapOld['value']];
  89. } elseif (stripos($mapOld['path'], 'dropoff') !== false && isset($codes['dropoff'][$mapOld['value']])) {
  90. $mapNew = $codes['dropoff'][$mapOld['value']];
  91. } elseif (stripos($mapOld['path'], 'free_method') !== false && isset($codes['method'][$mapOld['value']])) {
  92. $mapNew = $codes['method'][$mapOld['value']];
  93. } elseif (stripos($mapOld['path'], 'allowed_methods') !== false) {
  94. foreach (explode(',', $mapOld['value']) as $shippingMethod) {
  95. if (isset($codes['method'][$shippingMethod])) {
  96. $mapNew[] = $codes['method'][$shippingMethod];
  97. } else {
  98. $mapNew[] = $shippingMethod;
  99. }
  100. }
  101. $mapNew = implode(',', $mapNew);
  102. } else {
  103. continue;
  104. }
  105. if (!empty($mapNew) && $mapNew != $mapOld['value']) {
  106. $whereConfigId = $conn->quoteInto('config_id = ?', $mapOld['config_id']);
  107. $conn->update($configDataTable, ['value' => $mapNew], $whereConfigId);
  108. }
  109. }
  110. }
  111. /**
  112. * {@inheritdoc}
  113. */
  114. public static function getDependencies()
  115. {
  116. return [];
  117. }
  118. /**
  119. * {@inheritdoc}
  120. */
  121. public static function getVersion()
  122. {
  123. return '2.0.0';
  124. }
  125. /**
  126. * {@inheritdoc}
  127. */
  128. public function getAliases()
  129. {
  130. return [];
  131. }
  132. }