[freeside-commits] branch FREESIDE_3_BRANCH updated. bf1cbb7037423fe6bec6229858cbe4279b6f5866

Mark Wells mark at 420.am
Mon Dec 8 14:35:34 PST 2014


The branch, FREESIDE_3_BRANCH has been updated
       via  bf1cbb7037423fe6bec6229858cbe4279b6f5866 (commit)
       via  c6cf1d919265a487593143131ab70a5651161ac9 (commit)
      from  baf5cfb99275c060748ec1c212e646759af6e96b (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 bf1cbb7037423fe6bec6229858cbe4279b6f5866
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 8 14:34:24 2014 -0800

    trivial fix to discount report

diff --git a/httemplate/graph/cust_bill_pkg_discount.html b/httemplate/graph/cust_bill_pkg_discount.html
index 0d66799..5074aa3 100644
--- a/httemplate/graph/cust_bill_pkg_discount.html
+++ b/httemplate/graph/cust_bill_pkg_discount.html
@@ -74,7 +74,7 @@ foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) {
                       #'average_per_cust_pkg' => $average_per_cust_pkg,
                     ];
 
-      push @links, "$link?agentnum=$row_agentnum"; #;classnum=$row_classnum;";
+      push @links, $link . "agentnum=$row_agentnum;";
 
       @_colors = ($col_scheme->colors)[0,4,8,1,5,9,2,6,10,3,7,11];
       push @colors, shift @_colors;
diff --git a/httemplate/graph/report_cust_bill_pkg_discount.html b/httemplate/graph/report_cust_bill_pkg_discount.html
index 6de84f8..36ad782 100644
--- a/httemplate/graph/report_cust_bill_pkg_discount.html
+++ b/httemplate/graph/report_cust_bill_pkg_discount.html
@@ -1,4 +1,4 @@
-<& /elements/header.html', 'Discount Report' &>
+<& /elements/header.html, 'Discount Report' &>
 
 <FORM ACTION="cust_bill_pkg_discount.html" METHOD="GET">
 

commit c6cf1d919265a487593143131ab70a5651161ac9
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 8 14:34:08 2014 -0800

    show discounts on invoices as negative line items, #31273

diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 346e781..6ab5558 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -346,8 +346,8 @@ sub print_generic {
 
   if ( $format eq 'latex' && grep { /^%%Detail/ } @invoice_template ) {
     #change this to a die when the old code is removed
-    # it's been almost ten years, changing it to a die.
-    die "old-style invoice template $templatefile; ".
+    # it's been almost ten years, changing it to a die on the next release.
+    warn "old-style invoice template $templatefile; ".
          "patch with conf/invoice_latex.diff or use new conf/invoice_latex*\n";
          #$old_latex = 'true';
          #@invoice_template = _translate_old_latex_format(@invoice_template);
@@ -2631,14 +2631,14 @@ sub _items_cust_bill_pkg {
                                    # and location labels
 
   my @b = (); # accumulator for the line item hashes that we'll return
-  my ($s, $r, $u, $d) = ( undef, undef, undef );
+  my ($s, $r, $u, $d) = ( undef, undef, undef, undef );
             # the 'current' line item hashes for setup, recur, usage, discount
   foreach my $cust_bill_pkg ( @$cust_bill_pkgs )
   {
     # if the current line item is waiting to go out, and the one we're about
     # to start is not bundled, then push out the current one and start a new
     # one.
-    foreach ( $s, $r, ($opt{skip_usage} ? () : $u ) , $d ) {
+    foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) {
       if ( $_ && !$cust_bill_pkg->hidden ) {
         $_->{amount}      = sprintf( "%.2f", $_->{amount} );
         $_->{amount}      =~ s/^\-0\.00$/0.00/;
@@ -3040,6 +3040,15 @@ sub _items_cust_bill_pkg {
             or ( $type eq 'R' and $cust_bill_pkg->unitrecur > 0 )
         ) {
 
+          # the line item hashref for the line that will show the original
+          # price
+          # (use the recur or single line for the package, unless we're 
+          # showing a setup line for a package with no recurring fee)
+          my $active_line = $r;
+          if ( $type eq 'S' ) {
+            $active_line = $s;
+          }
+
           my @discounts = $cust_bill_pkg->cust_bill_pkg_discount;
           # special case: if there are old "discount details" on this line 
           # item, don't show discount line items
@@ -3054,23 +3063,18 @@ sub _items_cust_bill_pkg {
               $cust_bill_pkg->billpkgnum."\n"
               if $DEBUG;
             my $discount_amount = sum( map {$_->amount} @discounts );
-            my $orig_amount = $cust_bill_pkg->setup + $cust_bill_pkg->recur
-                              + $discount_amount;
             # if multiple discounts apply to the same package, how to display
             # them? ext_description lines, apparently
+            #
+            # # discount amounts are negative
             if ( $d and $cust_bill_pkg->hidden ) {
-              $d->{amount}      += $discount_amount;
-              $d->{orig_amount} += $orig_amount;
+              $d->{amount}      -= $discount_amount;
             } else {
               my @ext;
-              # make a placeholder for the original price, if necessary
-              # (if unit prices are enabled, it won't be necessary)
-              push @ext, '' if !$conf->exists('invoice-unitprice');
               $d = {
                 _is_discount    => 1,
-                description     => $self->mt('Discount included'),
-                amount          => $discount_amount,
-                orig_amount     => $orig_amount,
+                description     => $self->mt('Discount'),
+                amount          => -1 * $discount_amount,
                 ext_description => \@ext,
               };
               foreach my $cust_bill_pkg_discount (@discounts) {
@@ -3079,12 +3083,10 @@ sub _items_cust_bill_pkg {
               }
             }
 
-            # update the placeholder to show the original price in the 
-            # first ext_description line
-            if ( !$conf->exists('invoice-unitprice') ) {
-              $d->{ext_description}->[0] =
-                sprintf('Original price: %.2f', $d->{orig_amount});
-            }
+            # update the active line (before the discount) to show the 
+            # original price (whether this is a hidden line or not)
+            $active_line->{amount} += $discount_amount;
+            
           } # if there are any discounts
         } # if this is an appropriate place to show discounts
 
@@ -3109,7 +3111,7 @@ sub _items_cust_bill_pkg {
 
   }
 
-  foreach ( $s, $r, ($opt{skip_usage} ? () : $u, $d ) ) {
+  foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) {
     if ( $_  ) {
       $_->{amount}      = sprintf( "%.2f", $_->{amount} ),
         if exists($_->{amount});
diff --git a/FS/FS/discount.pm b/FS/FS/discount.pm
index e66d78c..4c9898a 100644
--- a/FS/FS/discount.pm
+++ b/FS/FS/discount.pm
@@ -176,12 +176,12 @@ sub description_short {
   my $money_char = $conf->config('money_char') || '$';  
 
   my $desc = $self->name ? $self->name.': ' : '';
-  $desc .= $money_char. sprintf('%.2f/month ', $self->amount)
+  $desc .= $money_char. sprintf('%.2f/month', $self->amount)
     if $self->amount > 0;
 
   ( my $percent = $self->percent ) =~ s/\.0+$//;
   $percent =~ s/(\.\d*[1-9])0+$/$1/;
-  $desc .= $percent. '% '
+  $desc .= $percent. '%'
     if $self->percent > 0;
 
   $desc;

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

Summary of changes:
 FS/FS/Template_Mixin.pm                            |   44 ++++++++++----------
 FS/FS/discount.pm                                  |    4 +-
 httemplate/graph/cust_bill_pkg_discount.html       |    2 +-
 .../graph/report_cust_bill_pkg_discount.html       |    2 +-
 4 files changed, 27 insertions(+), 25 deletions(-)




More information about the freeside-commits mailing list