From 3b0677ed5b69e38c2530fc4ed5cee2cb06577c29 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 19 Feb 2019 11:46:55 -0500 Subject: [PATCH] Add now setting for billing Adding setting for member types that need billing accounts. These members with this type will show in the billing reports under no accounts if they do not have a billing account setup for the member. --- classes/data/dataSettings.php | 7 +++ index.php | 2 +- models/admin/billing/reports.php | 21 +++++-- models/admin/settings/billing.php | 24 ++++++++ ...0.0.32.sql => create_database_V0.0.33.sql} | 5 +- setup/databaseScripts/dbVersions.php | 1 + .../update_database_V0.0.33.sql | 9 +++ views/admin/settings/billing.html | 55 ++++++++++--------- 8 files changed, 90 insertions(+), 34 deletions(-) rename setup/databaseScripts/{create_database_V0.0.32.sql => create_database_V0.0.33.sql} (98%) create mode 100644 setup/databaseScripts/update_database_V0.0.33.sql diff --git a/classes/data/dataSettings.php b/classes/data/dataSettings.php index 8ff272f..050faad 100644 --- a/classes/data/dataSettings.php +++ b/classes/data/dataSettings.php @@ -314,6 +314,13 @@ class GlmDataBillingSettings extends GlmDataAbstract 'use' => 'a', ), + // Renewal Month + 'member_types_requiring_billing' => array( + 'field' => 'member_types_requiring_billing', + 'type' => 'text', + 'use' => 'a', + ), + ); } diff --git a/index.php b/index.php index 8a39a7c..d32023c 100644 --- a/index.php +++ b/index.php @@ -38,7 +38,7 @@ * version from this plugin. */ define('GLM_MEMBERS_BILLING_PLUGIN_VERSION', '1.0.23'); -define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.32'); +define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.33'); // This is the minimum version of the GLM Members DB plugin require for this plugin. define('GLM_MEMBERS_BILLING_PLUGIN_MIN_MEMBERS_REQUIRED_VERSION', '2.8.0'); diff --git a/models/admin/billing/reports.php b/models/admin/billing/reports.php index 661d43b..2a7d255 100644 --- a/models/admin/billing/reports.php +++ b/models/admin/billing/reports.php @@ -272,17 +272,28 @@ class GlmMembersAdmin_billing_reports extends GlmDataTransactions $this->notes = false; break; case 'noAccounts': + $member_types_requiring_billing = false; + $query_params = array(); + if ( isset( $this->config['settings']['member_types_requiring_billing'] ) && $this->config['settings']['member_types_requiring_billing'] ) { + $member_types_requiring_billing = unserialize( $this->config['settings']['member_types_requiring_billing'] ); + } + if ( $member_types_requiring_billing ) { + $query_params[] = " member_type IN ( " . implode( ',', $member_types_requiring_billing ) . " )"; + } + + $query_params[] = " access != " . $this->config['status_numb']['Archived']; + + $where = ''; + if ( !empty( $query_params ) ) { + $where = ' AND ' . implode( ' AND ', $query_params ); + } $sql = " SELECT id as ref_dest, name as member_name,'' as account_number,'' as payment_type, 'N/A' as balance_due FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members WHERE id NOT IN ( SELECT DISTINCT ref_dest FROM " . GLM_MEMBERS_BILLING_PLUGIN_DB_PREFIX . "accounts) - AND member_type IN ( - SELECT id - FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_type - WHERE name IN ('full', 'enhanced') - ) + $where ORDER BY name"; // echo '
$sql: ' . print_r( $sql, true ) . '
'; $accounts = $this->wpdb->get_results( $sql, ARRAY_A ); diff --git a/models/admin/settings/billing.php b/models/admin/settings/billing.php index d73feef..c14fc42 100644 --- a/models/admin/settings/billing.php +++ b/models/admin/settings/billing.php @@ -146,6 +146,12 @@ class GlmMembersAdmin_settings_billing extends GlmDataBillingSettings // Update the settings and redisplay the form case 'submit': + $_REQUEST['member_types_requiring_billing'] = ''; + // Combine the member types needing billing + if ( isset( $_REQUEST['member_types_requiring_billing_option'] ) ) { + $_REQUEST['member_types_requiring_billing'] = serialize( $_REQUEST['member_types_requiring_billing_option'] ); + } + // Update the billing settings settings $billing_settings = $this->updateEntry(1); if ($billing_settings['status']) { @@ -171,6 +177,20 @@ class GlmMembersAdmin_settings_billing extends GlmDataBillingSettings } + // Get list of member types + require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberTypes.php'; + $memberTypeData = new GlmDataMemberTypes( $this->wpdb, $this->config ); + $memberTypes = $memberTypeData->getList(); + + // Get the entry for member_types_requiring_billing + // Setup for the edit form + $member_types_requring_billing_selected = $billing_settings['fieldData']['member_types_requiring_billing']; + if ( $member_types_requring_billing_selected ) { + $member_types_requring_billing_selected = unserialize( $member_types_requring_billing_selected ); + } else { + $member_types_requring_billing_selected = array(); + } + // Compile template data $template_data = array( 'action' => $_REQUEST['glm_action'], @@ -179,6 +199,10 @@ class GlmMembersAdmin_settings_billing extends GlmDataBillingSettings 'settingsUpdated' => $settings_updated, 'settingsUpdateError' => $settings_update_error, 'billingSettings' => $billing_settings, + 'renewal_month_opts' => range( 0, 12, 1 ), + 'renewal_day_opts' => range( 0, 31, 1 ), + 'member_types' => $memberTypes, + 'selectedMTRB' => $member_types_requring_billing_selected, ); // Return status, suggested view, and data to controller diff --git a/setup/databaseScripts/create_database_V0.0.32.sql b/setup/databaseScripts/create_database_V0.0.33.sql similarity index 98% rename from setup/databaseScripts/create_database_V0.0.32.sql rename to setup/databaseScripts/create_database_V0.0.33.sql index 2012bb6..d045a3f 100644 --- a/setup/databaseScripts/create_database_V0.0.32.sql +++ b/setup/databaseScripts/create_database_V0.0.33.sql @@ -1,6 +1,6 @@ -- Gaslight Media Billing Module --- File Created: 11/19/2018 --- Database Version: 0.0.27 +-- File Created: 02/19/2019 +-- Database Version: 0.0.33 -- Database Creation Script -- -- To permit each query below to be executed separately, @@ -263,6 +263,7 @@ CREATE TABLE {prefix}settings ( billing_county_enabled BOOLEAN DEFAULT '0', -- Billing uses county field invoice_pdf_enabled BOOLEAN DEFAULT '0', -- Create PDF invoices billing_contact_name_enabled BOOLEAN DEFAULT '0', -- Use billing_contact_name instead of fname lname + member_types_requiring_billing TEXT NULL, -- List of member type id's that require billing PRIMARY KEY (id) ); diff --git a/setup/databaseScripts/dbVersions.php b/setup/databaseScripts/dbVersions.php index 6d5a9c0..ea5f30a 100644 --- a/setup/databaseScripts/dbVersions.php +++ b/setup/databaseScripts/dbVersions.php @@ -46,5 +46,6 @@ $glmMembersBillingDbVersions = array( '0.0.30' => array('version' => '0.0.30', 'tables' => 15, 'date' => '12/04/2018'), '0.0.31' => array('version' => '0.0.31', 'tables' => 15, 'date' => '12/17/2018'), '0.0.32' => array('version' => '0.0.32', 'tables' => 15, 'date' => '12/26/2018'), + '0.0.33' => array('version' => '0.0.33', 'tables' => 15, 'date' => '02/19/2019'), ); diff --git a/setup/databaseScripts/update_database_V0.0.33.sql b/setup/databaseScripts/update_database_V0.0.33.sql new file mode 100644 index 0000000..26a4cd3 --- /dev/null +++ b/setup/databaseScripts/update_database_V0.0.33.sql @@ -0,0 +1,9 @@ +-- Gaslight Media Billing Database +-- File Created: 12/04/2018 +-- Database Version: 0.0.30 +-- +-- To permit each query below to be executed separately, +-- all queries must be separated by a line with four dashes + +-- Update the accounts table +ALTER TABLE {prefix}settings ADD member_types_requiring_billing TEXT NULL; -- List of member type id's that require billing diff --git a/views/admin/settings/billing.html b/views/admin/settings/billing.html index d741876..f0f8f41 100644 --- a/views/admin/settings/billing.html +++ b/views/admin/settings/billing.html @@ -238,40 +238,43 @@ - - Renewal Day of Month
- Must be a number + + Renewal Date Each Year - - - {if $billingSettings.fieldFail.renewal_day}

{$billingSettings.fieldFail.renewal_day}

{/if}
+ +
+ Month + + {if $billingSettings.fieldFail.renewal_month}

{$billingSettings.fieldFail.renewal_month}

{/if} +
+
+ Day + + {if $billingSettings.fieldFail.renewal_day}

{$billingSettings.fieldFail.renewal_day}

{/if} +
- - - Renewal Month of Year
- Must be a number + + Member Types that require Billing Account - - - {if $billingSettings.fieldFail.renewal_month}

{$billingSettings.fieldFail.renewal_month}

{/if}
+ + - Days Before Renewal Date
-- 2.17.1