diff --git a/database_updates.php b/database_updates.php
index f09e7a63..55970285 100644
--- a/database_updates.php
+++ b/database_updates.php
@@ -3705,10 +3705,54 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.2.2'");
}
- // if (CURRENT_DATABASE_VERSION == '2.2.2') {
- // // Insert queries here required to update to DB version 2.2.3
+ if (CURRENT_DATABASE_VERSION == '2.2.2') {
+ mysqli_query($mysqli, "CREATE TABLE `payment_methods` (
+ `payment_method_id` INT(11) NOT NULL AUTO_INCREMENT,
+ `payment_method_name` VARCHAR(200) NOT NULL,
+ `payment_method_description` VARCHAR(250) DEFAULT NULL,
+ `payment_method_provider_id` INT(1) DEFAULT 0,
+ `payment_method_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `payment_method_updated_at` DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`payment_method_id`)
+ )");
+
+ mysqli_query($mysqli, "CREATE TABLE `payment_providers` (
+ `payment_provider_id` INT(11) NOT NULL AUTO_INCREMENT,
+ `payment_provider_name` VARCHAR(200) NOT NULL,
+ `payment_provider_description` VARCHAR(250) DEFAULT NULL,
+ `payment_provider_public_key` VARCHAR(250) DEFAULT NULL,
+ `payment_provider_private_key` VARCHAR(250) DEFAULT NULL,
+ `payment_provider_threshold` DECIMAL(15,2) DEFAULT NULL,
+ `payment_provider_active` TINYINT(1) NOT NULL DEFAULT 1,
+ `payment_provider_account` INT(11) NOT NULL,
+ `payment_provider_expense_vendor` INT(11) NOT NULL DEFAULT 0,
+ `payment_provider_expense_category` INT(11) NOT NULL DEFAULT 0,
+ `payment_provider_expense_percentage_fee` DECIMAL(4,4) DEFAULT NULL,
+ `payment_provider_expense_flat_fee` DECIMAL(15,2) DEFAULT NULL,
+ `payment_provider_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `payment_provider_updated_at` DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`payment_provider_id`)
+ )");
+
+ mysqli_query($mysqli, "CREATE TABLE `cient_saved_payment_methods` (
+ `saved_payment_id` INT(11) NOT NULL AUTO_INCREMENT,
+ `saved_payment_provider_client` VARCHAR(200) NOT NULL,
+ `saved_payment_provider_method` VARCHAR(200) NOT NULL,
+ `saved_payment_details` VARCHAR(200) DEFAULT NULL,
+ `saved_payment_client_id` INT(11) NOT NULL,
+ `saved_payment_provider_id` INT(11) NOT NULL,
+ `saved_payment_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `saved_payment_updated_at` DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`saved_payment_id`)
+ )");
+
+ mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.2.3'");
+ }
+
+ // if (CURRENT_DATABASE_VERSION == '2.2.3') {
+ // // Insert queries here required to update to DB version 2.2.4
// // Then, update the database to the next sequential version
- // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.2.3'");
+ // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '2.2.4'");
// }
} else {
diff --git a/db.sql b/db.sql
index d73df616..a226a229 100644
--- a/db.sql
+++ b/db.sql
@@ -486,6 +486,26 @@ CREATE TABLE `certificates` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `cient_saved_payment_methods`
+--
+
+DROP TABLE IF EXISTS `cient_saved_payment_methods`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8mb4 */;
+CREATE TABLE `cient_saved_payment_methods` (
+ `saved_payment_id` int(11) NOT NULL AUTO_INCREMENT,
+ `saved_payment_provider_client` varchar(200) NOT NULL,
+ `saved_payment_provider_method` varchar(200) NOT NULL,
+ `saved_payment_details` varchar(200) DEFAULT NULL,
+ `saved_payment_client_id` int(11) NOT NULL,
+ `saved_payment_provider_id` int(11) NOT NULL,
+ `saved_payment_created_at` datetime NOT NULL DEFAULT current_timestamp(),
+ `saved_payment_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
+ PRIMARY KEY (`saved_payment_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `client_notes`
--
@@ -1300,6 +1320,50 @@ CREATE TABLE `notifications` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `payment_methods`
+--
+
+DROP TABLE IF EXISTS `payment_methods`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8mb4 */;
+CREATE TABLE `payment_methods` (
+ `payment_method_id` int(11) NOT NULL AUTO_INCREMENT,
+ `payment_method_name` varchar(200) NOT NULL,
+ `payment_method_description` varchar(250) DEFAULT NULL,
+ `payment_method_provider_id` int(1) DEFAULT 0,
+ `payment_method_created_at` datetime NOT NULL DEFAULT current_timestamp(),
+ `payment_method_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
+ PRIMARY KEY (`payment_method_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `payment_providers`
+--
+
+DROP TABLE IF EXISTS `payment_providers`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8mb4 */;
+CREATE TABLE `payment_providers` (
+ `payment_provider_id` int(11) NOT NULL AUTO_INCREMENT,
+ `payment_provider_name` varchar(200) NOT NULL,
+ `payment_provider_description` varchar(250) DEFAULT NULL,
+ `payment_provider_public_key` varchar(250) DEFAULT NULL,
+ `payment_provider_private_key` varchar(250) DEFAULT NULL,
+ `payment_provider_threshold` decimal(15,2) DEFAULT NULL,
+ `payment_provider_active` tinyint(1) NOT NULL DEFAULT 1,
+ `payment_provider_account` int(11) NOT NULL,
+ `payment_provider_expense_vendor` int(11) NOT NULL DEFAULT 0,
+ `payment_provider_expense_category` int(11) NOT NULL DEFAULT 0,
+ `payment_provider_expense_percentage_fee` decimal(4,4) DEFAULT NULL,
+ `payment_provider_expense_flat_fee` decimal(15,2) DEFAULT NULL,
+ `payment_provider_created_at` datetime NOT NULL DEFAULT current_timestamp(),
+ `payment_provider_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
+ PRIMARY KEY (`payment_provider_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `payments`
--
@@ -2628,4 +2692,4 @@ CREATE TABLE `vendors` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2025-07-04 15:39:35
+-- Dump completed on 2025-07-04 16:50:41
diff --git a/includes/database_version.php b/includes/database_version.php
index 023e9a12..e9eef2e5 100644
--- a/includes/database_version.php
+++ b/includes/database_version.php
@@ -5,4 +5,4 @@
* It is used in conjunction with database_updates.php
*/
-DEFINE("LATEST_DATABASE_VERSION", "2.2.2");
+DEFINE("LATEST_DATABASE_VERSION", "2.2.3");
diff --git a/modals/admin_ai_add_ai_model_modal.php b/modals/admin_ai_add_ai_model_modal.php
new file mode 100644
index 00000000..ea8b8e9a
--- /dev/null
+++ b/modals/admin_ai_add_ai_model_modal.php
@@ -0,0 +1,58 @@
+