diff --git a/database_updates.php b/database_updates.php index 9bf550a7..a822b609 100644 --- a/database_updates.php +++ b/database_updates.php @@ -1498,12 +1498,12 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { } - //if (CURRENT_DATABASE_VERSION == '0.9.4') { + if (CURRENT_DATABASE_VERSION == '0.9.4') { // Insert queries here required to update to DB version 0.9.5 - + mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_stripe_client_pays_fees` TINYINT(1) NOT NULL DEFAULT 0 AFTER `config_stripe_account`"); // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.9.5'"); - //} + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.9.5'"); + } } else { // Up-to-date } diff --git a/database_version.php b/database_version.php index 102f8005..e8349860 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", "0.9.4"); +DEFINE("LATEST_DATABASE_VERSION", "0.9.5"); diff --git a/db.sql b/db.sql index a0da4305..e135890a 100644 --- a/db.sql +++ b/db.sql @@ -1267,6 +1267,7 @@ CREATE TABLE `settings` ( `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_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, `config_module_enable_itdoc` tinyint(1) NOT NULL DEFAULT 1, diff --git a/guest_ajax.php b/guest_ajax.php index 5eb12b39..47418c55 100644 --- a/guest_ajax.php +++ b/guest_ajax.php @@ -57,6 +57,17 @@ if (isset($_GET['stripe_create_pi'])) { $amount_paid = floatval($row['amount_paid']); $balance_to_pay = $invoice_amount - $amount_paid; + // Check config to see if client pays fees is enabled + $row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT config_stripe_client_pays_fees FROM settings WHERE company_id = 1")); + if ($row['config_client_pays_fees'] == 1) { + // Get fees from config + $row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT config_stripe_percentage_fee, config_stripe_flat_fee FROM settings WHERE company_id = 1")); + $percentageFee = floatval($row['config_stripe_percentage_fee']); + $flatFee = floatval($row['config_stripe_flat_fee']); + // Calculate the amount to charge the client + $balance_to_pay = ($balance_to_pay + $flatFee) / (1 - $percentageFee); + } + if (intval($balance_to_pay) == 0) { exit("No balance outstanding"); } diff --git a/post/setting.php b/post/setting.php index bba3113a..3df54650 100644 --- a/post/setting.php +++ b/post/setting.php @@ -1098,3 +1098,19 @@ 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 8e20148e..1dc55733 100644 --- a/settings_online_payment.php +++ b/settings_online_payment.php @@ -2,6 +2,8 @@ require_once "inc_all_settings.php"; +// Get Stripe Setting for config client pays + ?> @@ -61,10 +63,15 @@ require_once "inc_all_settings.php"; } ?> - - +
+ +
+ value="1" id="clientPaysFeesSwitch"> + +
+