$item['version'], 'config_setting' => $item['config'], 'configurations' => [] ]; } if ($item['type'] == 'product') { $version_configurations[$item['version']]['configurations'][] = $item; } if ($item['type'] == 'group') { $api_url = '/v2/products_attributes_items/item_status=1&list=catalog&group_id='.$item['assignment']; $attributes = ioApi($api_url,'',$clientsecret); $attributes = json_decode($attributes,true); // Add attributes to the group item $item['attributes'] = $attributes; $version_configurations[$item['version']]['configurations'][] = $item; } } } // Add all version configurations to the catalog $catalog[$product['rowID']]['versions'] = array_values($version_configurations); } } //------------------------------------------ // Lookup pricing (active pricelist and pricelistitems only) //------------------------------------------ $api_url = '/v2/pricelists/status=1&item_status=1&list=price'; $pricelist = ioApi($api_url,'',$clientsecret); $pricelist = json_decode($pricelist,true); foreach ($pricelist as $price) { // Add price to product level if (isset($catalog[$price['product_id']])) { $catalog[$price['product_id']]['price'] = $price['price']; $catalog[$price['product_id']]['rrp'] = $price['rrp']; $catalog[$price['product_id']]['price_modifier'] = $price['price_modifier']; } //Check for configuration (can also include products as above) foreach ($catalog as &$items) { if (!empty($items['versions'])) { foreach ($items['versions'] as &$version) { foreach ($version['configurations'] as &$config) { //UPDATE PRODUCT PRICES IN CONFIGURATION if ($config['type'] == 'product' && $config['assignment'] == $price['product_id']) { $config['price'] = $price['price']; $config['rrp'] = $price['rrp']; $config['price_modifier'] = $price['price_modifier']; } //UPDATE PRICES OF ATTRIBUTES IN GROUPS if ($config['type'] == 'group') { //check all attributes foreach($config['attributes'] as &$attribute) { if ($attribute['attribute_id'] == $price['product_id']) { $attribute['price'] = $price['price']; $attribute['rrp'] = $price['rrp']; $attribute['price_modifier'] = $price['price_modifier']; } } } } } } } } //------------------------------------------ //REMOVE KEYS FROM OUTPUT //------------------------------------------ $keys_to_remove = ['status','item_status','group_status','version','config','sn','build','softwareversion','healthindex','salesflag','configurable','updatedby','createdby','updated','created']; removeKeysRecursive($catalog,$keys_to_remove); //------------------------------------------ //Catalog processor to split versions as new product //------------------------------------------ $messages = processProductCollection($catalog); //------------------------------------------ //JSON_ENCODE //------------------------------------------ $messages = json_encode($messages, JSON_UNESCAPED_UNICODE); //------------------------------------------ //Send results //------------------------------------------ echo $messages; ?>