Finetuning software updates, general UI improvements
This commit is contained in:
@@ -155,7 +155,6 @@ if (isset($post_content['sn']) && (isset($post_content['payload']) || isset($pos
|
||||
|
||||
case 'customer': //update from Portal
|
||||
$historytype = 'Customer';
|
||||
$equipmentUpdate = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
<?php
|
||||
defined($security_key) or exit;
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
defined($security_key) or exit;
|
||||
//------------------------------------------
|
||||
// Payment Creation (for Software Upgrades)
|
||||
//------------------------------------------
|
||||
@@ -44,7 +41,8 @@ if (!$equipment) {
|
||||
}
|
||||
|
||||
$equipment_id = $equipment['rowID'];
|
||||
$current_sw_version = trim(strtolower(ltrim($equipment['sw_version'], '0')));
|
||||
// Normalize software version for comparison (lowercase, trim leading zeros) - same as software_update.php line 96
|
||||
$current_sw_version = strtolower(ltrim($equipment['sw_version'], '0'));
|
||||
$sw_version_license = $equipment['sw_version_license'] ?? null;
|
||||
$hw_version = $equipment['hw_version'] ?? '';
|
||||
|
||||
@@ -79,10 +77,13 @@ $path_count_result = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$has_upgrade_paths = ($path_count_result['path_count'] > 0);
|
||||
|
||||
if (!$has_upgrade_paths) {
|
||||
// No upgrade paths defined = FREE (lines 240-242 in software_update.php)
|
||||
// No upgrade paths defined = FREE (lines 328-331 in software_update.php)
|
||||
$final_price = '0.00';
|
||||
if (debug) {
|
||||
debuglog("DEBUG: No upgrade paths defined for version_id $version_id - upgrade is FREE");
|
||||
}
|
||||
} else {
|
||||
// Check for valid upgrade path FROM current version
|
||||
// Check for valid upgrade path FROM current version (same logic as software_update.php lines 335-353)
|
||||
$sql = 'SELECT pup.price, pup.currency
|
||||
FROM products_software_upgrade_paths pup
|
||||
JOIN products_software_versions from_ver ON pup.from_version_id = from_ver.rowID
|
||||
@@ -93,14 +94,28 @@ if (!$has_upgrade_paths) {
|
||||
$stmt->execute([$version_id, $current_sw_version]);
|
||||
$upgrade_path = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (debug) {
|
||||
debuglog("DEBUG: Looking for upgrade path TO version_id=$version_id FROM current_sw_version='$current_sw_version'");
|
||||
debuglog("DEBUG: Upgrade path result: " . json_encode($upgrade_path));
|
||||
}
|
||||
|
||||
if ($upgrade_path) {
|
||||
$final_price = $upgrade_path['price'] ?? '0.00';
|
||||
$final_currency = $upgrade_path['currency'] ?? 'EUR';
|
||||
if (debug) {
|
||||
debuglog("DEBUG: Found upgrade path - price: $final_price $final_currency");
|
||||
}
|
||||
} else {
|
||||
// No upgrade path FROM current version
|
||||
|
||||
if (debug) {
|
||||
debuglog("ERROR: No valid upgrade path from current version '$current_sw_version' to version_id $version_id");
|
||||
}
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'No valid upgrade path from current version'], JSON_UNESCAPED_UNICODE);
|
||||
echo json_encode([
|
||||
'error' => 'No valid upgrade path from current version',
|
||||
'current_version' => $current_sw_version,
|
||||
'target_version_id' => $version_id
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ $command = ($id == '')? 'insert' : 'update'; //IF rowID = empty then INSERT
|
||||
if (isset($post_content['delete'])){$command = 'delete';} //change command to delete
|
||||
|
||||
// Check for bulk creation
|
||||
$is_bulk = isset($post_content['bulk']) && $post_content['bulk'] === true;
|
||||
$is_bulk = isset($post_content['bulk']) && ($post_content['bulk'] === "true" || $post_content['bulk'] === true);
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
|
||||
@@ -37,12 +37,24 @@ $input_insert = '';
|
||||
if ($command == 'insert' && $is_bulk && isAllowed('products_software_licenses',$profile,$permission,'C') === 1){
|
||||
|
||||
$version_id = $post_content['version_id'] ?? '';
|
||||
$serials = $post_content['serials'] ?? [];
|
||||
$serials_input = $post_content['serials'] ?? '';
|
||||
|
||||
// Convert comma-separated string to array and trim whitespace
|
||||
if (is_string($serials_input)) {
|
||||
$serials = array_map('trim', explode(',', $serials_input));
|
||||
} elseif (is_array($serials_input)) {
|
||||
$serials = $serials_input;
|
||||
} else {
|
||||
$serials = [];
|
||||
}
|
||||
|
||||
$transaction_id = $post_content['transaction_id'] ?? '';
|
||||
$license_type = $post_content['license_type'] ?? 0;
|
||||
$status = $post_content['status'] ?? 0;
|
||||
$status = $post_content['status'] ?? 1;
|
||||
$starts_at = $post_content['starts_at'] ?? date('Y-m-d H:i:s');
|
||||
$expires_at = $post_content['expires_at'] ?? '2099-12-31 23:59:59'; // effectively permanent
|
||||
|
||||
if (empty($version_id) || empty($serials) || !is_array($serials)) {
|
||||
if (empty($version_id) || empty($serials)) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Invalid parameters for bulk creation']);
|
||||
exit;
|
||||
@@ -51,8 +63,8 @@ if ($command == 'insert' && $is_bulk && isAllowed('products_software_licenses',$
|
||||
$accounthierarchy = json_encode(array("salesid"=>$partner->salesid,"soldto"=>$partner->soldto), JSON_UNESCAPED_UNICODE);
|
||||
|
||||
// Prepare statement for bulk insert
|
||||
$sql = 'INSERT INTO products_software_licenses (version_id, license_key, license_type, status, transaction_id, accounthierarchy, created, createdby)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$sql = 'INSERT INTO products_software_licenses (version_id, license_key, license_type, status, starts_at, expires_at, transaction_id, accounthierarchy, created, createdby)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
$created_count = 0;
|
||||
@@ -60,13 +72,7 @@ if ($command == 'insert' && $is_bulk && isAllowed('products_software_licenses',$
|
||||
if (empty($serial)) continue;
|
||||
|
||||
// Generate UUID for license key
|
||||
$license_key = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
$license_key = generateUniqueLicenseKey();
|
||||
|
||||
try {
|
||||
$stmt->execute([
|
||||
@@ -74,6 +80,8 @@ if ($command == 'insert' && $is_bulk && isAllowed('products_software_licenses',$
|
||||
$license_key,
|
||||
$license_type,
|
||||
$status,
|
||||
$starts_at,
|
||||
$expires_at,
|
||||
$transaction_id,
|
||||
$accounthierarchy,
|
||||
$date,
|
||||
@@ -81,9 +89,9 @@ if ($command == 'insert' && $is_bulk && isAllowed('products_software_licenses',$
|
||||
]);
|
||||
|
||||
// Assign license to equipment if serial number exists
|
||||
$eq_sql = 'UPDATE equipment SET sw_version_license = ? WHERE serialnumber = ? AND accounthierarchy LIKE ?';
|
||||
$eq_sql = 'UPDATE equipment SET sw_version_license = ? WHERE serialnumber = ? ';
|
||||
$eq_stmt = $pdo->prepare($eq_sql);
|
||||
$eq_stmt->execute([$license_key, $serial, '%'.$partner->soldto.'%']);
|
||||
$eq_stmt->execute([$license_key, $serial]);
|
||||
|
||||
$created_count++;
|
||||
} catch (Exception $e) {
|
||||
@@ -104,17 +112,8 @@ if ($command == 'update'){
|
||||
$post_content['updatedby'] = $username;
|
||||
}
|
||||
elseif ($command == 'insert'){
|
||||
// Generate UUID for license key if not provided
|
||||
if (empty($post_content['license_key'])) {
|
||||
$post_content['license_key'] = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
|
||||
// Generate UUID for license key
|
||||
$post_content['license_key'] = generateUniqueLicenseKey();
|
||||
$post_content['created'] = $date;
|
||||
$post_content['createdby'] = $username;
|
||||
$post_content['accounthierarchy'] = json_encode(array("salesid"=>$partner->salesid,"soldto"=>$partner->soldto), JSON_UNESCAPED_UNICODE);
|
||||
|
||||
Reference in New Issue
Block a user