diff --git a/index.php b/index.php
index a41ceab..33afa5d 100644
--- a/index.php
+++ b/index.php
@@ -82,6 +82,37 @@ if ($page === 'activate') {
$error = $res['error'];
}
}
+
+ if (isset($_POST['update_license'])) {
+ $id = (int)$_POST['id'];
+ $status = $_POST['status'] ?? null;
+ $owner = $_POST['owner'] ?? null;
+ $address = $_POST['address'] ?? null;
+
+ $updateData = [];
+ if ($status !== null) $updateData['status'] = $status;
+ if ($owner !== null) $updateData['owner'] = $owner;
+ if ($address !== null) $updateData['address'] = $address;
+
+ $res = LicenseService::updateLicense($id, $updateData);
+ if ($res['success']) {
+ $message = "License updated successfully!";
+ } else {
+ $message = "Error: " . ($res['error'] ?? 'Unknown error');
+ }
+ }
+
+ if (isset($_POST['issue_license'])) {
+ $max = (int)($_POST['max_activations'] ?? 1);
+ $owner = $_POST['owner'] ?? null;
+ $address = $_POST['address'] ?? null;
+ $res = LicenseService::issueLicense($max, 'FLAT', $owner, $address);
+ if ($res['success']) {
+ $message = "New License Issued: " . $res['license_key'];
+ } else {
+ $message = "Error: " . ($res['error'] ?? 'Unknown error');
+ }
+ }
?>
@@ -1856,9 +1887,18 @@ if (isset($_POST['add_hr_department'])) {
if (isset($_POST['add_cash_register'])) {
$name = $_POST['name'] ?? '';
if ($name) {
- $stmt = db()->prepare("INSERT INTO cash_registers (name) VALUES (?)");
- $stmt->execute([$name]);
- $message = "Cash Register added successfully!";
+ // Check license limit
+ $allowed = LicenseService::getAllowedActivations();
+ $stmt = db()->query("SELECT COUNT(*) FROM cash_registers");
+ $current_count = (int)$stmt->fetchColumn();
+
+ if ($current_count >= $allowed) {
+ $message = "Error: Activation Limit Reached. Your license only allows $allowed register(s).";
+ } else {
+ $stmt = db()->prepare("INSERT INTO cash_registers (name) VALUES (?)");
+ $stmt->execute([$name]);
+ $message = "Cash Register added successfully!";
+ }
}
}
if (isset($_POST['edit_cash_register'])) {
@@ -1969,6 +2009,7 @@ $page_permissions = [
'logs' => 'logs_view',
'cash_registers' => 'cash_registers_view',
'register_sessions' => 'register_sessions_view',
+ 'licenses' => 'licenses_view',
];
if (isset($page_permissions[$page]) && !can($page_permissions[$page])) {
@@ -2060,13 +2101,12 @@ $permission_groups = [
'users' => 'Users',
'cash_registers' => 'Cash Registers',
'register_sessions' => 'Register Sessions',
- 'scale_devices' => 'Scale Devices',
- 'customer_display_settings' => 'Customer Display',
- 'backups' => 'Backups',
+ 'licenses' => 'Licenses',
'logs' => 'System Logs'
]
];
+
if ($page === 'export') {
$type = $_GET['type'] ?? 'sales';
$filename = $type . "_export_" . date('Y-m-d') . ".csv";
@@ -2742,6 +2782,11 @@ switch ($page) {
$data['cash_registers'] = db()->query("SELECT * FROM cash_registers WHERE status = 'active'")->fetchAll();
$data['users'] = db()->query("SELECT id, username FROM users ORDER BY username ASC")->fetchAll();
break;
+ case 'licenses':
+ $res = LicenseService::listLicenses();
+ $data['licenses'] = $res['success'] ? $res['data'] : [];
+ $data['license_error'] = $res['success'] ? '' : ($res['error'] ?? 'Failed to fetch licenses.');
+ break;
default:
$data['customers'] = db()->query("SELECT * FROM customers ORDER BY id DESC LIMIT 5")->fetchAll();
$data['stats'] = [
@@ -3074,6 +3119,9 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
= __('backups') ?>
+
+ = $lang === 'ar' ? 'إدارة التراخيص' : 'Manage Licenses' ?>
+
@@ -8139,6 +8187,17 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
Cash Registers Management
Define your shop counters and registers.
+
+
+
+
+ License Limit: = $current_regs ?> / = $allowed_acts ?>
+ Registers
+
+