[freeside-commits] branch master updated. d256989a19dd100823d35a11929edb1ae07d9883

Ivan ivan at 420.am
Fri Mar 4 11:35:51 PST 2016


The branch, master has been updated
       via  d256989a19dd100823d35a11929edb1ae07d9883 (commit)
      from  9000d0d9daea14055bda2c28b3a33c5742930460 (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 d256989a19dd100823d35a11929edb1ae07d9883
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Fri Mar 4 11:35:51 2016 -0800

    optimize package list on order new package, RT#39822

diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 3adbc06..45bdc62 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -2332,6 +2332,26 @@ sub _pkgs_sql {
 
 }
 
+=item join_options_sql
+
+Returns an SQL fragment for JOINing the part_pkg_option records for this
+package's setup_fee and recur_fee (as setup_option and recur_option,
+respectively).  Useful for optimization.
+
+=cut
+
+sub join_options_sql {
+  #my $class = shift;
+  "
+    LEFT JOIN part_pkg_option AS setup_option
+      ON (     part_pkg.pkgpart = setup_option.pkgpart
+           AND setup_option.optionname = 'setup_fee' )
+    LEFT JOIN part_pkg_option AS recur_option
+      ON (     part_pkg.pkgpart = recur_option.pkgpart
+           AND recur_option.optionname = 'recur_fee' )
+  ";
+}
+
 =back
 
 =head1 SUBROUTINES
diff --git a/httemplate/elements/select-part_pkg.html b/httemplate/elements/select-part_pkg.html
index fb45c0e..e5692a7 100644
--- a/httemplate/elements/select-part_pkg.html
+++ b/httemplate/elements/select-part_pkg.html
@@ -155,6 +155,11 @@ if ( exists($opt{'classnum'}) && defined($opt{'classnum'}) ) {
 die 'Use of toggle_disabled with classnum has not been implemented'
   if exists $hash{'classnum'};
 
+$opt{'select'} = 'part_pkg.*, setup_option.optionvalue AS _setup_fee,
+                              recur_option.optionvalue AS _recur_fee'
+  unless $opt{'select'};
+$opt{'addl_from'} .= FS::part_pkg->join_options_sql;
+
 $opt{'extra_sql'} .= ( keys(%hash) ? ' AND ' : ' WHERE ' ).
                      FS::part_pkg->curuser_pkgs_sql;
 
diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html
index 4b6ddb4..d7ec015 100644
--- a/httemplate/elements/select-table.html
+++ b/httemplate/elements/select-table.html
@@ -182,6 +182,7 @@ if ( $opt{'records'} ) {
     unless $opt{'presorted'};
 } else {
   @records = qsearch( {
+    'select'    => $opt{'select'} || '*',
     'table'     => $opt{'table'},
     'addl_from' => $opt{'addl_from'},
     'hashref'   => $hashref,
diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi
index dc9ba2a..8a46c1d 100644
--- a/httemplate/misc/cust-part_pkg.cgi
+++ b/httemplate/misc/cust-part_pkg.cgi
@@ -23,7 +23,10 @@ if ( $classnum > 0 ) {
 } #else -1, all classes, so don't set classnum
 
 my @part_pkg = qsearch({
+  'select'    => 'part_pkg.*, setup_option.optionvalue AS _setup_fee,
+                              recur_option.optionvalue AS _recur_fee',
   'table'     => 'part_pkg',
+  'addl_from' => FS::part_pkg->join_options_sql,
   'hashref'   => \%hash,
   'extra_sql' =>
     ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql( 'null'=>1 ).

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

Summary of changes:
 FS/FS/part_pkg.pm                        |   20 ++++++++++++++++++++
 httemplate/elements/select-part_pkg.html |    5 +++++
 httemplate/elements/select-table.html    |    1 +
 httemplate/misc/cust-part_pkg.cgi        |    3 +++
 4 files changed, 29 insertions(+)




More information about the freeside-commits mailing list