141 lines
5.1 KiB
PHP
141 lines
5.1 KiB
PHP
<?php
|
|
defined($security_key) or exit;
|
|
|
|
//------------------------------------------
|
|
// Catalog
|
|
//------------------------------------------
|
|
|
|
//------------------------------------------
|
|
//Create Catalog
|
|
//------------------------------------------
|
|
$catalog = []; // Main catalog array
|
|
|
|
//------------------------------------------
|
|
//GET ACTIVE AND SALES RELATED PRODUCTS
|
|
//------------------------------------------
|
|
|
|
$filter = (isset($get_content) && $get_content !='') ? '&'.$get_content : '';
|
|
|
|
//GET PRODUCTS
|
|
$api_url = '/v2/products/salesflag=1&status=1'.$filter;
|
|
$products = ioApi($api_url,'',$clientsecret);
|
|
$products = json_decode($products,true);
|
|
|
|
foreach ($products as $product) {
|
|
|
|
//------------------------------------------
|
|
// Create product entry in catalog if it doesn't exist
|
|
//------------------------------------------
|
|
if (!isset($catalog[$product['rowID']])) {
|
|
$catalog[$product['rowID']] = $product;
|
|
$catalog[$product['rowID']]['versions'] = []; // Changed to versions array
|
|
}
|
|
|
|
//------------------------------------------
|
|
//Check for configurations and add to product
|
|
//------------------------------------------
|
|
if (isset($product['configurable']) && $product['configurable'] == 1){
|
|
|
|
//GET ACTIVE CONFIGURATIONS ITEMS BASED ON ACTIVE VERSIONS
|
|
$api_url = '/v2/products_configurations/status=1&version_status=1&productrowid='.$product['rowID'] ;
|
|
$product_config = ioApi($api_url,'',$clientsecret);
|
|
$product_config = json_decode($product_config,true);
|
|
|
|
//------------------------------------------
|
|
// Group configurations by version
|
|
//------------------------------------------
|
|
$version_configurations = [];
|
|
|
|
foreach ($product_config as $item) {
|
|
if ($item['productrowid'] == $product['rowID']) {
|
|
// Initialize version array if it doesn't exist
|
|
if (!isset($version_configurations[$item['version']])) {
|
|
$version_configurations[$item['version']] = [
|
|
'version_id' => $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);
|
|
|
|
//------------------------------------------
|
|
//JSON_ENCODE
|
|
//------------------------------------------
|
|
$messages = json_encode($catalog, JSON_UNESCAPED_UNICODE);
|
|
|
|
//------------------------------------------
|
|
//Send results
|
|
//------------------------------------------
|
|
echo $messages;
|
|
|
|
?>
|