feat: Add software licenses management page and update payment handling

- Introduced a new licenses management page with functionality to create, update, and view software licenses.
- Updated payment return handling in softwaretool.php to check payment status from the database and display appropriate modals for success, pending, and failure states.
- Enhanced webhook_mollie.php to log webhook calls, handle payment status updates directly in the database, and generate invoices based on payment status.
- Improved CSS styles for better alignment of buttons and modal components.
- Added JavaScript for modal interactions and bulk license creation functionality.
This commit is contained in:
“VeLiTi”
2025-12-24 14:07:28 +01:00
parent 0f968aac14
commit 543f0b3cac
21 changed files with 1400 additions and 238 deletions

View File

@@ -49,6 +49,9 @@ if(isset($get_content) && $get_content!=''){
elseif ($v[0] == 'equipmentid') {
//build up search
$clause .= ' AND e.rowID = :'.$v[0];
//UPDATE VERSION STATUS
$sw_version_latest_update = 1;
}
elseif ($v[0] == 'servicedate') {
//build up service coverage
@@ -69,6 +72,7 @@ if(isset($get_content) && $get_content!=''){
elseif ($v[0] == 'h_equipmentid') {
//build up search
$clause .= ' AND h.equipmentid = :'.$v[0];
}
elseif ($v[0] == 'status') {
//Update status based on status

View File

@@ -1,6 +1,8 @@
<?php
defined($security_key) or exit;
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
//------------------------------------------
// Products Software Licenses
//------------------------------------------
@@ -12,7 +14,7 @@ $pdo = dbConnect($dbname);
if (empty($partner->soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';}
//default whereclause
list($whereclause,$condition) = getWhereclauselvl2("software_licenses",$permission,$partner,'get');
list($whereclause,$condition) = getWhereclauselvl2("products_software_licenses",$permission,$partner,'get');
//NEW ARRAY
$criterias = [];
@@ -52,12 +54,20 @@ if(isset($criterias['totals']) && $criterias['totals'] ==''){
$sql = 'SELECT count(*) as count FROM products_software_licenses '.$whereclause.'';
}
elseif (isset($criterias['list']) && $criterias['list'] =='') {
//SQL for list
$sql = 'SELECT l.*, u.username, v.name as version_name FROM products_software_licenses l LEFT JOIN users u ON l.user_id = u.id LEFT JOIN products_software_versions v ON l.version_id = v.rowID '.$whereclause.' ORDER BY l.created DESC';
//SQL for list
$sql = 'SELECT l.*, v.name as version_name, v.version, e.serialnumber as assigned_serial
FROM products_software_licenses l
LEFT JOIN products_software_versions v ON l.version_id = v.rowID
LEFT JOIN equipment e ON l.license_key = e.sw_version_license
'.$whereclause.' ORDER BY l.created DESC';
}
else {
//SQL for paged
$sql = 'SELECT l.*, u.username, v.name as version_name FROM products_software_licenses l LEFT JOIN users u ON l.user_id = u.id LEFT JOIN products_software_versions v ON l.version_id = v.rowID '.$whereclause.' ORDER BY l.created DESC LIMIT :page,:num_licenses';
//SQL for paged
$sql = 'SELECT l.*, v.name as version_name, v.version, e.serialnumber as assigned_serial
FROM products_software_licenses l
LEFT JOIN products_software_versions v ON l.version_id = v.rowID
LEFT JOIN equipment e ON l.license_key = e.sw_version_license
'.$whereclause.' ORDER BY l.created DESC LIMIT :page,:num_licenses';
}
$stmt = $pdo->prepare($sql);

View File

@@ -245,16 +245,16 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){
//Check if there's a valid license for this upgrade
if ($final_price > 0 && $sw_version_license) {
//Check if the license is valid
$sql = 'SELECT status, start_at, expires_at
$sql = 'SELECT status, starts_at, expires_at
FROM products_software_licenses
WHERE license_key = ? AND equipment_id = ?';
WHERE license_key = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute([$sw_version_license, $equipment_rowid]);
$stmt->execute([$sw_version_license]);
$license = $stmt->fetch(PDO::FETCH_ASSOC);
if ($license && $license['status'] == 1) {
$now = date('Y-m-d H:i:s');
$start_at = $license['start_at'];
$start_at = $license['starts_at'];
$expires_at = $license['expires_at'];
//Check if license is within valid date range

View File

@@ -281,16 +281,16 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){
$license_applied = false;
if ($final_price > 0 && $sw_version_license) {
//Check if the license is valid
$sql = 'SELECT status, start_at, expires_at
$sql = 'SELECT status, starts_at, expires_at
FROM products_software_licenses
WHERE license_key = ? AND equipment_id = ?';
WHERE license_key = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute([$sw_version_license, $equipment_rowid]);
$stmt->execute([$sw_version_license]);
$license = $stmt->fetch(PDO::FETCH_ASSOC);
if ($license && $license['status'] == 1) {
$now = date('Y-m-d H:i:s');
$start_at = $license['start_at'];
$start_at = $license['starts_at'];
$expires_at = $license['expires_at'];
//Check if license is within valid date range