[freeside-commits] branch FREESIDE_3_BRANCH updated. 326bd8efd1a7ec6b4d2624f9c8e25811404ed6db

Ivan ivan at 420.am
Tue Jun 30 23:23:04 PDT 2015


The branch, FREESIDE_3_BRANCH has been updated
       via  326bd8efd1a7ec6b4d2624f9c8e25811404ed6db (commit)
       via  b11528f0cbcc3c7fc6412ce0c83940382e14952a (commit)
       via  b7e43528c43bc22a9a7725c1073c3aadb126290c (commit)
      from  32888fd335b717020552f56523d1f3131c66d804 (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 326bd8efd1a7ec6b4d2624f9c8e25811404ed6db
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue Jun 30 23:21:31 2015 -0700

    add monthly (and other) recurring to billing info, RT#36813

diff --git a/httemplate/view/cust_main/billing.html b/httemplate/view/cust_main/billing.html
index 78d51d0..01e7654 100644
--- a/httemplate/view/cust_main/billing.html
+++ b/httemplate/view/cust_main/billing.html
@@ -23,6 +23,69 @@
   <TD BGCOLOR="#ffffff"><B><% $balance %></B></TD>
 </TR>
 
+% #54: just an arbitrary number i pulled out of my goober.  in reality we'd want
+% # to consider e.g. a histogram of num_ncancelled_packages for the entire
+% # customer base, and compare it to a graph of the overhead for generating this
+% # information.  (and optimize it better, we could get it more from SQL)
+% if ( $cust_main->num_ncancelled_pkgs < 54 ) {
+%   my $sth = dbh->prepare("
+%     SELECT DISTINCT freq FROM cust_pkg LEFT JOIN part_pkg USING (pkgpart)
+%       WHERE freq IS NOT NULL AND freq != '0'
+%         AND ( cancel IS NULL OR cancel = 0 )
+%         AND custnum = ?
+%   ") or die $DBI::errstr;
+% 
+%   $sth->execute($cust_main->custnum) or die $sth->errstr;
+
+%   #not really a numeric sort because freqs can actually be all sorts of things
+%   # but good enough for the 99% cases of ordering monthly quarterly annually
+%   my @freqs = sort { $a <=> $b } map { $_->[0] } @{ $sth->fetchall_arrayref };
+% 
+%   foreach my $freq (@freqs) {
+%     my @cust_pkg = qsearch({
+%       'table'     => 'cust_pkg',
+%       'addl_from' => 'LEFT JOIN part_pkg USING (pkgpart)',
+%       'hashref'   => { 'custnum' => $cust_main->custnum, },
+%       'extra_sql' => 'AND ( cancel IS NULL OR cancel = 0 )
+%                       AND freq = '. dbh->quote($freq),
+%     }) or next;
+% 
+%     my $freq_pretty = $cust_pkg[0]->part_pkg->freq_pretty;
+%
+%     my $amount = 0;
+%     foreach my $cust_pkg (@cust_pkg) {
+%       my $part_pkg = $cust_pkg->part_pkg;
+%       next if $cust_pkg->susp
+%            && ! $cust_pkg->option('suspend_bill')
+%            && ( ! $part_pkg->option('suspend_bill')
+%                 || $cust_pkg->option('no_suspend_bill')
+%               );
+%
+%       #add recurring amounts for this package and its billing add-ons
+%       foreach my $l_part_pkg ( $part_pkg->self_and_bill_linked ) {
+%         $amount += $l_part_pkg->option('recur_fee');
+%       }
+%
+%       #subtract amounts for any active discounts
+%       #(there should only be one at the moment, otherwise this makes no sense)
+%       foreach my $cust_pkg_discount ( $cust_pkg->cust_pkg_discount_active ) {
+%         my $discount = $cust_pkg_discount->discount;
+%         #and only one of these for each
+%         $amount -= $discount->amount;
+%         $amount -= $amount * $discount->percent/100;
+%       }
+%
+%     }
+   
+      <TR>
+        <TH ALIGN="right"><% emt( ucfirst($freq_pretty). ' recurring' ) %></TH>
+        <TD><% $money_char. sprintf('%.2f', $amount) %></TD>
+        </TD>
+      </TR>
+%   }
+
+% }
+
 % if ( $conf->exists('cust_main-select-prorate_day') ) {
 <TR>
   <TD ALIGN="right"><% mt('Prorate day of month') |h %></TD>

commit b11528f0cbcc3c7fc6412ce0c83940382e14952a
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon Jun 29 20:32:59 2015 -0700

    silence unnecessary but too-scary warning about CGI::param in list context

diff --git a/FS/FS/Mason/Request.pm b/FS/FS/Mason/Request.pm
index 66c69f6..022ff8e 100644
--- a/FS/FS/Mason/Request.pm
+++ b/FS/FS/Mason/Request.pm
@@ -110,6 +110,10 @@ sub freeside_setup {
     FS::Trace->log('    UTF-8-decoding form data');
     #
     foreach my $param ( $cgi->param ) {
+        
+      #we can't switch to multi_param until we're done supporting deb 7
+      local($CGI::LIST_CONTEXT_WARN) = 0;
+
       my @values = $cgi->param($param);
       next if $cgi->uploadInfo($values[0]);
       #warn $param;

commit b7e43528c43bc22a9a7725c1073c3aadb126290c
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon Jun 29 18:59:37 2015 -0700

    xss

diff --git a/httemplate/browse/cust_attachment.html b/httemplate/browse/cust_attachment.html
index 9d62e56..f81ec1b 100755
--- a/httemplate/browse/cust_attachment.html
+++ b/httemplate/browse/cust_attachment.html
@@ -101,7 +101,7 @@ my $orderby = $cgi->param('orderby') || 'custnum';
 
 my $sub_cust = sub {
   my $c = qsearchs('cust_main', { custnum => shift->custnum } );
-  return $c ? $c->name : '<FONT COLOR="red"><B>(not found)</B></FONT>';
+  return $c ? encode_entities($c->name) : '<FONT COLOR="red"><B>(not found)</B></FONT>';
 };
 
 my $sub_date = sub {

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

Summary of changes:
 FS/FS/Mason/Request.pm                 |    4 ++
 httemplate/browse/cust_attachment.html |    2 +-
 httemplate/view/cust_main/billing.html |   63 ++++++++++++++++++++++++++++++++
 3 files changed, 68 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list