From b986f04a0c7401d38e917e9e27eb7b63a7f3cb85 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 28 Jan 2024 00:00:28 -0500 Subject: [PATCH] Add More Configurable variabled for Stripe including such as Flat Rate and Percent Fees, expense vendor and expense category update guest stripe pay to take advantage of these vars and updated settings --- database_updates.php | 18 +++++++-- database_version.php | 2 +- db.sql | 8 +++- get_settings.php | 8 +++- guest_pay_invoice_stripe.php | 14 +++---- post/setting.php | 23 +++-------- settings_online_payment.php | 74 ++++++++++++++++++++++++++++++++++-- 7 files changed, 112 insertions(+), 35 deletions(-) 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"> +
+
+ +
+
+ +
+ +
+
- +
+ +
+
+ +
+ +
+
+ +