Update account search and export to combine the filters.
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 12 Jun 2018 18:43:54 +0000 (14:43 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 12 Jun 2018 18:43:54 +0000 (14:43 -0400)
If any filter is selected it is combined with OR. So you can get export
of pending and overdue.

models/admin/ajax/accountsListExport.php
models/admin/billing/accounts.php
views/admin/billing/accountSearchForm.html
views/admin/billing/exportBillingModal.html

index 7d71753..fa90508 100644 (file)
@@ -78,24 +78,25 @@ class GlmMembersAdmin_ajax_accountsListExport extends GlmDataAccounts
     public function modelAction ($actionData = false)
     {
 
-        $categories     = false;
-        $haveAccounts   = false;
-        $list           = false;
-        $success        = false;
-        $filterPending  = false;
-        $filterArchived = false;
-        $filterOverdue  = false;
-        $filterExpired  = false;
-        $haveFilter     = false;
-        $numbDisplayed  = false;
-        $lastDisplayed  = false;
-        $paging         = true;
-        $prevStart      = false;
-        $nextStart      = false;
-        $start          = 1;
-        $limit          = 20;        // Set to the number of listings per page
-        $namesList      = false;
-        $where_params   = array();
+        $categories      = false;
+        $haveAccounts    = false;
+        $list            = false;
+        $success         = false;
+        $filterPending   = false;
+        $filterArchived  = false;
+        $filterOverdue   = false;
+        $filterExpired   = false;
+        $haveFilter      = false;
+        $numbDisplayed   = false;
+        $lastDisplayed   = false;
+        $paging          = true;
+        $prevStart       = false;
+        $nextStart       = false;
+        $start           = 1;
+        $limit           = 20;        // Set to the number of listings per page
+        $namesList       = false;
+        $where_params    = array();
+        $sub_where_parts = array();
 
         // Check selected fields
         $select = array(
@@ -161,31 +162,36 @@ class GlmMembersAdmin_ajax_accountsListExport extends GlmDataAccounts
 
         if ( isset( $_REQUEST['filterActive'] ) ) {
             $filterActive = filter_var( $_REQUEST['filterActive'], FILTER_VALIDATE_BOOLEAN );
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  > '$curDate'";
+            $sub_where_parts[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  > '$curDate'";
             $filterActive = true;
         }
         if ( isset( $_REQUEST['filterPending'] ) ) {
             $filterPending = filter_var( $_REQUEST['filterPending'], FILTER_VALIDATE_BOOLEAN );
-            // $where_params[] = "renewal_date >= now()";
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  <= '$curDate'";
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+            $sub_where_parts[] = "(T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  <= '$curDate' AND " .
+            "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate')";
             $filterPending = true;
             $haveFilter    = true;
         }
         if ( isset( $_REQUEST['filterOverdue'] ) ) {
             $filterOverdue = filter_var( $_REQUEST['filterOverdue'], FILTER_VALIDATE_BOOLEAN );
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR < '$curDate'";
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+            $sub_where_parts[] = "(T.renewal_date + INTERVAL 1 YEAR < '$curDate' AND " .
+            "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate')";
         }
         if ( isset( $_REQUEST['filterExpired'] ) ) {
             $filterExpired = filter_var( $_REQUEST['filterExpired'], FILTER_VALIDATE_BOOLEAN );
-            $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY < '$curDate'";
+            $sub_where_parts[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY < '$curDate'";
+        }
+
+        if ( !empty( $sub_where_parts ) ) {
+            $where_params[] = "(" . implode( ' OR ', $sub_where_parts ) . ")";
         }
 
         // Build the $where string from the $where_parts array.
         // By implode with AND.
         $where = implode( ' AND ', $where_params );
 
+        // echo '<pre>$where: ' . print_r( $where, true ) . '</pre>';
+        // exit;
 
         // Get a current list of accounts without paging
         $orderBy = 'renewal_date ASC';
index dc431f2..9b53dc7 100644 (file)
@@ -296,6 +296,7 @@ class GlmMembersAdmin_billing_accounts extends GlmDataAccounts
             $allAccounts = $this->getSimpleAccountList();
 
             $where_params = array( 'true' );
+            $sub_where_parts = array();
 
             // Check for paging
             // if ( isset( $_REQUEST['pageSelect'] ) ) {
@@ -386,22 +387,32 @@ class GlmMembersAdmin_billing_accounts extends GlmDataAccounts
 
             if ( isset( $_REQUEST['filterActive'] ) ) {
                 $filterActive = filter_var( $_REQUEST['filterActive'], FILTER_VALIDATE_BOOLEAN );
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  > '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  > '$curDate'";
+                $sub_where_parts[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  > '$curDate'";
             }
             if ( isset( $_REQUEST['filterPending'] ) ) {
                 $filterPending = filter_var( $_REQUEST['filterPending'], FILTER_VALIDATE_BOOLEAN );
                 // $where_params[] = "T.renewal_date >= now()";
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  <= '$curDate'";
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  <= '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+                $sub_where_parts[] = "(T.renewal_date + INTERVAL 1 YEAR - INTERVAL $days_before_renewal DAY  <= '$curDate' AND " .
+                "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate')";
             }
             if ( isset( $_REQUEST['filterOverdue'] ) ) {
                 $filterOverdue = filter_var( $_REQUEST['filterOverdue'], FILTER_VALIDATE_BOOLEAN );
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR < '$curDate'";
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR < '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate'";
+                $sub_where_parts[] = "(T.renewal_date + INTERVAL 1 YEAR < '$curDate' AND " .
+                "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY >= '$curDate')";
             }
             if ( isset( $_REQUEST['filterExpired'] ) ) {
                 $filterExpired = filter_var( $_REQUEST['filterExpired'], FILTER_VALIDATE_BOOLEAN );
-                $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY < '$curDate'";
+                // $where_params[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY < '$curDate'";
+                $sub_where_parts[] = "T.renewal_date + INTERVAL 1 YEAR + INTERVAL $days_after_expired DAY < '$curDate'";
+            }
+
+            if ( !empty( $sub_where_parts ) ) {
+                $where_params[] = "(" . implode( ' OR ', $sub_where_parts ) . ")";
             }
 
 
index 471bbf6..48058c0 100644 (file)
@@ -95,10 +95,10 @@ jQuery(document).ready(function($) {
             </span>
         <br>
             <span class="glm-nowrap">
-                <input class="glm-filter" id="filterActive" name="filterActive" value="1" {if $filterActive}checked{/if} type="checkbox" /> Show Active Only
-                <input class="glm-filter" id="filterPending" name="filterPending" value="1" {if $filterPending}checked{/if} type="checkbox" /> Show Pending Only
-                <input class="glm-filter" id="filterOverdue" name="filterOverdue" value="1" {if $filterOverdue}checked{/if} type="checkbox" /> Show Overdue Only
-                <input class="glm-filter" id="filterExpired" name="filterExpired" value="1" {if $filterExpired}checked{/if} type="checkbox" /> Show Expired Only
+                <input class="glm-filter" id="filterActive" name="filterActive" value="1" {if $filterActive}checked{/if} type="checkbox" /> Show Active
+                <input class="glm-filter" id="filterPending" name="filterPending" value="1" {if $filterPending}checked{/if} type="checkbox" /> Show Pending
+                <input class="glm-filter" id="filterOverdue" name="filterOverdue" value="1" {if $filterOverdue}checked{/if} type="checkbox" /> Show Overdue
+                <input class="glm-filter" id="filterExpired" name="filterExpired" value="1" {if $filterExpired}checked{/if} type="checkbox" /> Show Expired
             </span>
         <br>
             <span class="glm-nowrap">
index e11a78e..56d77dc 100644 (file)
@@ -3,9 +3,9 @@
         <input type="hidden" name="action" value="glm_members_admin_ajax">
         <input type="hidden" name="glm_action" value="accountsListExport">
         <table class="glm-admin-table">
-            <tr><th>Show Active Only: </th><td><input type="checkbox" name="filterActive" {if $filterActive}checked{/if}></td></tr>
-            <tr><th>Show Pending Only: </th><td><input type="checkbox" name="filterPending" {if $filterPending}checked{/if}></td></tr>
-            <tr><th>Show Overdue Only: </th><td><input type="checkbox" name="filterOverdue" {if $filterOverdue}checked{/if}></td></tr>
+            <tr><th>Show Active: </th><td><input type="checkbox" name="filterActive" {if $filterActive}checked{/if}></td></tr>
+            <tr><th>Show Pending: </th><td><input type="checkbox" name="filterPending" {if $filterPending}checked{/if}></td></tr>
+            <tr><th>Show Overdue: </th><td><input type="checkbox" name="filterOverdue" {if $filterOverdue}checked{/if}></td></tr>
             <tr><th>Show Archived Only: </th><td><input type="checkbox" name="filterArchived" {if $filterArchived}checked{/if}></td></tr>
             <tr><th>Show Expired Only: </th><td><input type="checkbox" name="filterExpired" {if $filterExpired}checked{/if}></td></tr>
             <tr>