/** * Prepare data for bundle product. * * @param BundleProduct $product * @return array * * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ protected function prepareBundleData(BundleProduct $product) { $result = []; $checkoutData = $product->getCheckoutData(); $bundleOptions = isset($checkoutData['options']['bundle_options']) ? $checkoutData['options']['bundle_options'] : []; $bundleSelections = $product->getBundleSelections(); $bundleSelectionsData = []; $result['qty'] = $checkoutData['qty']; foreach ($bundleSelections['bundle_options'] as $option) { foreach ($option['assigned_products'] as $productData) { $productName = $productData['search_data']['name']; $bundleSelectionsData[$productName] = ['selection_id' => $productData['selection_id'], 'option_id' => $productData['option_id']]; } } foreach ($bundleOptions as $option) { $productName = $option['value']['name']; foreach ($bundleSelectionsData as $fullProductName => $value) { if (null !== strpos($fullProductName, $productName)) { $productName = $fullProductName; } } if (isset($bundleSelectionsData[$productName])) { $optionId = $bundleSelectionsData[$productName]['option_id']; $selectionId = $bundleSelectionsData[$productName]['selection_id']; $result['bundle_option'][$optionId] = $selectionId; } } return $result; }
/** * Prepare bundle product options. * * @param BundleProduct $product * @return array */ protected function prepareBundleOptions(BundleProduct $product) { $options = []; foreach ($product->getCheckoutData()['options']['bundle_options'] as $checkoutOption) { foreach ($product->getBundleSelections()['bundle_options'] as $productOption) { if (strpos($productOption['title'], $checkoutOption['title']) !== false) { $option = []; foreach ($productOption['assigned_products'] as $productData) { if (strpos($productData['search_data']['name'], $checkoutOption['value']['name']) !== false) { $qty = isset($checkoutOption['qty']) ? $checkoutOption['qty'] : $productData['data']['selection_qty']; $option['option_id'] = $productData['option_id']; $option['option_selections'][] = $productData['selection_id']; $option['option_qty'] = $qty; } } $options[] = $option; } } } return ['extension_attributes' => ['bundle_options' => $options]]; }