diff --git a/database_updates.php b/database_updates.php index cabf8b15..7d6107ca 100644 --- a/database_updates.php +++ b/database_updates.php @@ -1559,14 +1559,26 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.0.2'"); } + if (CURRENT_DATABASE_VERSION == '1.0.2') { + //Insert queries here required to update to DB version 1.0.3 + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_stripe_expense_vendor` INT(11) NOT NULL DEFAULT 0 AFTER `config_stripe_account`"); + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_stripe_expense_category` INT(11) NOT NULL DEFAULT 0 AFTER `config_stripe_expense_vendor`"); + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_stripe_percentage_fee` DECIMAL(4,4) NOT NULL DEFAULT 0.029 AFTER `config_stripe_expense_category`"); + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_stripe_flat_fee` DECIMAL(15,2) NOT NULL DEFAULT 0.30 AFTER `config_stripe_percentage_fee`"); + mysqli_query($mysqli, "ALTER TABLE `settings` CHANGE `config_stripe_account` `config_stripe_account` INT(11) NOT NULL DEFAULT 0"); + + //Then, update the database to the next sequential version + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.0.3'"); + } + // Be sure to change database_version.php to reflect the version you are updating to here // Please add this same comment block to the bottom of this file, and update the version number. // Uncomment Below Lines, to add additional database updates // - // if (CURRENT_DATABASE_VERSION == '1.0.2') { - // // Insert queries here required to update to DB version 1.0.3 + // if (CURRENT_DATABASE_VERSION == '1.0.3') { + // // Insert queries here required to update to DB version 1.0.4 // // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.0.3'"); + // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.0.4'"); // } } else { diff --git a/database_version.php b/database_version.php index c3d5aa31..6ede6e49 100644 --- a/database_version.php +++ b/database_version.php @@ -5,5 +5,5 @@ * It is used in conjunction with database_updates.php */ -DEFINE("LATEST_DATABASE_VERSION", "1.0.2"); +DEFINE("LATEST_DATABASE_VERSION", "1.0.3"); diff --git a/db.sql b/db.sql index 15d7a5f5..81e80bb1 100644 --- a/db.sql +++ b/db.sql @@ -1270,7 +1270,11 @@ CREATE TABLE `settings` ( `config_stripe_enable` tinyint(1) NOT NULL DEFAULT 0, `config_stripe_publishable` varchar(255) DEFAULT NULL, `config_stripe_secret` varchar(255) DEFAULT NULL, - `config_stripe_account` tinyint(1) NOT NULL DEFAULT 0, + `config_stripe_account` int(11) NOT NULL DEFAULT 0, + `config_stripe_expense_vendor` int(11) NOT NULL DEFAULT 0, + `config_stripe_expense_category` int(11) NOT NULL DEFAULT 0, + `config_stripe_percentage_fee` decimal(4,4) NOT NULL DEFAULT 0.0290, + `config_stripe_flat_fee` decimal(15,2) NOT NULL DEFAULT 0.30, `config_stripe_client_pays_fees` tinyint(1) NOT NULL DEFAULT 0, `config_azure_client_id` varchar(200) DEFAULT NULL, `config_azure_client_secret` varchar(200) DEFAULT NULL, @@ -1756,4 +1760,4 @@ CREATE TABLE `vendors` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2024-01-15 13:07:46 +-- Dump completed on 2024-01-27 23:58:10 diff --git a/get_settings.php b/get_settings.php index 2a8cdeaa..51e098f1 100644 --- a/get_settings.php +++ b/get_settings.php @@ -79,11 +79,15 @@ $config_enable_alert_domain_expire = intval($row['config_enable_alert_domain_exp $config_send_invoice_reminders = intval($row['config_send_invoice_reminders']); $config_invoice_overdue_reminders = intval($row['config_invoice_overdue_reminders']); -// Online Payment +// Online Stripe Payment $config_stripe_enable = intval($row['config_stripe_enable']); $config_stripe_publishable = $row['config_stripe_publishable']; $config_stripe_secret = $row['config_stripe_secret']; -$config_stripe_account = $row['config_stripe_account']; +$config_stripe_account = intval($row['config_stripe_account']); +$config_stripe_expense_vendor = intval($row['config_stripe_expense_vendor']); +$config_stripe_expense_category = intval($row['config_stripe_expense_category']); +$config_stripe_percentage_fee = floatval($row['config_stripe_percentage_fee']); +$config_stripe_flat_fee = floatval($row['config_stripe_flat_fee']); $config_stripe_client_pays_fees = intval($row['config_stripe_client_pays_fees']); // Modules diff --git a/guest_pay_invoice_stripe.php b/guest_pay_invoice_stripe.php index 7793dd02..1bac7e49 100644 --- a/guest_pay_invoice_stripe.php +++ b/guest_pay_invoice_stripe.php @@ -15,11 +15,15 @@ function log_to_console($message) DEFINE("WORDING_PAYMENT_FAILED", "

There was an error verifying your payment. Please contact us for more information.

"); // Setup Stripe -$stripe_vars = mysqli_fetch_array(mysqli_query($mysqli, "SELECT config_stripe_enable, config_stripe_publishable, config_stripe_secret, config_stripe_account, config_stripe_client_pays_fees FROM settings WHERE company_id = 1")); +$stripe_vars = mysqli_fetch_array(mysqli_query($mysqli, "SELECT config_stripe_enable, config_stripe_publishable, config_stripe_secret, config_stripe_account, config_stripe_expense_vendor, config_stripe_expense_category, config_stripe_percentage_fee, config_stripe_flat_fee, config_stripe_client_pays_fees FROM settings WHERE company_id = 1")); $config_stripe_enable = intval($stripe_vars['config_stripe_enable']); $config_stripe_publishable = nullable_htmlentities($stripe_vars['config_stripe_publishable']); $config_stripe_secret = nullable_htmlentities($stripe_vars['config_stripe_secret']); $config_stripe_account = intval($stripe_vars['config_stripe_account']); +$config_stripe_expense_vendor = intval($row['config_stripe_expense_vendor']); +$config_stripe_expense_category = intval($row['config_stripe_expense_category']); +$config_stripe_percentage_fee = floatval($row['config_stripe_percentage_fee']); +$config_stripe_flat_fee = floatval($row['config_stripe_flat_fee']); $config_stripe_client_pays_fees = intval($stripe_vars['config_stripe_client_pays_fees']); // Check Stripe is configured @@ -85,10 +89,8 @@ if (isset($_GET['invoice_id'], $_GET['url_key']) && !isset($_GET['payment_intent // Check config to see if client pays fees is enabled if ($config_stripe_client_pays_fees == 1) { $balance_before_fees = $balance_to_pay; - $percentage_fee = 0.029; - $flat_fee = 0.30; // Calculate the amount to charge the client - $balance_to_pay = ($balance_to_pay + $flat_fee) / (1 - $percentage_fee); + $balance_to_pay = ($balance_to_pay + $config_stripe_flat_fee) / (1 - $config_stripe_percentage_fee); // Calculate the fee amount $gateway_fee = round($balance_to_pay - $balance_before_fees, 2); @@ -279,10 +281,8 @@ if (isset($_GET['invoice_id'], $_GET['url_key']) && !isset($_GET['payment_intent // Check config to see if client pays fees is enabled if ($config_stripe_client_pays_fees == 1) { - $percentage_fee = 0.029; - $flat_fee = 0.30; // Calculate the amount to charge the client - $balance_to_pay = ($balance_to_pay + $flat_fee) / (1 - $percentage_fee); + $balance_to_pay = ($balance_to_pay + $config_stripe_flat_fee) / (1 - $config_stripe_percentage_fee); } // Round balance to pay to 2 decimal places diff --git a/post/setting.php b/post/setting.php index 62ec9514..631b8af2 100644 --- a/post/setting.php +++ b/post/setting.php @@ -373,8 +373,13 @@ if (isset($_POST['edit_online_payment_settings'])) { $config_stripe_publishable = sanitizeInput($_POST['config_stripe_publishable']); $config_stripe_secret = sanitizeInput($_POST['config_stripe_secret']); $config_stripe_account = intval($_POST['config_stripe_account']); + $config_stripe_expense_vendor = intval($_POST['config_stripe_expense_vendor']); + $config_stripe_expense_category = intval($_POST['config_stripe_expense_category']); + $config_stripe_percentage_fee = floatval($_POST['config_stripe_percentage_fee']); + $config_stripe_flat_fee = floatval($_POST['config_stripe_flat_fee']); + $config_stripe_client_pays_fees = intval($_POST['config_stripe_client_pays_fees']); - mysqli_query($mysqli,"UPDATE settings SET config_stripe_enable = $config_stripe_enable, config_stripe_publishable = '$config_stripe_publishable', config_stripe_secret = '$config_stripe_secret', config_stripe_account = $config_stripe_account WHERE company_id = 1"); + mysqli_query($mysqli,"UPDATE settings SET config_stripe_enable = $config_stripe_enable, config_stripe_publishable = '$config_stripe_publishable', config_stripe_secret = '$config_stripe_secret', config_stripe_account = $config_stripe_account, config_stripe_expense_vendor = $config_stripe_expense_vendor, config_stripe_expense_category = $config_stripe_expense_category, config_stripe_percentage_fee = $config_stripe_percentage_fee, config_stripe_flat_fee = $config_stripe_flat_fee, config_stripe_client_pays_fees = $config_stripe_client_pays_fees WHERE company_id = 1"); //Logging mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Settings', log_action = 'Modify', log_description = '$session_name modified online payment settings', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id"); @@ -889,19 +894,3 @@ if (isset($_GET['update_db'])) { header("Location: " . $_SERVER["HTTP_REFERER"]); } - -if (isset($_POST['config_stripe_client_pays_fees'])) { - - validateAdminRole(); - - $config_stripe_client_pays_fees = intval($_POST['config_stripe_client_pays_fees']); - - mysqli_query($mysqli,"UPDATE settings SET config_stripe_client_pays_fees = $config_stripe_client_pays_fees WHERE company_id = 1"); - - //Logging - mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Settings', log_action = 'Modify', log_description = '$session_name modified stripe client pays fees', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id"); - - $_SESSION['alert_message'] = "Stripe client pays fees updated"; - - header("Location: " . $_SERVER["HTTP_REFERER"]); -} diff --git a/settings_online_payment.php b/settings_online_payment.php index 2c301713..fe674b39 100644 --- a/settings_online_payment.php +++ b/settings_online_payment.php @@ -21,7 +21,8 @@ require_once "inc_all_settings.php"; - +
"> +
@@ -44,7 +45,7 @@ require_once "inc_all_settings.php";
- +
@@ -65,15 +66,82 @@ require_once "inc_all_settings.php";
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
value="1" id="clientPaysFeesSwitch"> +
+
+ +
+
+ +
+ +
+
- +
+ +
+
+ +
+ +
+
+ +