/** * Prepare configurable data for export * * @param \Magento\Catalog\Model\Resource\Product\Collection $collection * @param int $productIds * @return void */ public function prepareData($collection, $productIds) { $collection->addAttributeToFilter('entity_id', ['in' => $productIds])->addAttributeToFilter('type_id', ['eq' => \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE]); while ($product = $collection->fetchItem()) { $productAttributesOptions = $product->getTypeInstance()->getConfigurableOptions($product); foreach ($productAttributesOptions as $productAttributeOption) { $this->configurableData[$product->getId()] = []; $variations = []; $variationsPrices = []; $variationsLabels = []; foreach ($productAttributeOption as $optValues) { $variations[$optValues['sku']][] = $optValues['attribute_code'] . '=' . $optValues['option_title']; $priceType = $optValues['pricing_is_percent'] ? 'percent' : 'fixed'; $variationsPrices[] = 'name=' . $optValues['attribute_code'] . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR . 'value=' . $optValues['option_title'] . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR . 'price=' . $optValues['pricing_value'] . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR . 'price_type=' . $priceType; if (!empty($optValues['super_attribute_label'])) { $variationsLabels[$optValues['attribute_code']] = $optValues['attribute_code'] . '=' . $optValues['super_attribute_label']; } } foreach ($variations as $sku => $values) { $variations[$sku] = 'sku=' . $sku . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR . implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $values); } $variations = implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $variations); $variationsPrices = array_unique($variationsPrices); $variationsPrices = implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $variationsPrices); $variationsLabels = implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $variationsLabels); $this->configurableData[$product->getId()] = ['configurable_variations' => $variations, 'configurable_variation_prices' => $variationsPrices, 'configurable_variation_labels' => $variationsLabels]; } } }
/** * Prepare configurable data for export * * @param \Magento\Catalog\Model\Resource\Product\Collection $collection * @param int $productIds * @return void */ public function prepareData($collection, $productIds) { $collection->addAttributeToFilter('entity_id', array('in' => $productIds))->addAttributeToFilter('type_id', array('eq' => \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE)); while ($product = $collection->fetchItem()) { $productAttributesOptions = $product->getTypeInstance()->getConfigurableOptions($product); foreach ($productAttributesOptions as $productAttributeOption) { $this->configurableData[$product->getId()] = array(); foreach ($productAttributeOption as $optionValues) { $priceType = $optionValues['pricing_is_percent'] ? '%' : ''; $this->configurableData[$product->getId()][] = array('_super_products_sku' => $optionValues['sku'], '_super_attribute_code' => $optionValues['attribute_code'], '_super_attribute_option' => $optionValues['option_title'], '_super_attribute_price_corr' => $optionValues['pricing_value'] . $priceType); } } } }