[freeside-commits] branch master updated. 24c164b829dce551badd130dba51b011342676f2

Jonathan Prykop jonathan at 420.am
Wed Sep 7 19:36:53 PDT 2016


The branch, master has been updated
       via  24c164b829dce551badd130dba51b011342676f2 (commit)
      from  4fd97fe8a23cbe875600b838f01a9ed10641f61e (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 24c164b829dce551badd130dba51b011342676f2
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Wed Sep 7 21:36:07 2016 -0500

    RT#72157: Monthly recurring field is missing

diff --git a/httemplate/misc/xmlhttp-cust_main-display_recurring.html b/httemplate/misc/xmlhttp-cust_main-display_recurring.html
new file mode 100644
index 0000000..dd9ed3b
--- /dev/null
+++ b/httemplate/misc/xmlhttp-cust_main-display_recurring.html
@@ -0,0 +1,29 @@
+<% encode_json($return) %>\
+<%init>
+
+my %arg = $cgi->param('arg');
+my $custnum = delete($arg{'custnum'});
+
+my $error;
+my $return;
+
+$error = "No customer specified" unless $custnum =~ /^\d+$/;
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+$error = "access denied"
+  unless $error or $curuser->access_right('View customer');
+
+my $cust_main;
+$cust_main = qsearchs( {
+  'table'     => 'cust_main',
+  'hashref'   => { 'custnum' => $custnum },
+  'extra_sql' => ' AND '. $curuser->agentnums_sql,
+}) unless $error;
+$error = "Customer not found!" unless $error or $cust_main;
+
+$return = $error
+        ? { 'error' => $error }
+        : { 'display_recurring' => [ $cust_main->display_recurring ] };
+
+</%init>
diff --git a/httemplate/view/cust_main/billing.html b/httemplate/view/cust_main/billing.html
index 894b2df..a94b5c1 100644
--- a/httemplate/view/cust_main/billing.html
+++ b/httemplate/view/cust_main/billing.html
@@ -21,18 +21,51 @@
   <TD><B><% $balance %></B></TD>
 </TR>
 
-% #54: just an arbitrary number i pulled out of my goober.  ideally we'd like
-% # 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 ) {
-%   foreach my $freq_info ($cust_main->display_recurring) {
-      <TR>
-        <TH ALIGN="right"><% emt( ucfirst($freq_info->{'freq_pretty'}). ' recurring' ) %></TH>
-        <TD><% $money_char. sprintf('%.2f', $freq_info->{'amount'}) %></TD>
-      </TR>
-%   }
-% }
+<TR ID="recurring_row">
+  <TH ID="recurring_label" ALIGN="right"><% emt( 'Recurring' ) %></TH>
+  <TD ID="recurring_value"><IMG SRC="<% $fsurl %>images/wait-orange.gif"></TD>
+</TR>
+
+<& '/elements/xmlhttp.html',
+     'url'  => $fsurl.'misc/xmlhttp-cust_main-display_recurring.html',
+     'subs' => [ 'get_display_recurring'] &>
+
+<SCRIPT>
+<&| /elements/onload.js &>
+get_display_recurring('custnum',<% $cust_main->custnum %>, function (xmlresult) {
+  var recurring = JSON.parse(xmlresult);
+  var rlabel = document.getElementById('recurring_label');
+  var rvalue = document.getElementById('recurring_value');
+  var rrow   = document.getElementById('recurring_row');
+  if (recurring['error']) {
+    rvalue.innerHTML = '<SPAN STYLE="color: red">Error</SPAN>';
+    console.log('display_recurring error: ' + recurring['error']);
+  } else if (recurring['display_recurring'].length) {
+    for (var ri = 0; ri < recurring['display_recurring'].length; ri++) {
+      var robj = recurring['display_recurring'][ri];
+      var freq_pretty = robj['freq_pretty'].charAt(0).toUpperCase()+robj['freq_pretty'].slice(1)+' recurring';
+      var amount = '<% $money_char %>'+parseFloat(robj['amount']).toFixed(2);
+      if (ri + 1 < recurring['display_recurring'].length) {
+        var rr = document.createElement('TR');
+        var rl = document.createElement('TH');
+        rl.style.textAlign = 'right';
+        rl.innerHTML = freq_pretty;
+        rr.appendChild(rl);
+        var rv = document.createElement('TD');
+        rv.innerHTML = amount;
+        rr.appendChild(rv);
+        rrow.parentNode.insertBefore(rr,rrow);
+      } else {
+        rlabel.innerHTML = freq_pretty;
+        rvalue.innerHTML = amount;
+      }
+    }
+  } else {
+    rrow.parentNode.removeChild(rrow);
+  }
+});
+</&>
+</SCRIPT>
 
 % if ( $conf->exists('cust_main-select-prorate_day') ) {
 <TR>

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

Summary of changes:
 .../misc/xmlhttp-cust_main-display_recurring.html  |   29 ++++++++++
 httemplate/view/cust_main/billing.html             |   57 +++++++++++++++-----
 2 files changed, 74 insertions(+), 12 deletions(-)
 create mode 100644 httemplate/misc/xmlhttp-cust_main-display_recurring.html




More information about the freeside-commits mailing list