/** * Get variations data for curl * * @param ConfigurableProduct $fixture * @return array */ protected function _getVariationMatrix(ConfigurableProduct $fixture) { $config = $fixture->getDataConfig(); $variationData = $fixture->getData('fields/variations-matrix/value'); $curlData = []; $variationNumber = 0; foreach ($config['options'] as $attributeId => $options) { foreach ($options['id'] as $option) { foreach ($variationData[$variationNumber]['value'] as $fieldName => $fieldData) { if ($fieldName == 'qty') { $curlData[$option]['quantity_and_stock_status'][$fieldName] = $fieldData['value']; } else { $curlData[$option][$fieldName] = $fieldData['value']; } } if (!isset($curlData[$option]['weight']) && $fixture->getData('fields/weight/value')) { $curlData[$option]['weight'] = $fixture->getData('fields/weight/value'); } $curlData[$option]['configurable_attribute'] = '{"' . $config['attributes'][$attributeId]['code'] . '":"' . $option . '"}'; ++$variationNumber; } } return $curlData; }