[freeside-commits] branch FREESIDE_3_BRANCH updated. 39bd5b53c899df1f543ef85dac206cdc135e9f3f

Mark Wells mark at 420.am
Fri Dec 6 14:42:06 PST 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  39bd5b53c899df1f543ef85dac206cdc135e9f3f (commit)
      from  721542615319024c253affa3d7f177b7ca7e53cc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 39bd5b53c899df1f543ef85dac206cdc135e9f3f
Author: Mark Wells <mark at freeside.biz>
Date:   Fri Dec 6 14:41:35 2013 -0800

    advanced customer report: search by package class, #25531

diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm
index b143861..b52b359 100644
--- a/FS/FS/cust_main/Search.pm
+++ b/FS/FS/cust_main/Search.pm
@@ -949,6 +949,31 @@ sub search {
     }
   }
 
+  # pkg_classnum
+  if ( $params->{'pkg_classnum'} ) {
+    my @pkg_classnums = ref( $params->{'pkg_classnum'} ) ?
+                          @{ $params->{'pkg_classnum'} } :
+                             $params->{'pkg_classnum'};
+    @pkg_classnums = grep /^(\d+)$/, @pkg_classnums;
+
+    if ( @pkg_classnums ) {
+
+      my @pkg_where;
+      if ( $params->{'all_pkg_classnums'} ) {
+        push @pkg_where, "part_pkg.classnum = $_" foreach @pkg_classnums;
+      } else {
+        push @pkg_where,
+          'part_pkg.classnum IN('. join(',', @pkg_classnums).')';
+      }
+      foreach (@pkg_where) {
+        push @where, "EXISTS(".
+          "SELECT 1 FROM cust_pkg JOIN part_pkg USING (pkgpart) WHERE ".
+          "cust_pkg.custnum = cust_main.custnum AND ".
+          $_ . ' AND ' . FS::cust_pkg->active_sql .
+        ')';
+      }
+    }
+  }
 
   ##
   # setup queries, subs, etc. for the search
diff --git a/httemplate/search/cust_main.html b/httemplate/search/cust_main.html
index 66a3a98..b97a4ef 100755
--- a/httemplate/search/cust_main.html
+++ b/httemplate/search/cust_main.html
@@ -47,6 +47,7 @@ my @scalars = qw (
   cancelled_pkgs
   cust_fields flattened_pkgs
   all_tags
+  all_pkg_classnums
 );
 
 for my $param ( @scalars ) {
@@ -55,7 +56,7 @@ for my $param ( @scalars ) {
 }
 
 #lists
-for my $param (qw( classnum refnum payby tagnum )) {
+for my $param (qw( classnum refnum payby tagnum pkg_classnum )) {
   $search_hash{$param} = [ $cgi->param($param) ];
 }
 
diff --git a/httemplate/search/report_cust_main.html b/httemplate/search/report_cust_main.html
index 1ceb48e..4309fbb 100755
--- a/httemplate/search/report_cust_main.html
+++ b/httemplate/search/report_cust_main.html
@@ -119,6 +119,23 @@
         </TD>
       </TR>
 
+      <TR>
+        <TD ALIGN="right">With package of class</TD>
+        <TD>
+            <& /elements/select-pkg_class.html,
+                          'field'       => 'pkg_classnum',
+                          'multiple'    => 1,
+            &>
+          <DIV STYLE="display:inline-block; vertical-align:baseline">
+            <INPUT TYPE="radio" NAME="all_pkg_classnums" VALUE="0" CHECKED>
+              Any of these
+            <BR>
+            <INPUT TYPE="radio" NAME="all_pkg_classnums" VALUE="1">
+              All of these
+          </DIV>
+        </TD>
+      </TR>
+
     <& /elements/tr-select-payby.html,
                   'payby_type'   => 'cust',
                   'multiple'     => 1,

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_main/Search.pm               |   25 +++++++++++++++++++++++++
 httemplate/search/cust_main.html        |    3 ++-
 httemplate/search/report_cust_main.html |   17 +++++++++++++++++
 3 files changed, 44 insertions(+), 1 deletions(-)




More information about the freeside-commits mailing list