| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- namespace Magento\AdvancedPricingImportExport\Model\Export;
 
- use Magento\ImportExport\Model\Export;
 
- use Magento\Store\Model\Store;
 
- use Magento\CatalogImportExport\Model\Import\Product as ImportProduct;
 
- use Magento\AdvancedPricingImportExport\Model\Import\AdvancedPricing as ImportAdvancedPricing;
 
- use Magento\Catalog\Model\Product as CatalogProduct;
 
- /**
 
-  * Export Advanced Pricing
 
-  *
 
-  * @author      Magento Core Team <core@magentocommerce.com>
 
-  * @SuppressWarnings(PHPMD.TooManyFields)
 
-  * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
 
-  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
 
-  */
 
- class AdvancedPricing extends \Magento\CatalogImportExport\Model\Export\Product
 
- {
 
-     const ENTITY_ADVANCED_PRICING = 'advanced_pricing';
 
-     /**
 
-      * @var \Magento\CatalogImportExport\Model\Import\Product\StoreResolver
 
-      */
 
-     protected $_storeResolver;
 
-     /**
 
-      * @var \Magento\Customer\Api\GroupRepositoryInterface
 
-      */
 
-     protected $_groupRepository;
 
-     /**
 
-      * @var string
 
-      */
 
-     protected $_entityTypeCode;
 
-     /**
 
-      * @var \Magento\Framework\App\ResourceConnection
 
-      */
 
-     protected $_resource;
 
-     /**
 
-      * @var int
 
-      */
 
-     protected $_passTierPrice = 0;
 
-     /**
 
-      * List of items websites
 
-      *
 
-      * @var array
 
-      */
 
-     protected $_priceWebsite = [
 
-         ImportAdvancedPricing::COL_TIER_PRICE_WEBSITE,
 
-     ];
 
-     /**
 
-      * List of items customer groups
 
-      *
 
-      * @var array
 
-      */
 
-     protected $_priceCustomerGroup = [
 
-         ImportAdvancedPricing::COL_TIER_PRICE_CUSTOMER_GROUP,
 
-     ];
 
-     /**
 
-      * Export template
 
-      *
 
-      * @var array
 
-      */
 
-     protected $templateExportData = [
 
-         ImportAdvancedPricing::COL_SKU => '',
 
-         ImportAdvancedPricing::COL_TIER_PRICE_WEBSITE => '',
 
-         ImportAdvancedPricing::COL_TIER_PRICE_CUSTOMER_GROUP => '',
 
-         ImportAdvancedPricing::COL_TIER_PRICE_QTY => '',
 
-         ImportAdvancedPricing::COL_TIER_PRICE => '',
 
-         ImportAdvancedPricing::COL_TIER_PRICE_TYPE => ''
 
-     ];
 
-     /**
 
-      * @var string[]
 
-      */
 
-     private $websiteCodesMap = [];
 
-     /**
 
-      * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
 
-      * @param \Magento\Eav\Model\Config $config
 
-      * @param \Magento\Framework\App\ResourceConnection $resource
 
-      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
 
-      * @param \Psr\Log\LoggerInterface $logger
 
-      * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory
 
-      * @param \Magento\ImportExport\Model\Export\ConfigInterface $exportConfig
 
-      * @param \Magento\Catalog\Model\ResourceModel\ProductFactory $productFactory
 
-      * @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory $attrSetColFactory
 
-      * @param \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryColFactory
 
-      * @param \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory $itemFactory
 
-      * @param \Magento\Catalog\Model\ResourceModel\Product\Option\CollectionFactory $optionColFactory
 
-      * @param \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeColFactory
 
-      * @param \Magento\CatalogImportExport\Model\Export\Product\Type\Factory $_typeFactory
 
-      * @param \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider
 
-      * @param \Magento\CatalogImportExport\Model\Export\RowCustomizerInterface $rowCustomizer
 
-      * @param ImportProduct\StoreResolver $storeResolver
 
-      * @param \Magento\Customer\Api\GroupRepositoryInterface $groupRepository
 
-      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
 
-      */
 
-     public function __construct(
 
-         \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
 
-         \Magento\Eav\Model\Config $config,
 
-         \Magento\Framework\App\ResourceConnection $resource,
 
-         \Magento\Store\Model\StoreManagerInterface $storeManager,
 
-         \Psr\Log\LoggerInterface $logger,
 
-         \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory,
 
-         \Magento\ImportExport\Model\Export\ConfigInterface $exportConfig,
 
-         \Magento\Catalog\Model\ResourceModel\ProductFactory $productFactory,
 
-         \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory $attrSetColFactory,
 
-         \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryColFactory,
 
-         \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory $itemFactory,
 
-         \Magento\Catalog\Model\ResourceModel\Product\Option\CollectionFactory $optionColFactory,
 
-         \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeColFactory,
 
-         \Magento\CatalogImportExport\Model\Export\Product\Type\Factory $_typeFactory,
 
-         \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider,
 
-         \Magento\CatalogImportExport\Model\Export\RowCustomizerInterface $rowCustomizer,
 
-         \Magento\CatalogImportExport\Model\Import\Product\StoreResolver $storeResolver,
 
-         \Magento\Customer\Api\GroupRepositoryInterface $groupRepository
 
-     ) {
 
-         $this->_storeResolver = $storeResolver;
 
-         $this->_groupRepository = $groupRepository;
 
-         $this->_resource = $resource;
 
-         parent::__construct(
 
-             $localeDate,
 
-             $config,
 
-             $resource,
 
-             $storeManager,
 
-             $logger,
 
-             $collectionFactory,
 
-             $exportConfig,
 
-             $productFactory,
 
-             $attrSetColFactory,
 
-             $categoryColFactory,
 
-             $itemFactory,
 
-             $optionColFactory,
 
-             $attributeColFactory,
 
-             $_typeFactory,
 
-             $linkTypeProvider,
 
-             $rowCustomizer
 
-         );
 
-     }
 
-     /**
 
-      * @return $this
 
-      * @throws \Magento\Framework\Exception\LocalizedException
 
-      */
 
-     protected function initTypeModels()
 
-     {
 
-         $productTypes = $this->_exportConfig->getEntityTypes(CatalogProduct::ENTITY);
 
-         foreach ($productTypes as $productTypeName => $productTypeConfig) {
 
-             if (!($model = $this->_typeFactory->create($productTypeConfig['model']))) {
 
-                 throw new \Magento\Framework\Exception\LocalizedException(
 
-                     __('Entity type model \'%1\' is not found', $productTypeConfig['model'])
 
-                 );
 
-             }
 
-             if (!$model instanceof \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType) {
 
-                 throw new \Magento\Framework\Exception\LocalizedException(
 
-                     __(
 
-                         'Entity type model must be an instance of'
 
-                         . ' \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType'
 
-                     )
 
-                 );
 
-             }
 
-             if ($model->isSuitable()) {
 
-                 $this->_productTypeModels[$productTypeName] = $model;
 
-                 $this->_disabledAttrs = array_merge($this->_disabledAttrs, $model->getDisabledAttrs());
 
-                 $this->_indexValueAttributes = array_merge(
 
-                     $this->_indexValueAttributes,
 
-                     $model->getIndexValueAttributes()
 
-                 );
 
-             }
 
-         }
 
-         if (!$this->_productTypeModels) {
 
-             throw new \Magento\Framework\Exception\LocalizedException(
 
-                 __('There are no product types available for export')
 
-             );
 
-         }
 
-         $this->_disabledAttrs = array_unique($this->_disabledAttrs);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Export process
 
-      *
 
-      * @return string
 
-      * @throws \Magento\Framework\Exception\LocalizedException
 
-      */
 
-     public function export()
 
-     {
 
-         //Execution time may be very long
 
-         set_time_limit(0);
 
-         $writer = $this->getWriter();
 
-         $page = 0;
 
-         while (true) {
 
-             ++$page;
 
-             $entityCollection = $this->_getEntityCollection(true);
 
-             $entityCollection->setOrder('has_options', 'asc');
 
-             $entityCollection->setStoreId(Store::DEFAULT_STORE_ID);
 
-             $this->_prepareEntityCollection($entityCollection);
 
-             $this->paginateCollection($page, $this->getItemsPerPage());
 
-             if ($entityCollection->count() == 0) {
 
-                 break;
 
-             }
 
-             $exportData = $this->getExportData();
 
-             foreach ($exportData as $dataRow) {
 
-                 $writer->writeRow($dataRow);
 
-             }
 
-             if ($entityCollection->getCurPage() >= $entityCollection->getLastPageNumber()) {
 
-                 break;
 
-             }
 
-         }
 
-         return $writer->getContents();
 
-     }
 
-     /**
 
-      * Clean up attribute collection.
 
-      *
 
-      * @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection $collection
 
-      * @return \Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection
 
-      */
 
-     public function filterAttributeCollection(\Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection $collection)
 
-     {
 
-         $collection->load();
 
-         foreach ($collection as $attribute) {
 
-             if (in_array($attribute->getAttributeCode(), $this->_disabledAttrs)) {
 
-                 if (isset($this->_parameters[\Magento\ImportExport\Model\Export::FILTER_ELEMENT_SKIP])) {
 
-                     if ($attribute->getAttributeCode() == ImportAdvancedPricing::COL_TIER_PRICE
 
-                         && in_array(
 
-                             $attribute->getId(),
 
-                             $this->_parameters[\Magento\ImportExport\Model\Export::FILTER_ELEMENT_SKIP]
 
-                         )
 
-                     ) {
 
-                         $this->_passTierPrice = 1;
 
-                     }
 
-                 }
 
-                 $collection->removeItemByKey($attribute->getId());
 
-             }
 
-         }
 
-         return $collection;
 
-     }
 
-     /**
 
-      * Get export data for collection
 
-      *
 
-      * @return array|mixed
 
-      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
 
-      * @SuppressWarnings(PHPMD.NPathComplexity)
 
-      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
 
-      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
 
-      */
 
-     protected function getExportData()
 
-     {
 
-         if ($this->_passTierPrice) {
 
-             return [];
 
-         }
 
-         $exportData = [];
 
-         try {
 
-             $productsByStores = $this->loadCollection();
 
-             if (!empty($productsByStores)) {
 
-                 $linkField = $this->getProductEntityLinkField();
 
-                 $productLinkIds = [];
 
-                 foreach ($productsByStores as $product) {
 
-                     $productLinkIds[array_pop($product)[$linkField]] = true;
 
-                 }
 
-                 $productLinkIds = array_keys($productLinkIds);
 
-                 $tierPricesData = $this->fetchTierPrices($productLinkIds);
 
-                 $exportData = $this->prepareExportData(
 
-                     $productsByStores,
 
-                     $tierPricesData
 
-                 );
 
-                 if (!empty($exportData)) {
 
-                     asort($exportData);
 
-                 }
 
-             }
 
-         } catch (\Throwable $e) {
 
-             $this->_logger->critical($e);
 
-         }
 
-         return $exportData;
 
-     }
 
-     /**
 
-      * Creating export-formatted row from tier price.
 
-      *
 
-      * @param array $tierPriceData Tier price information.
 
-      *
 
-      * @return array Formatted for export tier price information.
 
-      */
 
-     private function createExportRow(array $tierPriceData): array
 
-     {
 
-         //List of columns to display in export row.
 
-         $exportRow = $this->templateExportData;
 
-         foreach (array_keys($exportRow) as $keyTemplate) {
 
-             if (array_key_exists($keyTemplate, $tierPriceData)) {
 
-                 if (in_array($keyTemplate, $this->_priceWebsite)) {
 
-                     //If it's website column then getting website code.
 
-                     $exportRow[$keyTemplate] = $this->_getWebsiteCode(
 
-                         $tierPriceData[$keyTemplate]
 
-                     );
 
-                 } elseif (in_array($keyTemplate, $this->_priceCustomerGroup)) {
 
-                     //If it's customer group column then getting customer
 
-                     //group name by ID.
 
-                     $exportRow[$keyTemplate] = $this->_getCustomerGroupById(
 
-                         $tierPriceData[$keyTemplate],
 
-                         $tierPriceData[ImportAdvancedPricing::VALUE_ALL_GROUPS]
 
-                     );
 
-                     unset($exportRow[ImportAdvancedPricing::VALUE_ALL_GROUPS]);
 
-                 } elseif ($keyTemplate
 
-                     === ImportAdvancedPricing::COL_TIER_PRICE
 
-                 ) {
 
-                     //If it's price column then getting value and type
 
-                     //of tier price.
 
-                     $exportRow[$keyTemplate]
 
-                         = $tierPriceData[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]
 
-                         ? $tierPriceData[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]
 
-                         : $tierPriceData[ImportAdvancedPricing::COL_TIER_PRICE];
 
-                     $exportRow[ImportAdvancedPricing::COL_TIER_PRICE_TYPE]
 
-                         = $this->tierPriceTypeValue($tierPriceData);
 
-                 } else {
 
-                     //Any other column just goes as is.
 
-                     $exportRow[$keyTemplate] = $tierPriceData[$keyTemplate];
 
-                 }
 
-             }
 
-         }
 
-         return $exportRow;
 
-     }
 
-     /**
 
-      * Prepare data for export.
 
-      *
 
-      * @param array $productsData Products to export.
 
-      * @param array $tierPricesData Their tier prices.
 
-      *
 
-      * @return array Export rows to display.
 
-      */
 
-     private function prepareExportData(
 
-         array $productsData,
 
-         array $tierPricesData
 
-     ): array {
 
-         //Assigning SKUs to tier prices data.
 
-         $productLinkIdToSkuMap = [];
 
-         foreach ($productsData as $productData) {
 
-             $productLinkIdToSkuMap[$productData[Store::DEFAULT_STORE_ID][$this->getProductEntityLinkField()]]
 
-                 = $productData[Store::DEFAULT_STORE_ID]['sku'];
 
-         }
 
-         //Adding products' SKUs to tier price data.
 
-         $linkedTierPricesData = [];
 
-         foreach ($tierPricesData as $tierPriceData) {
 
-             $sku = $productLinkIdToSkuMap[$tierPriceData['product_link_id']];
 
-             $linkedTierPricesData[] = array_merge(
 
-                 $tierPriceData,
 
-                 [ImportAdvancedPricing::COL_SKU => $sku]
 
-             );
 
-         }
 
-         //Formatting data for export.
 
-         $customExportData = [];
 
-         foreach ($linkedTierPricesData as $row) {
 
-             $customExportData[] = $this->createExportRow($row);
 
-         }
 
-         return $customExportData;
 
-     }
 
-     /**
 
-      * Correct export data.
 
-      *
 
-      * @param array $exportData
 
-      * @return array
 
-      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
 
-      * @deprecated 100.3.0
 
-      * @see prepareExportData
 
-      */
 
-     protected function correctExportData($exportData)
 
-     {
 
-         $customExportData = [];
 
-         foreach ($exportData as $key => $row) {
 
-             $exportRow = $this->templateExportData;
 
-             foreach ($exportRow as $keyTemplate => $valueTemplate) {
 
-                 if (isset($row[$keyTemplate])) {
 
-                     if (in_array($keyTemplate, $this->_priceWebsite)) {
 
-                         $exportRow[$keyTemplate] = $this->_getWebsiteCode(
 
-                             $row[$keyTemplate]
 
-                         );
 
-                     } elseif (in_array($keyTemplate, $this->_priceCustomerGroup)) {
 
-                         $exportRow[$keyTemplate] = $this->_getCustomerGroupById(
 
-                             $row[$keyTemplate],
 
-                             isset($row[ImportAdvancedPricing::VALUE_ALL_GROUPS])
 
-                             ? $row[ImportAdvancedPricing::VALUE_ALL_GROUPS]
 
-                             : null
 
-                         );
 
-                         unset($exportRow[ImportAdvancedPricing::VALUE_ALL_GROUPS]);
 
-                     } elseif ($keyTemplate === ImportAdvancedPricing::COL_TIER_PRICE) {
 
-                         $exportRow[$keyTemplate] = $row[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]
 
-                             ? $row[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]
 
-                             : $row[ImportAdvancedPricing::COL_TIER_PRICE];
 
-                         $exportRow[ImportAdvancedPricing::COL_TIER_PRICE_TYPE]
 
-                             = $this->tierPriceTypeValue($row[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]);
 
-                     } else {
 
-                         $exportRow[$keyTemplate] = $row[$keyTemplate];
 
-                     }
 
-                 }
 
-             }
 
-             $customExportData[$key] = $exportRow;
 
-             unset($exportRow);
 
-         }
 
-         return $customExportData;
 
-     }
 
-     /**
 
-      * Check type for tier price.
 
-      *
 
-      * @param array $tierPriceData
 
-      * @return string
 
-      */
 
-     private function tierPriceTypeValue(array $tierPriceData): string
 
-     {
 
-         return $tierPriceData[ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE]
 
-             ? ImportAdvancedPricing::TIER_PRICE_TYPE_PERCENT
 
-             : ImportAdvancedPricing::TIER_PRICE_TYPE_FIXED;
 
-     }
 
-     /**
 
-      * Load tier prices for given products.
 
-      *
 
-      * @param string[] $productIds Link IDs of products to find tier prices for.
 
-      *
 
-      * @return array Tier prices data.
 
-      *
 
-      * @SuppressWarnings(PHPMD.NPathComplexity)
 
-      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
 
-      */
 
-     private function fetchTierPrices(array $productIds): array
 
-     {
 
-         if (empty($productIds)) {
 
-             throw new \InvalidArgumentException(
 
-                 'Can only load tier prices for specific products'
 
-             );
 
-         }
 
-         $pricesTable = ImportAdvancedPricing::TABLE_TIER_PRICE;
 
-         $exportFilter = null;
 
-         $priceFromFilter = null;
 
-         $priceToFilter = null;
 
-         if (isset($this->_parameters[Export::FILTER_ELEMENT_GROUP])) {
 
-             $exportFilter = $this->_parameters[Export::FILTER_ELEMENT_GROUP];
 
-         }
 
-         $productEntityLinkField = $this->getProductEntityLinkField();
 
-         $selectFields = [
 
-             ImportAdvancedPricing::COL_TIER_PRICE_WEBSITE => 'ap.website_id',
 
-             ImportAdvancedPricing::VALUE_ALL_GROUPS => 'ap.all_groups',
 
-             ImportAdvancedPricing::COL_TIER_PRICE_CUSTOMER_GROUP => 'ap.customer_group_id',
 
-             ImportAdvancedPricing::COL_TIER_PRICE_QTY => 'ap.qty',
 
-             ImportAdvancedPricing::COL_TIER_PRICE => 'ap.value',
 
-             ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE => 'ap.percentage_value',
 
-             'product_link_id' => 'ap.' .$productEntityLinkField,
 
-         ];
 
-         if ($exportFilter && array_key_exists('tier_price', $exportFilter)) {
 
-             if (!empty($exportFilter['tier_price'][0])) {
 
-                 $priceFromFilter = $exportFilter['tier_price'][0];
 
-             }
 
-             if (!empty($exportFilter['tier_price'][1])) {
 
-                 $priceToFilter = $exportFilter['tier_price'][1];
 
-             }
 
-         }
 
-         $select = $this->_connection->select()
 
-             ->from(
 
-                 ['ap' => $this->_resource->getTableName($pricesTable)],
 
-                 $selectFields
 
-             )
 
-             ->where(
 
-                 'ap.'.$productEntityLinkField.' IN (?)',
 
-                 $productIds
 
-             );
 
-         if ($priceFromFilter !== null) {
 
-             $select->where('ap.value >= ?', $priceFromFilter);
 
-         }
 
-         if ($priceToFilter !== null) {
 
-             $select->where('ap.value <= ?', $priceToFilter);
 
-         }
 
-         if ($priceFromFilter || $priceToFilter) {
 
-             $select->orWhere('ap.percentage_value IS NOT NULL');
 
-         }
 
-         return $this->_connection->fetchAll($select);
 
-     }
 
-     /**
 
-      * Get tier prices.
 
-      *
 
-      * @param array $listSku
 
-      * @param string $table
 
-      * @return array|bool
 
-      * @SuppressWarnings(PHPMD.NPathComplexity)
 
-      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
 
-      * @deprecated 100.3.0
 
-      * @see fetchTierPrices
 
-      */
 
-     protected function getTierPrices(array $listSku, $table)
 
-     {
 
-         if (isset($this->_parameters[\Magento\ImportExport\Model\Export::FILTER_ELEMENT_GROUP])) {
 
-             $exportFilter = $this->_parameters[\Magento\ImportExport\Model\Export::FILTER_ELEMENT_GROUP];
 
-         }
 
-         if ($table == ImportAdvancedPricing::TABLE_TIER_PRICE) {
 
-             $selectFields = [
 
-                 ImportAdvancedPricing::COL_SKU => 'cpe.sku',
 
-                 ImportAdvancedPricing::COL_TIER_PRICE_WEBSITE => 'ap.website_id',
 
-                 ImportAdvancedPricing::VALUE_ALL_GROUPS => 'ap.all_groups',
 
-                 ImportAdvancedPricing::COL_TIER_PRICE_CUSTOMER_GROUP => 'ap.customer_group_id',
 
-                 ImportAdvancedPricing::COL_TIER_PRICE_QTY => 'ap.qty',
 
-                 ImportAdvancedPricing::COL_TIER_PRICE => 'ap.value',
 
-                 ImportAdvancedPricing::COL_TIER_PRICE_PERCENTAGE_VALUE => 'ap.percentage_value',
 
-             ];
 
-             if (isset($exportFilter) && !empty($exportFilter)) {
 
-                 $price = $exportFilter['tier_price'];
 
-             }
 
-         }
 
-         if ($listSku) {
 
-             if (isset($exportFilter) && !empty($exportFilter)) {
 
-                 $date = $exportFilter[\Magento\Catalog\Model\Category::KEY_UPDATED_AT];
 
-                 if (isset($date[0]) && !empty($date[0])) {
 
-                     $updatedAtFrom = $this->_localeDate->date($date[0], null, false)->format('Y-m-d H:i:s');
 
-                 }
 
-                 if (isset($date[1]) && !empty($date[1])) {
 
-                     $updatedAtTo = $this->_localeDate->date($date[1], null, false)->format('Y-m-d H:i:s');
 
-                 }
 
-             }
 
-             try {
 
-                 $productEntityLinkField = $this->getProductEntityLinkField();
 
-                 $select = $this->_connection->select()
 
-                     ->from(
 
-                         ['cpe' => $this->_resource->getTableName('catalog_product_entity')],
 
-                         $selectFields
 
-                     )
 
-                     ->joinInner(
 
-                         ['ap' => $this->_resource->getTableName($table)],
 
-                         'ap.' . $productEntityLinkField . ' = cpe.' . $productEntityLinkField,
 
-                         []
 
-                     )
 
-                     ->where('cpe.entity_id IN (?)', $listSku);
 
-                 if (isset($price[0]) && !empty($price[0])) {
 
-                     $select->where('ap.value >= ?', $price[0]);
 
-                 }
 
-                 if (isset($price[1]) && !empty($price[1])) {
 
-                     $select->where('ap.value <= ?', $price[1]);
 
-                 }
 
-                 if (isset($price[0]) && !empty($price[0]) || isset($price[1]) && !empty($price[1])) {
 
-                     $select->orWhere('ap.percentage_value IS NOT NULL');
 
-                 }
 
-                 if (isset($updatedAtFrom) && !empty($updatedAtFrom)) {
 
-                     $select->where('cpe.updated_at >= ?', $updatedAtFrom);
 
-                 }
 
-                 if (isset($updatedAtTo) && !empty($updatedAtTo)) {
 
-                     $select->where('cpe.updated_at <= ?', $updatedAtTo);
 
-                 }
 
-                 $exportData = $this->_connection->fetchAll($select);
 
-             } catch (\Exception $e) {
 
-                 return false;
 
-             }
 
-         }
 
-         return $exportData;
 
-     }
 
-     /**
 
-      * Get Website code.
 
-      *
 
-      * @param int $websiteId
 
-      * @return string
 
-      * @throws \Magento\Framework\Exception\LocalizedException
 
-      */
 
-     protected function _getWebsiteCode(int $websiteId): string
 
-     {
 
-         if (!array_key_exists($websiteId, $this->websiteCodesMap)) {
 
-             $storeName = ($websiteId == 0)
 
-                 ? ImportAdvancedPricing::VALUE_ALL_WEBSITES
 
-                 : $this->_storeManager->getWebsite($websiteId)->getCode();
 
-             $currencyCode = '';
 
-             if ($websiteId == 0) {
 
-                 $currencyCode = $this->_storeManager->getWebsite($websiteId)
 
-                     ->getBaseCurrencyCode();
 
-             }
 
-             if ($storeName && $currencyCode) {
 
-                 $code = $storeName.' ['.$currencyCode.']';
 
-             } else {
 
-                 $code = $storeName;
 
-             }
 
-             $this->websiteCodesMap[$websiteId] = $code;
 
-         }
 
-         return $this->websiteCodesMap[$websiteId];
 
-     }
 
-     /**
 
-      * Get Customer Group By Id.
 
-      *
 
-      * @param int $groupId
 
-      * @param int $allGroups
 
-      * @return string
 
-      * @throws \Magento\Framework\Exception\LocalizedException
 
-      * @throws \Magento\Framework\Exception\NoSuchEntityException
 
-      */
 
-     protected function _getCustomerGroupById(
 
-         int $groupId,
 
-         int $allGroups = 0
 
-     ): string {
 
-         if ($allGroups !== 0) {
 
-             return ImportAdvancedPricing::VALUE_ALL_GROUPS;
 
-         }
 
-         return $this->_groupRepository->getById($groupId)->getCode();
 
-     }
 
-     /**
 
-      * Get Entity type code
 
-      *
 
-      * @return string
 
-      */
 
-     public function getEntityTypeCode()
 
-     {
 
-         if (!$this->_entityTypeCode) {
 
-             $this->_entityTypeCode = CatalogProduct::ENTITY;
 
-         } else {
 
-             $this->_entityTypeCode = self::ENTITY_ADVANCED_PRICING;
 
-         }
 
-         return $this->_entityTypeCode;
 
-     }
 
- }
 
 
  |