Files
assetmgt/api/v2/get/catalog.php
2025-01-30 09:28:50 +01:00

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;
?>